For a coding agent the web is usually a two-step affair — find a few pages, read the one that answers the question — and that is exactly what this exposes. The paginated reader is the practical difference from a plain fetch: an oversized documentation page arrives in slices with a cache behind it, instead of arriving all at once or not at all.
A deliberately small server on Jina AI Reader and Search: one tool finds a shortlist of pages, the other reads one page at a time.
- Web search returning a lightweight shortlist, with partial content per result so you can choose before you read
- Page reading that extracts the content of a URL, paginated by token count so a huge page arrives in manageable pieces
- An LRU cache holding 50 URLs by default, and roughly 15,000 tokens per reader page — both configurable
- A two-tool surface by design: no embeddings, reranking, image search or classification competing for the model's attention
- Either transport: stdio by default, or HTTP bound to localhost, with a bearer token and an origin allowlist for remote use
Node.js 20 or later. Runs from npm as jina-mcp-tools. A Jina AI API key in JINA_API_KEY enables search; leave it out and you get reader-only mode, subject to Jina's unauthenticated rate limits. For HTTP mode beyond localhost, set JINA_MCP_HTTP_AUTH_TOKEN and put it behind TLS. This is a community project, not Jina's own server.
One command plus a key — npx -y jina-mcp-tools, then supply credentials
