Skip to main content
Glama
L-Chris

Parallel Search MCP

by L-Chris

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_search searches the web with selectable turbo, basic, and advanced modes.

  • parallel_fetch extracts 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

Related MCP server: searxng-mcp

Installation

Install globally from npm:

npm install --global parallel-search-mcp

Or clone the repository:

git clone https://github.com/L-Chris/parallel-search-mcp.git
cd parallel-search-mcp
npm ci

API 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_key

PARALLEL_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 list

Tools

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, or advanced.

  • max_results: maximum number of results, from 1 to 20.

  • include_domains / exclude_domains: domain filters.

  • after_date: earliest publication date in YYYY-MM-DD form.

  • 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.

  • objective and search_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, and disable_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 start

Run the test suite:

npm test

Tests 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:npm

The 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 tools
parallel_fetchParallel URL content extractionA
Read-onlyIdempotent

Extract relevant Markdown excerpts or full content from up to 20 known URLs through Parallel Extract API.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes
objectiveNoNatural-language goal used to select the most relevant page content.
session_idNo
full_contentNoReturn full Markdown content in addition to excerpts.
search_queriesNoOptional keyword queries used with objective to focus excerpts.
max_age_secondsNoFetch live content when cached content is older than this many seconds.
max_chars_totalNoTotal excerpt/output character limit; defaults to 25,000.
timeout_secondsNo
max_chars_per_resultNoMaximum excerpt characters per URL.
disable_cache_fallbackNo
full_content_max_chars_per_resultNoEnable full content and cap its characters per URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
usageYes
errorsYes
resultsYes
warningsYes
extract_idYes
session_idYes

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.0
    • First observedparallel_fetch
    • First observedparallel_search

TDQS

A3.6/5.0
Disambiguation5/5

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.

Naming Consistency5/5

Both tool names follow a consistent parallel_<verb> pattern (search, fetch). The naming is predictable and uniform.

Tool Count3/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    101
    23
    MIT
  • F
    license
    A
    quality
    A
    maintenance
    An 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.
    7
    2
    -
  • A
    license
    A
    quality
    B
    maintenance
    An 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.
    5
    15
    1
    MIT

Latest Blog Posts

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