Jina AI MCP server

Endpoint: https://mcp.jina.ai/v1 · Authentication: No auth

Jina Reader, web, arXiv, and image search, screenshot, PDF extraction, and reranking tools. Some tools work without a key; an optional Jina API key raises limits and unlocks the rest.

How do I authenticate?

Add the endpoint directly in your client. The catalog records no authentication requirement; no OAuth sign-in or API key is configured in this setup. The live server may change.

Authentication and connection guide

Connection specification

Remote endpoint
https://mcp.jina.ai/v1
Browser access
Not yet measured
Declared MCP transport
Streamable HTTP
Live-validated MCP transport
Streamable HTTP — Observed by the latest catalog validation
Declared authentication
No authentication
Detected authentication
No authentication detected or retained from publisher evidence
Alternative authentication
Bearer token
Protocol lifecycle
Stateful MCP · 2025-11-25
Required header
Authorization — Optional Jina API key: Bearer <JINA_API_KEY>
Category
Search

Product documentation · Source repository · Official listing documentation

More Search MCP servers · Browse all MCP servers · Test this endpoint in the MCP Playground

Authorization setup

No app registration needed

This catalog entry does not require authorization or provider app registration.

Connect it

Live-validated endpoint: https://mcp.jina.ai/v1 · Streamable HTTP. No authentication is required by the catalog listing.

Agent prompt for Claude Code or Codex
Add the Jina AI MCP server to my MCP client configuration and verify that it works.

What it is: Jina Reader, web, arXiv, and image search, screenshot, PDF extraction, and reranking tools. Some tools work without a key; an optional Jina API key raises limits and unlocks the rest.
Server URL: https://mcp.jina.ai/v1
Transport: Streamable HTTP (remote MCP server, no local install).
Authentication: none. The server accepts connections without credentials.
Tools (12, as last observed by mcptest): capture_screenshot_url, deduplicate_strings, extract_pdf, guess_datetime_url, primer, read_url, search_arxiv, search_images, search_jina_blog, search_ssrn, search_web, sort_by_relevance.
Reference: https://mcptest.io/servers/jina/

Steps:
1. Work out which MCP client I use (Claude Code, Codex, Cursor, VS Code or another) and add the server under the name "jina" in that client's MCP configuration, user scope unless I ask otherwise.
   Claude Code: claude mcp add --transport http --scope user 'jina' 'https://mcp.jina.ai/v1'
   Codex: codex mcp add 'jina' --url 'https://mcp.jina.ai/v1'
   Other clients: use the setup for that client on the reference page.
2. Never write a credential value into a file that could be committed; reference an environment variable or the client's secret store, and ask me for any value you need.
3. Verify: connect to the server and call tools/list. Confirm the tools above are listed, and report any sign-in step I still have to complete.
MCP client

Claude Code setup

Run in a terminal. This user-scoped entry is available across projects.

claude mcp add --transport http --scope user 'jina' 'https://mcp.jina.ai/v1'

Codex CLI setup

Run in a terminal; Codex stores the entry in ~/.codex/config.toml.

codex mcp add 'jina' --url 'https://mcp.jina.ai/v1'

Cursor setup

Add to .cursor/mcp.json for this project, or ~/.cursor/mcp.json for all projects.

{
  "mcpServers": {
    "jina": {
      "url": "https://mcp.jina.ai/v1"
    }
  }
}

VS Code setup

Add to .vscode/mcp.json, or run “MCP: Open User Configuration” for a private user-level entry.

{
  "servers": {
    "jina": {
      "type": "http",
      "url": "https://mcp.jina.ai/v1"
    }
  }
}

Claude setup

Add the endpoint above in Claude:

  • Customize > Connectors > Add custom connector
  • Team/Enterprise: Organization settings > Connectors > Add > Custom > Web

Claude Desktop setup

Add the endpoint above in Claude Desktop:

  • Remote: Customize > Connectors (same as claude.ai)
  • Local: Settings > Developer > Edit Config, or Settings > Extensions for .mcpb files
  • ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), local servers only

ChatGPT setup

Add the endpoint above in ChatGPT:

  • ChatGPT web: Plugins > Add custom MCP server, then configure authentication and accept the risk warning

Windsurf setup

Add the endpoint above in Windsurf:

  • ~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json on Windows), serverUrl or url
  • Cascade panel > ... > MCPs > Open MCP config file

Gemini CLI setup

Add the endpoint above in Gemini CLI:

  • gemini mcp add --transport http <name> <url>
  • ~/.gemini/settings.json (user) or .gemini/settings.json (project), mcpServers

