Parallel Search MCP server

Endpoint: https://search.parallel.ai/mcp · Authentication: No auth

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.

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://search.parallel.ai/mcp
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
Alternative endpoint
https://search.parallel.ai/mcp-oauth — Use to authenticate with a Parallel account through OAuth (OAuth 2.1)
Protocol lifecycle
Stateless MCP · 2026-07-28
Required header
Authorization — Optional Parallel API key for higher limits: Bearer <PARALLEL_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://search.parallel.ai/mcp · Streamable HTTP. No authentication is required by the catalog listing.

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

What it is: 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.
Server URL: https://search.parallel.ai/mcp
Transport: Streamable HTTP (remote MCP server, no local install).
Authentication: none. The server accepts connections without credentials.
Tools (2, as last observed by mcptest): web_fetch, web_search.
Reference: https://mcptest.io/servers/parallel-search/

Steps:
1. Work out which MCP client I use (Claude Code, Codex, Cursor, VS Code or another) and add the server under the name "parallel-search" in that client's MCP configuration, user scope unless I ask otherwise.
   Claude Code: claude mcp add --transport http --scope user 'parallel-search' 'https://search.parallel.ai/mcp'
   Codex: codex mcp add 'parallel-search' --url 'https://search.parallel.ai/mcp'
   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 'parallel-search' 'https://search.parallel.ai/mcp'

Codex CLI setup

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

codex mcp add 'parallel-search' --url 'https://search.parallel.ai/mcp'

Cursor setup

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

{
  "mcpServers": {
    "parallel-search": {
      "url": "https://search.parallel.ai/mcp"
    }
  }
}

VS Code setup

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

{
  "servers": {
    "parallel-search": {
      "type": "http",
      "url": "https://search.parallel.ai/mcp"
    }
  }
}

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 PARALLEL_API_KEY in your operating system keychain, secret manager, or protected environment; never commit the value. The Authorization header syntax is Bearer <PARALLEL_API_KEY>.
  • Alternative endpoint: https://search.parallel.ai/mcp-oauth — Use to authenticate with a Parallel account through OAuth.

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.
ChatGPTSupportedChatGPT supports Streamable HTTP servers and servers without authentication or bearer-token headers.
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
  • Jina AI — 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. 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 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 Parallel Search? 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 stateless MCP 2026-07-28 at https://search.parallel.ai/mcp; detected transport streamable-http; authentication none

Tool inventory

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

Tools provided by Parallel Search 2

Some details were sanitized for public display.

  • web_fetchoutputSchema declared

    Purpose: Fetch and extract relevant content from specific web URLs. Use only when web_search excerpts are insufficient for the task at hand. Ideal Use Cases: - The user asked about a specific URL or page - You need exact wording or quotes that excerpts may have truncated - You need full-page analysis (long article, document, or page structure) - web_search excerpts are conflicting or clearly insufficient to answer For multiple independent extraction objectives, make separate web_fetch calls concurrently. Put related URLs that share one objective in a single call.

    Input allow_live_fetch?: boolean, full_content?: boolean, model_name?: string, objective?: any, search_queries?: any, session_id?: string, urls: array
    • allow_live_fetch?: booleanoptional

      Whether live fetching is allowed. Leave true for the freshest available content. Set false to use cached content only, which makes web_fetch much faster by avoiding the source website, but may return older content.

    • full_content?: booleanoptional

      Prefer leaving this off. The default excerpt mode returns LLM-optimized snippets focused on your objective — they are much smaller, cheaper, and usually all you need. Only set to true when you explicitly need the entire page as markdown (e.g. reading a long article in full, or running a document through a downstream summarizer). Warning: enabling full content can return a large amount of content — often tens of thousands of tokens for a long article. This may exceed your MCP client's tool-output limit and will substantially increase response size and latency.

    • model_name?: stringoptional

      The identifier of the LLM model making this tool call (e.g. 'claude-opus-4.7', 'gpt-5.5', 'gemini-2.5-pro'). Before the first call, verify the exact active model slug from trusted runtime/session metadata or active client configuration. Pass the full slug verbatim; never shorten or substitute a model-family alias like 'gpt-5'. Used for product analytics only; does not affect search behavior.

    • objective?: anyoptional

      Natural-language description of what information you're looking for from the URLs. Limit to 200 characters.

    • search_queries?: anyoptional

      Optional keyword search queries (3-6 words each) used together with objective to focus excerpts on the most relevant content. Pass the queries from the prior web_search call that surfaced these URLs, if applicable.

    • session_id?: stringoptional

      Stable identifier for the current conversation. Generate a random value (UUID or 32+ character hex string) at the start of your session and reuse the exact same value on every web_search / web_fetch call. Do NOT change it between turns. Used for free-tier rate limiting and correlating your tool calls in our logs; ignored on paid-tier keys.

    • urls: arrayrequired

      List of URLs to extract content from. Must be valid HTTP/HTTPS URLs. Up to 20 URLs per request.

  • web_searchoutputSchema declared

    Purpose: Perform web searches and return LLM-friendly results, including excerpts that are usually sufficient to answer directly without a follow-up fetch. Ideal Use Cases: - Answering questions that require fresh or current information - Research, comparison, documentation, and troubleshooting questions - Broad tasks where multiple `search_queries` can be issued in a single call For multiple independent objectives, make one web_search call per objective concurrently. Put related query variations for the same objective in a single call's search_queries list.

    Input model_name?: string, objective: string, search_queries: array, session_id?: string
    • model_name?: stringoptional

      The identifier of the LLM model making this tool call (e.g. 'claude-opus-4.7', 'gpt-5.5', 'gemini-2.5-pro'). Before the first call, verify the exact active model slug from trusted runtime/session metadata or active client configuration. Pass the full slug verbatim; never shorten or substitute a model-family alias like 'gpt-5'. Used for product analytics only; does not affect search behavior.

    • objective: stringrequired

      Natural-language description of what the web search is trying to find. Try to make the search objective atomic, looking for a specific piece of information. May include guidance about preferred sources or freshness.

    • search_queries: arrayrequired

      Concise keyword search queries, 3-6 words each. They may use site: with a bare domain (such as site:example.com), but never a URL path after the domain and never quoted phrases. At least one query is required; provide 2-3 for best results. For broad tasks, you can include multiple related queries in a single call instead of chaining web_search calls. The queries should be related to the objective.

    • session_id?: stringoptional

      Stable identifier for the current conversation. Generate a random value (UUID or 32+ character hex string) at the start of your session and reuse the exact same value on every web_search / web_fetch call. Do NOT change it between turns. Used for free-tier rate limiting and correlating your tool calls in our logs; ignored on paid-tier keys.