Parallel Search MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Parallel Search MCPsearch the web for MCP protocol updates"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Parallel Search MCP
An MCP server that brings Parallel web search and URL extraction to Codex and other Model Context Protocol clients.
It exposes two read-only tools:
parallel_searchsearches the web with selectableturbo,basic, andadvancedmodes.parallel_fetchextracts focused excerpts or full Markdown content from up to 20 known URLs.
Both tools return MCP structured content alongside a readable text response, default to a 25,000-character output limit, and retry transient network or HTTP failures up to three attempts.
Requirements
Node.js 18 or newer
A Parallel API key from platform.parallel.ai
An MCP-compatible client
Related MCP server: searxng-mcp
Installation
Install globally from npm:
npm install --global parallel-search-mcpOr clone the repository:
git clone https://github.com/L-Chris/parallel-search-mcp.git
cd parallel-search-mcp
npm ciAPI key
Set the key in the environment that launches your MCP client:
export PARALLEL_API_KEY="your-api-key"Alternatively, save the key at ~/.config/parallel/api_key and restrict access to the file:
mkdir -p ~/.config/parallel
chmod 700 ~/.config/parallel
printf '%s' 'your-api-key' > ~/.config/parallel/api_key
chmod 600 ~/.config/parallel/api_keyPARALLEL_API_KEY takes precedence over the key file. Set PARALLEL_API_KEY_FILE to use a different key-file path.
Never commit an API key to this repository or place one directly in an MCP configuration file.
Codex configuration
Add the following to ~/.codex/config.toml, replacing the path with the absolute path to your clone:
[mcp_servers.parallel-search-mcp]
command = "node"
args = ["/absolute/path/to/parallel-search-mcp/server.mjs"]
env_vars = ["PARALLEL_API_KEY"]For a global npm installation, the executable can be configured directly:
[mcp_servers.parallel-search-mcp]
command = "parallel-search-mcp"
env_vars = ["PARALLEL_API_KEY"]Restart Codex after changing the configuration. You can verify registration with:
codex mcp listTools
parallel_search
Searches the web through the Parallel Search API.
Important inputs:
search_queries: one to five concise search queries; required.objective: a self-contained description of what the search should answer.mode:turbo,basic, oradvanced.max_results: maximum number of results, from 1 to 20.include_domains/exclude_domains: domain filters.after_date: earliest publication date inYYYY-MM-DDform.max_chars_total: total output character limit.
When mode is omitted, Chinese queries use basic; other queries, including Japanese text containing kana, use turbo. Choose advanced explicitly when result quality matters more than latency.
Example input:
{
"objective": "Find recent official Model Context Protocol announcements",
"search_queries": ["official MCP announcements"],
"mode": "advanced",
"include_domains": ["modelcontextprotocol.io"],
"max_results": 5
}parallel_fetch
Extracts relevant content from known URLs through the Parallel Extract API.
Important inputs:
urls: one to twenty URLs; required.objectiveandsearch_queries: focus the extracted excerpts.max_chars_per_result: per-page excerpt limit.full_content: include full Markdown content.full_content_max_chars_per_result: enable and cap full content per page.max_age_seconds,timeout_seconds, anddisable_cache_fallback: fetching controls.
Example input:
{
"urls": ["https://modelcontextprotocol.io/"],
"objective": "Extract the project overview and key concepts",
"max_chars_total": 10000
}Development
Start the stdio MCP server:
npm startRun the test suite:
npm testTests use mocked HTTP responses and do not require a Parallel API key.
Publishing
Copy .env.example to .env, set NPM_TOKEN, and run:
npm run publish:npmThe publishing script loads .env, writes the npm token to a temporary user configuration with restricted permissions, publishes publicly to the official npm registry, and removes the temporary configuration afterward. .env is excluded from both Git and the npm package.
Notes
This is an independent integration and is not an official Parallel product. Use of the upstream APIs is subject to Parallel's terms and pricing.
Available Tools
2 toolsparallel_fetchParallel URL content extractionARead-onlyIdempotent
Extract relevant Markdown excerpts or full content from up to 20 known URLs through Parallel Extract API.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | ||
| objective | No | Natural-language goal used to select the most relevant page content. | |
| session_id | No | ||
| full_content | No | Return full Markdown content in addition to excerpts. | |
| search_queries | No | Optional keyword queries used with objective to focus excerpts. | |
| max_age_seconds | No | Fetch live content when cached content is older than this many seconds. | |
| max_chars_total | No | Total excerpt/output character limit; defaults to 25,000. | |
| timeout_seconds | No | ||
| max_chars_per_result | No | Maximum excerpt characters per URL. | |
| disable_cache_fallback | No | ||
| full_content_max_chars_per_result | No | Enable full content and cap its characters per URL. |
Output Schema
| Name | Required | Description |
|---|---|---|
| usage | Yes | |
| errors | Yes | |
| results | Yes | |
| warnings | Yes | |
| extract_id | Yes | |
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, which cover the safety profile. The description adds context about the output format (Markdown excerpts/full content) and the underlying API, but does not disclose caching behavior, rate limits, or other operational details that could matter for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb and core purpose. Every word earns its place; there is no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 11 parameters and an output schema, this is a moderately complex tool. The description covers the core use case but omits important behaviors such as caching, objective-based relevance filtering, and output limits. Annotations and output schema mitigate some gaps, but the description alone is thin for such a parameter-rich tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 64%, so the schema handles most parameter explanations. The description mentions 'Markdown excerpts or full content' which loosely maps to full_content and related limits, but it does not elaborate on key parameters like objective, session_id, timeout_seconds, or disable_cache_fallback, nor compensate for the undocumented params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Extract' with a clear resource ('Markdown excerpts or full content') and scope ('from up to 20 known URLs'). The phrase 'known URLs' clearly contrasts with the sibling tool parallel_search, which presumably searches for URLs rather than fetching from provided ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for fetching content from URLs the user already knows, giving contextual use case. It does not explicitly mention alternatives or when not to use it, but the 'known URLs' phrasing provides enough guidance to differentiate from search-based tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parallel_searchParallel Search with selectable modeBRead-onlyIdempotent
Search the web through Parallel Search API. Defaults to turbo; select basic or advanced when needed.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Explicit mode override. When omitted, Chinese uses basic and other languages use turbo. | |
| objective | No | Self-contained natural-language goal that explains what the search should answer. | |
| after_date | No | Only include content published on or after this YYYY-MM-DD date. | |
| session_id | No | ||
| max_results | No | ||
| search_queries | Yes | Concise keyword queries; 2-3 queries of 3-6 words usually work best. | |
| exclude_domains | No | ||
| include_domains | No | ||
| max_chars_total | No | Total excerpt/output character limit; defaults to 25,000. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | |
| usage | Yes | |
| results | Yes | |
| warnings | Yes | |
| search_id | Yes | |
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds mode selection context, but it also makes a misleading claim: 'Defaults to turbo' whereas the schema explicitly states that Chinese uses basic when mode is omitted. This inaccuracy reduces transparency and could mislead an agent, plus no other behavioral traits (rate limits, pagination) are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and extremely concise, front-loading the purpose and then providing mode guidance. Every word earns its place with no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of a rich input schema, annotations, and an output schema, the description is adequate but not complete. It clearly states the tool is for web search, but it fails to clarify the language-dependent default behavior (contradicting the schema), and does not mention how this tool relates to parallel_fetch. The gaps are notable but not severe because the schema covers most operational details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 56%, but the tool description adds minimal value beyond the schema. It mentions mode names ('turbo', 'basic', 'advanced') and a default, but these are already documented in the mode parameter. Undocumented parameters like session_id, max_results, exclude_domains, and include_domains receive no clarification from the description, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: 'Search the web through Parallel Search API.' This is a specific verb+resource pairing that makes the primary function obvious. It does not explicitly distinguish itself from the sibling tool parallel_fetch, but the word 'Search' versus 'fetch' implies a distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context by explaining the default mode and suggesting to 'select basic or advanced when needed.' However, it gives no explicit guidance on when to use this tool versus the sibling parallel_fetch, nor does it mention any exclusions or prerequisites. The usage context is implied but not fully developed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v1.0.0- First observed
parallel_fetch - First observed
parallel_search
TDQS
parallel_search and parallel_fetch have clearly distinct purposes: one performs web searches, the other extracts content from known URLs. There is no overlap or ambiguity between them.
Both tool names follow a consistent parallel_<verb> pattern (search, fetch). The naming is predictable and uniform.
With only 2 tools, the server feels minimal, but the tools cover the two core actions for a search/retrieval service. The count is on the low end but not unreasonable.
The server provides search and fetch capabilities, covering the primary workflow of searching the web and extracting content from specific URLs. Minor gaps like pagination or result filtering are not explicit, but the core surface is complete for a focused search tool.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Fast, intelligent web search and web crawling. New mcp tool: Exa-code is a context tool for coding
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
MCP server for Google search results via SERP API
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA production-ready Model Context Protocol server that brings AI-powered web search directly into development environments, providing intelligent search results with proper citations in Claude Desktop, Cursor, or any MCP-compatible client.10123MIT
- FlicenseAqualityAmaintenanceAn MCP server for SearXNG that provides web search capabilities with concise model-visible output while preserving full result payloads in metadata. It supports search, parallel fetching, URL extraction, and research workflows through both local stdio and streamable HTTP transports.72-
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that exposes powerful web search and scraping tools to AI agents and MCP-compatible clients.Apache 2.0
- AlicenseAqualityBmaintenanceAn MCP server that fetches web pages and extracts clean, AI-usable context from them, enabling tools for link discovery, content search, and integrated fetch-and-search operations.5151MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/L-Chris/parallel-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server