Installing Fetch MCP

Set up Fetch MCP with uvx, pip, or Docker and secure access to internal networks.

Published on 03.09.2026

Fetch MCP retrieves web pages and converts their HTML into compact Markdown for the MCP client. The recommended installation uses uvx.

Requirements for Fetch MCP

You need Python 3.10 or newer, an MCP client, and uv. Node.js is optional; when present, the server uses a more robust HTML simplifier.

Starting Fetch MCP with uvx

uvx mcp-server-fetch

Configure uvx as the command and mcp-server-fetch as its argument in the MCP client. Alternatively, install the package with pip install mcp-server-fetch and run python -m mcp_server_fetch. The mcp/fetch image is documented as well.

Establishing a security boundary for Fetch MCP

The official server can reach local and internal IP addresses. Run it in an environment whose network access is limited to required public targets. A proxy can be set with --proxy-url. Model-initiated requests honor robots.txt by default; use --ignore-robots-txt only deliberately.

Verifying the setup

First retrieve a harmless public page and confirm that Markdown is returned. Then verify from the runtime environment that internal administration interfaces and metadata endpoints are not reachable.

Common startup issues

If uvx mcp-server-fetch fails with an error about the Python version, check with python3 --version — at least version 3.10 is required. If uv is missing from the system, it can be installed following the official installation guide; alternatively, the pip install mcp-server-fetch path works without uv. If the server unexpectedly returns empty or truncated results, that can be caused by a max_length parameter set too low, which limits the amount of returned text.

Proxy and network configuration

In enterprise environments that require an outbound proxy, it must be passed to the server via --proxy-url, otherwise all requests fail. Firewalls that only allow specific destination addresses should account for the server process itself, not just the MCP client, since the actual HTTP requests originate from the fetch process.

When ignoring robots.txt is justified

By default, the server respects robots.txt for model-initiated requests. The --ignore-robots-txt flag should only be set in clearly justified cases, such as accessing your own, self-controlled internal documentation whose robots.txt was accidentally configured too restrictively. For third-party public websites, ignoring robots.txt is not recommended.

When Fetch MCP reaches its limits

For pages that rely heavily on JavaScript to load content, or that require a login, Fetch MCP may return incomplete or empty results because the server doesn't simulate a real browser. In such cases, a browser automation tool such as Playwright MCP is the better fit.

Knowing this boundary upfront saves troubleshooting time later, since an empty or truncated response is often a sign the target page needs interactive rendering rather than a configuration error.

Source: official modelcontextprotocol/servers repository and PyPI, checked on 2026-09-03.

Published on 03.09.2026

Categories

Frequently asked questions

Can the server reach internal addresses (SSRF risk)?

Yes, the official fetch server can retrieve local and internal IP addresses. Run it in an environment whose network access is limited to the required public targets, and verify that internal admin interfaces and cloud metadata endpoints are unreachable.

uvx, pip or Docker - which should I use?

`uvx mcp-server-fetch` is recommended and requires `uv`. Alternatives are `pip install mcp-server-fetch` started via `python -m mcp_server_fetch`, or the `mcp/fetch` image. All three are documented.

Is robots.txt respected?

Model-initiated fetches respect robots.txt by default. `--ignore-robots-txt` disables that and should only be set deliberately and for clearly defined cases.

Do I need Node.js?

No, Node.js is optional. If installed, the server uses a more robust HTML-to-Markdown simplifier. The requirements are Python 3.10 or newer and an MCP client. Source: github.com/modelcontextprotocol/servers