Fetch MCP server
- MCP server
- Official
- Tested by us
The MCP project's reference server for reading web pages: Claude fetches a URL and gets it as Markdown, in chunks, with private addresses blocked.
MCP serverWeb and browserOn this page10 sections
Best for
- Letting Claude Desktop read a specific web page
- Pulling an article or docs page into a chat as clean text
- A simple first Python-based MCP server
Quick install
Local stdio server run with uvx (Python), pip or Docker
- Claude Desktop
Claude menu > Settings... > Developer > Edit Config, then add a fetch entry with command uvx and args ["mcp-server-fetch"].
Quit and reopen Claude Desktop; check + > Connectors > Manage connectors.
Install uv, which provides the uvx command (the README recommends it).
claude mcp add fetch -- uvx mcp-server-fetch
Install uv, which provides the uvx command (the README recommends it).
Claude Desktop: Claude menu > Settings... > Developer > Edit Config, then add a fetch entry with command uvx and args ["mcp-server-fetch"].
Quit and reopen Claude Desktop; check + > Connectors > Manage connectors.
Claude Code:
claude mcp add fetch -- uvx mcp-server-fetch
At a glance
- Type
- MCP server
- Made by
- Model Context Protocol project (official)
- Tested by us
- Yes
- Works with
- Claude Desktop
- Claude Code
- Sign-in needed
- NoNo account or API key.
- Cost
- Free and open source. Pages are fetched from your own computer.
- License
- MIT
- Registry name
io.github.modelcontextprotocol/server-fetch- Facts checked
Fetch gives Claude one simple ability: open a URL and read it. You paste a link, Claude calls the server, and the page comes back as Markdown, which is cleaner for Claude to read than raw HTML. It is one of the seven reference servers the MCP steering group still maintains.
What it does (plain English)
The server has one tool, fetch, plus a matching prompt. The tool takes four inputs:
| Input | Default | What it does |
|---|---|---|
url | required | The page to fetch |
max_length | 5000 | Maximum characters returned |
start_index | 0 | Where to start, so Claude can read long pages in chunks |
raw | false | Return raw content instead of Markdown |
Long pages are cut at max_length, and the response tells Claude which start_index to use next, so it can keep reading until it finds what it needs.
Its built-in rules:
- Private addresses are refused by default. It will not fetch localhost, home-network addresses or cloud metadata addresses such as
169.254.169.254, and it checks every redirect. Add--allow-private-ipsto reach a local dev server. - robots.txt is obeyed when the model asks for a page, but not when you trigger the fetch yourself through the prompt.
--ignore-robots-txtturns this off. - It identifies itself with a
ModelContextProtocol/1.0user agent unless you set--user-agent. - Proxies are supported through
--proxy-urlor the standard proxy environment variables.
Is it for you?
Pick it if you use Claude Desktop with local servers and want Claude to read specific pages you point it at: documentation, an article, a product page. It is small, has no API key and is easy to understand.
It is not a search engine and not a browser. It cannot click, log in or run a page’s JavaScript. Claude’s built-in web search in claude.ai, or a browser automation server, covers those jobs.
What you can do with it
- Summarize a page. “Fetch https://example.com/pricing and list the plans and prices.”
- Read docs in chunks. “Read this changelog page from the start and tell me what changed in version 3.” Claude pages through with
start_index. - Compare pages. “Fetch these two product pages and compare their return policies.”
- Test your local site. With
--allow-private-ipsadded: “Fetch http://localhost:4321 and check the page title.”
How to set it up
Claude Desktop
- Install
uvso theuvxcommand works (the README links to uv’s install guide). Alternatives:pip install mcp-server-fetch, or Docker. - Open the Claude menu > Settings… > Developer > Edit Config.
- Add the server:
{
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
}
With Docker instead: "command": "docker", "args": ["run", "-i", "--rm", "mcp/fetch"].
4. Fully quit and reopen Claude Desktop, then check + > Connectors > Manage connectors.
5. On Windows, the README suggests setting PYTHONIOENCODING if you see timeouts.
Claude Code
claude mcp add fetch -- uvx mcp-server-fetch
Then claude mcp list should show fetch as Connected.
What we tested
On 2026-10-18 we ran uvx mcp-server-fetch (version 2026.10.10) and called it directly. It listed one tool, fetched https://modelcontextprotocol.io/ with max_length 600 and returned Markdown with a note to continue from index 600. A request to http://127.0.0.1:8080/ was refused as “not a public address”. claude mcp add in Claude Code 2.1.302 registered it and claude mcp list reported Connected. Evidence: research/tests/fetch-mcp-server.txt.
Watch out for
- The README’s own caution. The server “can access local/internal IP addresses and may represent a security risk.” The default guard helps, but the README notes it does not protect against DNS rebinding. Do not add
--allow-private-ipsunless you need it. - Prompt injection. A web page can contain text written to manipulate an AI. Treat instructions that appear in fetched content as data, and watch what Claude proposes to do next.
- SDK note. The README says the server requires MCP Python SDK 1.x and a port to SDK 2.0 is in progress.
uvxhandles this for you. - Reference status. The MCP repo calls its servers educational examples rather than production-ready solutions.
Brave Search: status
People often pair fetch with the Brave Search reference server. That server is archived: the MCP servers README lists it under archived servers and says it was replaced by Brave’s official server, published on npm as @brave/brave-search-mcp-server (repository brave/brave-search-mcp-server). We did not open or test it for this page.
Alternatives
- Brave’s official Brave Search MCP server for web search results rather than single pages.
- Firecrawl or Exa MCP servers for crawling and search at larger scale.
- Filesystem MCP server to save what Claude reads into local files.
Sources
- github.com/modelcontextprotocol/servers (opens in a new tab)
- github.com/modelcontextprotocol/servers/tree/main/src/fetch (opens in a new tab)
- modelcontextprotocol.io/docs/develop/connect-local-servers (opens in a new tab)
- code.claude.com/docs/en/mcp (opens in a new tab)
Related tools
Context7
by Upstash
- MCP server
- Official
Context7 feeds Claude current, version-specific library docs and code examples, so it stops writing code against APIs that no longer exist.
Works with- Claude.ai
- Claude Desktop
- Claude Code
Notion MCP
by Notion
- MCP server
- Official
Notion's hosted MCP server lets Claude search your workspace, read pages as Markdown, and create or update pages and databases you can access.
Works with- Claude.ai
- Claude Desktop
- Claude Code
Claude in Chrome
by Anthropic
- Connector
- Official
Anthropic's Chrome extension lets Claude click, type and read pages in your own signed-in browser, from a side panel, Claude Desktop or Claude Code.
Works with- Claude.ai
- Claude Desktop
- Claude Code
Exa MCP Server
by Exa
- Connector
- Official
Exa's hosted MCP server adds Exa web search and clean page fetching to Claude, with an optional research agent for multi-step lookups.
Works with- Claude.ai
- Claude Desktop
- Claude Code