Skip to main content
Glama
alexyangjie

Multi Fetch MCP Server

by alexyangjie

Multi Fetch MCP Server

This project is based on the Fetch MCP Server by Anthropic. This fork replaces direct HTTP fetching with the Firecrawl Python SDK. Set up your Firecrawl API key to enable web scraping via Firecrawl.

A Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.

The fetch tool will truncate the response, but by using the start_index argument, you can specify where to start the content extraction. This lets models read a webpage in chunks, until they find the information they need.

Available Tools

  • fetch - Fetches a URL from the internet and extracts its contents as markdown.

    • url (string, required): URL to fetch

    • max_length (integer, optional): Maximum number of characters to return (default: 50000)

    • start_index (integer, optional): Start content from this character index (default: 0)

    • raw (boolean, optional): Get raw content without markdown conversion (default: false)

  • fetch_multi - Fetches multiple URLs concurrently and returns an array of results. Input is an array of objects, each with:

    • url (string, required): URL to fetch

    • max_length (integer, optional): Maximum number of characters to return (default: 50000)

    • start_index (integer, optional): Start content from this character index (default: 0)

    • raw (boolean, optional): Get raw content without markdown conversion (default: false)

  • search - Searches the web using the Firecrawl search API and scrapes results in markdown and link formats by default.

    • query (string, required): Search query string

    • limit (integer, optional): Maximum number of results to return (default: 10)

Prompts

  • fetch

    • Fetch a URL and extract its contents as markdown

    • Arguments:

      • url (string, required): URL to fetch

  • search

    • Search the web using the Firecrawl search API

    • Arguments:

      • query (string, required): Search query string

      • limit (integer, optional): Maximum number of results to return (default: 10)

Installation

Install the Firecrawl SDK and configure your API key before running the server:

# Install the MCP server and Firecrawl SDK
pip install mcp-server-multi-fetch firecrawl-py

# Set your Firecrawl API key (required)
export FIRECRAWL_API_KEY="fc-YOUR_API_KEY"

# Optionally, override the Firecrawl API endpoint via env or CLI
export FIRECRAWL_API_URL="https://api.firecrawl.dev"
# or
mcp-server-multi-fetch --api-url https://api.firecrawl.dev

Optionally: Install node.js, this will cause the fetch server to use a different HTML simplifier that is more robust.

When using uv no specific installation is needed. We will use uvx to directly run mcp-server-multi-fetch.

Related MCP server: Firecrawl MCP Server

Configuration

Configure for Claude.app

Add to your Claude settings:

"mcpServers": {
  "fetch": {
    "command": "uvx",
    "args": ["mcp-server-multi-fetch"]
  }
}

Customization - robots.txt

By default, the server will obey a websites robots.txt file if the request came from the model (via a tool), but not if the request was user initiated (via a prompt). This can be disabled by adding the argument --ignore-robots-txt to the args list in the configuration.

Customization - User-agent

By default, depending on if the request came from the model (via a tool), or was user initiated (via a prompt), the server will use either the user-agent