MCP SDK setup

Add the endpoint above in MCP SDK:

  • Programmatic: new Client(...).connect(new StreamableHTTPClientTransport(url))

Notes for every client

  • Optional bearer token alternative: Store JINA_API_KEY in your operating system keychain, secret manager, or protected environment; never commit the value. The Authorization header syntax is Bearer <JINA_API_KEY>.

Client compatibility

ClientStatusWhy
Claude CodeSupportedClaude Code supports Streamable HTTP servers and servers without authentication or bearer-token headers.
CodexSupportedCodex supports Streamable HTTP servers and servers without authentication or bearer-token headers.
CursorSupportedCursor supports Streamable HTTP servers and servers without authentication or bearer-token headers.
VS CodeSupportedVS Code supports Streamable HTTP servers and servers without authentication or bearer-token headers.
ClaudeSupportedClaude supports Streamable HTTP servers and servers without authentication or bearer-token headers.
Claude DesktopSupportedClaude Desktop supports Streamable HTTP servers and servers without authentication or bearer-token headers.
ChatGPTPartialStateful routing needs operational care: ChatGPT can preserve MCP sessions, but the deployment must route a session consistently and retain its state.
WindsurfSupportedWindsurf supports Streamable HTTP servers and servers without authentication or bearer-token headers.
Gemini CLISupportedGemini CLI supports Streamable HTTP servers and servers without authentication or bearer-token headers.
MCP SDKSupportedMCP SDK supports Streamable HTTP servers and servers without authentication or bearer-token headers.

Computed from this server's validated transport, protocol and authentication against documented client support. Checks the catalog has not observed are not counted.

Similar servers

  • Exa — Exa web search and page-fetching tools for retrieving current web content. Works without an API key on a free tier; signing in raises limits. No authentication
  • Tavily — Tavily search, extract, crawl, and map tools for real-time web research. Clients sign in with OAuth, or append a Tavily API key as the tavilyApiKey query parameter. OAuth 2.1
  • Firecrawl — Firecrawl scrape, crawl, map, search, and structured-extraction tools that turn websites into LLM-ready Markdown or JSON. This endpoint signs in with OAuth; API-key clients use the /v2/mcp endpoint with a bearer token. OAuth 2.1
  • Grep by Vercel — Searches code across about a million public GitHub repositories by literal string or regular expression, with language, repository, and path filters. No authentication is required. No authentication
  • Parallel Search — Searches the web and fetches pages as compact markdown through Parallel's Search and Extract APIs. Works anonymously on a free tier; a Parallel API key as a bearer token raises the limits. No authentication
  • Parallel Task — Starts asynchronous Parallel deep-research and enrichment tasks, polls their status, and returns results as markdown. Supports OAuth or a Parallel API key as a bearer token. OAuth 2.1

Guides for this server

Watch this server for breaking changes

Share and embed

Maintain Jina AI? Embed this badge in your README. It follows the latest catalog validation result and links to this server profile.

mcptest.io: ready

Latest validation evidence

Validation status
Online when last tested
Validation checked at
Oct 26, 2026 at 11:06 AM
Validation detail
Negotiated stateful MCP 2025-11-25 at https://mcp.jina.ai/v1; detected transport streamable-http; authentication none

Tool inventory

What the catalog validator observed on at https://mcp.jina.ai/v1 without credentials. The live server may have changed since; connect in the Playground for the current list.

