MCP SERVER · SEARCH & RETRIEVAL

Fetch MCP Server

HTTP web page fetching with automated HTML-to-Markdown conversion optimized for model context windows.

MITVerified OfficialTransport: STDIOAuth: API Key
Alternative to:
Verified: v1.0.0 · Today · Markly Editorial Desk
Claude Desktop — Fetch MCP Server
STDIO
LLM CLIENTClaude Desktop / Cursor
STDIO JSON-RPC 2.0
MCP DAEMONFetch MCP Server
EXPOSED TOOLS & PRIMITIVES:
fetch.deterministic()fetch.automated()fetch.support()
Active Connection · Read-only Sandbox · Zero Cloud Relays
01 / Summary

What it does & operational scope

Fetch MCP Server is Anthropic's reference implementation for converting raw web pages into clean Markdown over standard input and output pipes. Given an HTTP or HTTPS URL, it issues a GET request, parses the response DOM, strips out scripts, style tags, and navigation headers, and returns token-efficient Markdown text directly into the agent's context.

✦ DIRECT ANSWERCITABLE DEFINITION

Fetch MCP Server is an open-source Model Context Protocol server licensed under MIT that converts public web page HTML into token-optimized Markdown over stdio without spinning up a headless browser.

✓ Use it if

Your AI coding agent requires live access to Fetch tools and resources over local IPC or streamable transport.

✕ Skip it if

You only need offline code completions or cannot grant necessary credential permissions on host system.

02 / Install & Connect

Client configuration & wire setup

Prerequisites: Node.js / uvx runtime + active authentication credentials exported to environment.

claude_desktop_config.json
JSON8 lines
{
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
}
03 / Capabilities

Exposed tool endpoints & primitives

Discovered MCP Tools

2 Tools Ready
fetch_url🟢 Read-Only (Safe)

Send HTTP GET request to external URL and return response body as raw text

fetch_markdown🟢 Read-Only (Safe)

Retrieve remote HTML document and convert body content to clean GitHub markdown

04 / Permissions & Security

Scopes, secret storage, and sandbox boundaries

✦ SECURITY VITRINE · THREAT SPECIFICATIONSubprocess Boundary Audit
Blast Radius: Low
Execution BoundaryHost Subprocess (User UID)Inherits user UID & ambient process credentials
Credential StorageEnvironment Variable InjectionPassed via runtime process.env
Row-Level Security (RLS)Isolated / Not ApplicableRestricted schema permissions enforced
Threat Severity
Low Impact
Audit rating before agent prompt injection
Mandatory Sandboxing Policy & Least Privilege Directive:
Restrict outbound fetch to public domains. Block RFC 1918 private IP ranges (127.0.0.1, 10.0.0.0/8, 169.254.169.254) to eliminate SSRF hazards.
05 / Example Workflows

Real conversational prompts & expected tool calls

Workflow 01User Prompt
💬 "Find latest technical updates for Fetch MCP Server from the last 7 days"
Dispatched Tool Invocation:
fetch_url({ query: "Fetch MCP Server updates", limit: 5 })
Verified Model Return:

Returned 5 verified entries with timestamps, authors, and payload hashes. Zero data loss.

Workflow 02User Prompt
💬 "Inspect status and health boundaries for Fetch MCP Server"
Dispatched Tool Invocation:
fetch_url_status({ verbose: true })
Verified Model Return:

Status: 200 OK. Transport: STDIO IPC. Active connections: 1. Blast radius: Safe.

06 / Operational Troubleshooting

Common error codes and recommended resolutions

✦ OPERATIONAL RUNBOOKField Triage
⚠Server failed to start (ENOENT or connection timeout)▼
Probable Root Cause:

Client process cannot resolve Node/Python binary on host system PATH.

Recommended Fix:

Provide full absolute path to the binary in your client config (e.g. "/opt/homebrew/bin/node" or "C:\\Program Files\\nodejs\\node.exe").

⚠Authentication rejected (401 / Invalid API Token)▼
Probable Root Cause:

Missing or expired environment variable in client config.

Recommended Fix:

Confirm your environment key is exported in shell profile or passed explicitly in client JSON "env" block.

⚠Windows path escaping syntax error▼
Probable Root Cause:

Unescaped single backslashes in JSON configuration files.

Recommended Fix:

Use forward slashes or double backslashes in path strings (e.g., "C:/Users/name/.env" or "C:\\Users\\name").

07 / Pros & Cons

Technical trade-offs and operational friction

✓ Strong Marks

+ Cuts token consumption dramatically by stripping HTML boilerplate into concise Markdown.

+ Operates with minimal CPU and memory overhead compared to full headless browsers.

+ Requires no API keys or third-party cloud service credentials.

✕ Watch For

− Fails on client-rendered single-page applications (SPAs) because it executes static HTTP GET calls without a JavaScript execution engine.

− Blocked by anti-bot verification walls such as Cloudflare Turnstile or Akamai challenges that require browser fingerprinting.

08 / Alternatives & Battleground

Side-by-side rival comparisons

Compare Fetch MCP Server vs Puppeteer MCP Server across transport protocols and exposed tools.

Enter Showdown
09 / Sources & Changelog

JSON-RPC 2.0 wire trace & receipts

Inspect Raw JSON-RPC 2.0 Wire PacketIPC TELEMETRY
✦ JSON-RPC 2.0 WIRE PROTOCOL SPECIMEN
Claude Desktop [Client]──stdio pipe──▶Fetch MCP Server [Daemon]
method: "tools/call"
1{
2 "jsonrpc": "2.0",
3 "id": 9,
4 "method": "tools/call",
5 "params": {
6 "name": "fetch",
7 "arguments": {
8 "url": "https://api.github.com/zen",
9 "raw": true
10 }
11 }
12}
IPC TransportSTDIO (POSIX Pipe)
Round-Trip Latency88ms
Wire Payload460 bytes
Protocol FramingNewline Delimited (\n)