JinaAI
About
Light JINA AI MCP Browse JinaAI MCP Server for Claude, Cursor, VS Code, and other AI agents.
Details
- Author
- ciborro
- Categories
- Search, Knowledge Base, Other
Jump to
Setup
Install JinaAI in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/ciborro/jina-light-mcp
Follow the installation instructions in the repository README, then restart your MCP client.
Model Context Protocol (MCP) server for Jina.AI Reader and Search APIs.
A lightweight, efficient MCP server for Jina.AI APIs
- ✅ 9 fully tested MCP tools
- ✅ Complete Reader and Search API support
- ✅ Advanced filtering and extraction options
- ✅ Parallel operations with concurrent request handling
- ✅ Comprehensive error handling and logging
- ✅ 50% token reduction vs. alternative implementations
- ✅ Production-ready with full documentation
- Quick Start- Get up and running in 5 minutes
- Error Handling & Troubleshooting- Common issues and solutions
This MCP server provides 9 tools to interact with Jina.AI APIs:
- primer- Get server status and system information
- read_url- Extract content from a URL
- capture_screenshot_url- Capture a screenshot of a webpage
- guess_datetime_url- Detect publication date from a URL
- parallel_read_url- Read multiple URLs concurrently
- search_web- Perform web search with advanced filtering
- search_arxiv- Search academic papers on ArXiv
- search_images- Search for images
- parallel_search_web- Perform multiple web searches concurrently
# Clone the repository git clone https://github.com/ciborro/jina-light-mcp.git cd jina-mcp-server # Install dependencies npm install # Build TypeScript npm run build # Install globally (optional) npm install -g .
# Check if installed globally which jina-mcp-server # Start the server npm start
[INFO] Jina MCP Server starting... [INFO] Registered 9 tools [OK] Jina MCP Server running on stdio transport
For detailed setup instructions, seeQuick Start Guide.
Create a.envfile in the project root with your Jina API key:
echo "JINA_API_KEY=your_api_key_here" > .env
You can get a free API key fromhttps://jina.ai/api
The server will start on stdio transport. In another terminal, usemcp-clior MCP Inspector to test:
npx @modelcontextprotocol/inspector npx npm start
This opens a web UI athttp://localhost:5173where you can test each tool.
Add to~/Library/Application\ Support/Claude/claude_desktop_config.json:
{ "mcpServers": { "jina-mcp-local": { "command": "npm", "args": ["start"], "cwd": "/path/to/jina-mcp-server", "env": { "JINA_API_KEY": "your_jina_api_key_here" } } } }
Replace/path/to/jina-mcp-serverwith your actual installation directory (e.g.,/Users/yourname/projects/jina-mcp-serveror/home/yourname/jina-mcp-server).
Then restart Claude Desktop. The 9 tools will appear in Claude.
Server Status: ✅ Online Version: 1.0.0 Current Time: 11/9/2025, 5:45 PM Timezone: America/New_York Jina MCP Server is ready to serve requests.
Read and extract text content from a URL with advanced extraction options.
- url(string, required): The URL to read
- timeout(number, optional): Request timeout in milliseconds (default: 30000)
- locale(string, optional): Browser locale (e.g., "en-US", "pl-PL")
- instruction(string, optional): Custom instruction for content extraction
- targetSelector(string, optional): CSS selector for specific element to extract
- removeSelector(string, optional): CSS selectors to remove (comma-separated)
- waitForSelector(string, optional): CSS selector to wait for before extraction
- retainImages(string, optional): How to handle images - "all", "none", or "markdown" (default: "markdown")
- retainLinks(string, optional): How to handle links - "all", "none", or "markdown" (default: "markdown")
- withImagesSummary(boolean, optional): Include images summary
- withLinksSummary(boolean, optional): Include links summary
- proxy(string, optional): Proxy server URL
- userAgent(string, optional): Custom User-Agent string
- jsonSchema(string, optional): JSON schema for structured output
{ "url": "https://example.com", "timeout": 30000, "locale": "en-US", "retainImages": "markdown", "retainLinks": "markdown" }
- url(string, required): The URL to screenshot
- fullPage(boolean, optional): Capture full page (true) or first screen (false, default)
{ "url": "https://example.com", "fullPage": true }
- url(string, required): The URL to analyze
- publication_date: Detected date (ISO 8601)
- accuracy: Confidence level (high/medium/unknown)
Read multiple URLs concurrently with advanced extraction options.
- urls(array of strings, required): URLs to read
- maxParallel(number, optional): Max concurrent requests (1-10, default: 5)
- timeout(number, optional): Request timeout in milliseconds (default: 30000)
- locale(string, optional): Browser locale (e.g., "en-US", "pl-PL")
- instruction(string, optional): Custom instruction for content extraction
- targetSelector(string, optional): CSS selector for specific element to extract
- retainImages(string, optional): How to handle images - "all", "none", or "markdown"
- retainLinks(string, optional): How to handle links - "all", "none", or "markdown"
{ "urls": ["https://example1.com", "https://example2.com"], "maxParallel": 3, "retainImages": "markdown", "retainLinks": "markdown" }
Perform a web search with advanced filtering and localization options.
- query(string, required): Search query (e.g., "artificial intelligence")
- count(number, optional): Number of results to return (default: 10, max: 20)
- location(string, optional): Country code for geolocation (e.g., "US", "PL", "GB")
- language(string, optional): Language code for results (e.g., "en", "pl", "de")
- site(string, optional): Filter results to specific domain (e.g., "github.com")
- page(number, optional): Page number for pagination (default: 1)
- filetype(string, optional): Filter by file type (e.g., "pdf", "doc", "xlsx")
- intitle(string, optional): Search only in page titles
- timeout(number, optional): Request timeout in milliseconds (default: 30000)
- provider(string, optional): Search provider ("google", "bing", etc.)
{ "query": "machine learning", "count": 10, "language": "en", "location": "US" }
{ "query": "neural networks", "site": "github.com", "count": 5 }
{ "query": "research paper", "filetype": "pdf", "language": "en", "count": 5 }
- query(string, required): Search query
- maxResults(number, optional): Max papers to return (default: 10)
- query(string, required): Image search query
- count(number, optional): Number of images (default: 20)
Perform multiple web searches concurrently with advanced filtering options.
- queries(array of strings, required): Queries to search
- maxParallel(number, optional): Max concurrent searches (1-10, default: 5)
- count(number, optional): Number of results per query (default: 10)
- location(string, optional): Country code for geolocation (e.g., "US", "PL")
- language(string, optional): Language code for results (e.g., "en", "pl")
- site(string, optional): Filter results to specific domain
- page(number, optional): Page number for pagination
- filetype(string, optional): Filter by file type (e.g., "pdf")
- intitle(string, optional): Search only in page titles
- timeout(number, optional): Request timeout in milliseconds
- provider(string, optional): Search provider ("google", "bing", etc.)
{ "queries": ["Jina AI", "Claude AI", "Anthropic"], "maxParallel": 3, "language": "en", "count": 5 }
Use these operators in thequeryparameter ofsearch_webandparallel_search_webto filter results:
{ "query": "site:github.com python projects", "count": 10 }
{ "query": "deep learning filetype:pdf", "language": "en", "count": 5 }
{ "query": "site:github.com intitle:tutorial python", "location": "US", "language": "en", "count": 10 }
If API key is missing or invalid, you'll see:
🔑 Authentication Error: Invalid or missing API key. Make sure your Jina API key is configured in .env
If rate limit is exceeded (500 RPM for API key holders):
⏱️ Rate Limit: Too many requests. Please wait and retry.
Connection and timeout errors are caught and reported with details.
mcp-server/ ├── src/ │ ├── index.ts # Main MCP server + tool handlers │ ├── utils/ │ │ ├── api-client.ts # Jina API client with error handling │ │ ├── reader.ts # Reader API functions (copied from test-jina-api) │ │ ├── search.ts # Search API functions (copied from test-jina-api) │ │ ├── error-handler.ts # MCP error formatting │ │ └── yaml-formatter.ts # Response formatting utility │ └── types/ │ └── jina.ts # TypeScript type definitions ├── dist/ # Compiled JavaScript ├── package.json ├── tsconfig.json ├── .gitignore # Git ignore patterns └── .env.example # Example environment file (copy to .env to use)
curl https://r.jina.ai/https://example.com
curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://s.jina.ai/search?q=test"
- ✅ Content extraction from any URL
- ✅ CSS selectors for targeted extraction
- ✅ Multiple output formats (markdown, html, text)
- ✅ Image and link handling control
- ✅ Custom User-Agent and proxy support
- ✅ Parallel URL reading (up to 10 concurrent)
- ✅ Web search with result count up to 20
- ✅ Domain filtering (site: operator)
- ✅ Title filtering (intitle: operator)
- ✅ File type filtering (filetype: operator)
- ✅ Geographic localization (gl parameter)
- ✅ Language filtering (hl parameter)
- ✅ Pagination support (page parameter)
- ✅ Parallel searching (up to 10 concurrent)
- ✅ Multiple search providers (Google, Bing, etc.)
- Reader API: Free tier (20 RPM without key, 500 RPM with key)
- Search API: Requires valid API key (500 RPM limit)
- Search results: Max 20 results per query
- Parallel operations: Max 10 concurrent requests per batch
- Image data: Returned as base64 string
- Timeouts: Max 180 seconds per request
- Reader API: 20 RPM without key, 500 RPM with key
- Search API: 500 RPM with key
Implement backoff and retry logic if limits are hit.
Make sure you've built the project:
rm -rf node_modules package-lock.json npm install
Check.envfile exists and has validJINA_API_KEY:
- Restart Claude Desktop
- Check the config JSON syntax
- Verifycwdpath is correct
- ✅ 9 fully implemented MCP tools
- ✅ Complete Reader API with advanced content extraction
- ✅ Complete Search API with filtering and pagination
- ✅ Advanced filtering parameters (site, language, filetype, intitle, page, provider)
- ✅ Advanced extraction parameters (locale, instruction, CSS selectors, image/link control)
- ✅ Parallel operations for reading and searching (up to 10 concurrent)
- ✅ Comprehensive error handling and logging
- ✅ Full documentation with examples and troubleshooting
- ✅ Production-ready code
- 9 MCP Tools- All fully implemented and tested
- Reader API- Content extraction with advanced CSS selectors, image/link control, locale support
- Search API- Web, image, and ArXiv search with filtering and pagination
- Parallel Operations- Concurrent URL reading and searching (up to 10 concurrent)
- Error Handling- Comprehensive error messages for API, network, and validation errors
- Rate Limit Support- Handles 500 RPM (with API key)
- Environment Configuration- Easy setup with environment variables
- Full Documentation- Quickstart guide, configuration examples, and troubleshooting
- 50% Token Reduction- This implementation uses significantly fewer tokens than alternative implementations
- Efficient API Usage- Optimized request handling and response processing
- Fast Response Times- Minimal overhead in tool execution
For issues with Jina.AI APIs, see:https://docs.jina.aiFor MCP specification, see:https://modelcontextprotocol.io
Search global news using natural language. Webz.io News Search API returns the most relevant articles and content, with filters for source, country, language, date, sentiment, and category.
Fetch, convert, and search AWS documentation pages, with recommendations for related content.
Search campgrounds around the world on campertunity, check availability, and provide booking links.
The Ferryhopper MCP Server exposes ferry routes, schedules and booking redirects so an AI assistant can discover connections across Europe and the Mediterranean and send users to Ferryhopper to complete bookings.
All-in-One SEO & Web Intelligence Toolkit API from FetchSERP.
MCP server that provides read-only access to HyperKitty, the web-based email archive component of Mailman 3.
At Sunrise Apps, we believe AI agents should be limitless, especially when it comes to visual data. We created ImageSorcery to bridge the critical gap in AI's ability to interact with and manipulate images directly, all while upholding the highest standards of privacy and security.
Just Domain is the domain registrar for businesses built with AI. Its remote MCP server checks availability and returns first-year and renewal pricing, plus a link to register on justdomain.ai, with DNS and WHOIS privacy in the same place. No account, no API key, read only. Endpoint: https://mcp.justdomain.ai/
Research tools, including a Sqlite-backed document stash
Semantic search over 9 free-license stock photo sources. Hosted remote server with OAuth — no API key to paste.
SerpApi MCP Server for Google and other search engine results
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