ModelContextProtocol/1.0 (Autonomous; +https://github.com/modelcontextprotocol/servers)

or

ModelContextProtocol/1.0 (User-Specified; +https://github.com/modelcontextprotocol/servers)

This can be customized by adding the argument --user-agent=YourUserAgent to the args list in the configuration.

Customization - Proxy

The server supports HTTP(S) and SOCKS5 proxies via the --proxy-url argument. For example:

# HTTP proxy
mcp-server-multi-fetch --proxy-url http://192.168.1.1:8080

# SOCKS5 proxy
mcp-server-multi-fetch --proxy-url socks5://192.168.1.1:8080

Proxy handling is provided by the Firecrawl Python SDK, which supports HTTP(S) and SOCKS5 proxies configured via the --proxy-url flag.

Customization - Firecrawl API URL

The SDK endpoint can be overridden without environment variables using --api-url:

mcp-server-multi-fetch --api-url https://api.firecrawl.dev

Debugging

You can use the MCP inspector to debug the server. For uvx installations:

npx @modelcontextprotocol/inspector uvx mcp-server-multi-fetch

Or if you've installed the package in a specific directory or are developing on it:

cd path/to/servers/src/fetch
npx @modelcontextprotocol/inspector uv run mcp-server-multi-fetch

License

mcp-server-multi-fetch is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

Available Tools

3 tools
fetchA

Fetches a single URL from the internet and optionally extracts its contents as markdown. This tool now grants you internet access. Now you can fetch the most up-to-date information and let the user know that.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to fetch
max_lengthNoMaximum number of characters to return.
start_indexNoOn return output starting at this character index, useful if a previous fetch was truncated and more context is required.
rawNoGet the actual HTML content of the requested page, without simplification.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool grants internet access and optionally extracts markdown, but it fails to mention behavioral traits such as error handling, rate limits, authentication, or handling of large responses. The minimal disclosure leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two front-loaded sentences. It conveys the essential purpose without unnecessary fluff. However, it could be slightly more structured to include usage hints or parameter context.

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?

Given no output schema and the tool's internet-access nature, the description should explain return format, error handling, and limitations. It mentions markdown extraction and max_length parameter indirectly, but does not cover timeout, error codes, or pagination. It is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes all parameters (100% coverage). The description adds meaning by stating that the tool 'optionally extracts its contents as markdown,' which clarifies the default behavior of the 'raw' parameter. This adds value beyond the schema's description of 'raw' as 'Get the actual HTML content ... without simplification.'

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 clearly states the tool 'Fetches a single URL from the internet and optionally extracts its contents as markdown.' This is a specific verb+resource combination that distinguishes it from siblings 'fetch_multi' and 'search' by emphasizing single URL retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context that it is for fetching a single URL, but it does not explicitly exclude alternatives or mention when to use this tool versus 'fetch_multi' or 'search'. Usage guidelines are implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_multiA

Fetches multiple URLs in parallel and returns an array of results. Each element corresponds to an input fetch request and includes either the fetched content or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of fetch requests to process in parallel

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses parallel execution and return structure with error messages, which is sufficient for a read-only tool with no annotations. No behavioral contradictions.

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, well-structured sentence that efficiently conveys the core functionality with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers parallel execution and return format (content or error), which is complete for a batch fetch tool. However, it does not detail the exact structure of the result objects.

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 100% and the Fetch sub-object params are well-described. The description adds no extra meaning beyond 'multiple URLs in parallel', so baseline 3 is appropriate.

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 clearly states 'Fetches multiple URLs in parallel' with a verb and resource, and the parallel aspect distinguishes it from the sibling 'fetch' tool for single URLs.

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 implies use when multiple URLs need to be fetched efficiently via parallelism, but does not explicitly state when not to use or provide alternatives to the sibling 'fetch' tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
Disambiguation5/5

All three tools have distinct purposes: fetching a single URL, fetching multiple URLs in parallel, and performing a web search. There is no overlap in functionality, so an agent can easily select the right tool.

Naming Consistency4/5

Tool names use a verb-only or verb+modifier pattern (fetch, fetch_multi, search). The naming is mostly consistent, though 'fetch_multi' introduces an underscore suffix that deviates slightly from the simple verb form.

Tool Count5/5

With three tools, the server is lean and focused on its core purpose of web fetching and searching. Each tool serves a distinct need without unnecessary additions, making the count well-scoped.

Completeness4/5

The server covers the essential operations for web access: single URL fetch, parallel fetch, and web search. While advanced features like custom headers or response filtering are absent, the basic lifecycle is complete enough for most use cases.

Maintenance

ActivityInactive
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
    A
    quality
    D
    maintenance
    Integrates Firecrawl web scraping capabilities including scraping, crawling, searching, extracting structured data, deep research, and batch processing with support for both cloud and self-hosted instances.
    10
    40,139
    2
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Integrates Firecrawl web scraping capabilities to extract, crawl, search, and analyze web content with support for batch operations, structured data extraction, and deep research across websites.
    8
    40,139
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Integrates Firecrawl for web scraping, crawling, search, and content extraction capabilities. Supports single/batch scraping, URL discovery, structured data extraction, deep research, and AI-powered web analysis with automatic retries and rate limiting.
    8
    40,139
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Integrates Firecrawl web scraping capabilities, enabling web content extraction, crawling, site mapping, search, and structured data extraction with automatic rate limiting and retry handling.
    6
    40,139
    2
    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/alexyangjie/mcp-server-multi-fetch'

If you have feedback or need assistance with the MCP directory API, please join our Discord server