Tools provided by Jina AI 12

  • capture_screenshot_urlNo outputSchema

    Screenshot a page as base64 JPEG. Use when the page must be seen rather than read.

    Input firstScreenOnly?: boolean, return_url?: boolean, url: string
    • firstScreenOnly?: booleanoptional

      Capture only the first screen instead of the full page. Faster.

    • return_url?: booleanoptional

      Return URLs instead of base64 images.

    • url: stringrequired
  • deduplicate_stringsNo outputSchema

    Select the top-k semantically distinct strings from a list, dropping near-duplicates.

    Input k?: integer, strings: array
    • k?: integeroptional

      How many to keep. Omit to pick k automatically from diminishing returns.

    • strings: arrayrequired

      Strings to deduplicate, up to 1000.

  • extract_pdfNo outputSchema

    Extract figures, tables and equations from a PDF as images, by arXiv id or URL.

    Input id?: string, max_edge?: number, type?: string, url?: string
    • id?: stringoptional

      arXiv id, e.g. '2301.12345'. Give id or url.

    • max_edge?: numberoptional

      Longest image edge in pixels, default 1024.

    • type?: stringoptional

      Comma-separated types to keep: figure, table, equation. Default all.

    • url?: stringoptional

      PDF URL. Give id or url.

  • guess_datetime_urlNo outputSchema

    Guess when a page was published or last updated, with a confidence score. Checks HTTP headers, metadata, Schema.org, visible dates, feeds and sitemaps.

    Input url: string
    • url: stringrequired
  • primerNo outputSchema

    Current time, user location and network environment for the session. Use before answering anything time- or location-dependent.

    Input No parameters

  • read_urlNo outputSchema

    Fetch a URL (page or PDF) as clean markdown. Pass `question` to get only the passages answering it instead of the whole page - far cheaper than reading the full body into context.

    Input chunk_size?: integer, ocr?: boolean, page?: integer, question?: string, topk?: integer, url: any, withAllImages?: boolean, withAllLinks?: boolean
    • chunk_size?: integeroptional

      Passage size in words, default 100. Larger gives more surrounding context, smaller pinpoints the answer. Comparable across scripts. Needs `question`.

    • ocr?: booleanoptional

      Read the rendered page as an image with jina-ocr-v1 instead of its HTML. Use for scanned documents and PDFs whose text is not in the markup, and to keep formulas and table structure. Parses ONE page per call, page 1 unless `page` says otherwise, and costs about 40x the tokens per page, so leave off unless the HTML path has failed you.

    • page?: integeroptional

      Which page the OCR pass should parse, 1-based. Needs `ocr`; the HTML path returns the whole document at once.

    • question?: stringoptional

      Return only the passages answering this question, instead of the full body. Omit for the whole page.

    • topk?: integeroptional

      Passages to return, default 1. Needs `question`.

    • url: anyrequired

      Page or PDF URL, or up to 5 URLs to read in parallel.

    • withAllImages?: booleanoptional

      Also return every image on the page.

    • withAllLinks?: booleanoptional

      Also return every link on the page.

  • search_arxivNo outputSchema

    Search arXiv preprints (physics, maths, CS, quantitative biology and finance).

    Input num?: integer, query: any, tbs?: string
    • num?: integeroptional
    • query: anyrequired
    • tbs?: stringoptional

      Age limit: qdr:h, qdr:d, qdr:w, qdr:m, qdr:y (hour to year).

  • search_imagesNo outputSchema

    Search the web for images. Returns base64 JPEGs by default.

    Input gl?: string, hl?: string, location?: string, num?: integer, query: string, return_url?: boolean, tbs?: string
    • gl?: stringoptional

      Country code, e.g. 'de'.

    • hl?: stringoptional

      Language code, e.g. 'zh-cn'.

    • location?: stringoptional
    • num?: integeroptional
    • query: stringrequired
    • return_url?: booleanoptional

      Return URLs and metadata instead of base64 images.

    • tbs?: stringoptional

      Age limit: qdr:h, qdr:d, qdr:w, qdr:m, qdr:y (hour to year).

  • search_jina_blogNo outputSchema

    Search Jina AI's news and blog at jina.ai/news: product announcements, model releases, technical write-ups.

    Input num?: integer, query: any, tbs?: string
    • num?: integeroptional
    • query: anyrequired
    • tbs?: stringoptional

      Age limit: qdr:h, qdr:d, qdr:w, qdr:m, qdr:y (hour to year).

  • search_ssrnNo outputSchema

    Search SSRN working papers (social science, economics, law, finance, management).

    Input num?: integer, query: any, tbs?: string
    • num?: integeroptional
    • query: anyrequired
    • tbs?: stringoptional

      Age limit: qdr:h, qdr:d, qdr:w, qdr:m, qdr:y (hour to year).

  • search_webNo outputSchema

    Search the web. Returns titles, URLs and search-engine snippets.

    Input gl?: string, hl?: string, location?: string, num?: integer, query: any, tbs?: string
    • gl?: stringoptional

      Country code, e.g. 'de'.

    • hl?: stringoptional

      Language code, e.g. 'zh-cn'.

    • location?: stringoptional
    • num?: integeroptional
    • query: anyrequired
    • tbs?: stringoptional

      Age limit: qdr:h, qdr:d, qdr:w, qdr:m, qdr:y (hour to year).

  • sort_by_relevanceNo outputSchema

    Rerank documents by relevance to a query, using Jina Reranker.

    Input documents: array, query: string, top_n?: integer
    • documents: arrayrequired

      Documents to rank, up to 1024.

    • query: stringrequired
    • top_n?: integeroptional