An MCP server for fetching web content in multiple formats — HTML, JSON, plain text, Markdown, readable article content, and YouTube transcripts.
All tools accept the following common parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL to fetch |
headers | object | No | Custom headers to include in the request |
max_length | number | No | Maximum characters to return (default: 5000) |
start_index | number | No | Start from this character index (default: 0) |
proxy | string | No | Proxy URL (e.g. http://proxy:8080) |
-
fetch_html — Fetch a website and return its raw HTML content.
-
fetch_markdown — Fetch a website and return its content converted to Markdown.
-
fetch_txt — Fetch a website and return plain text with HTML tags, scripts, and styles removed.
-
fetch_json — Fetch a URL and return the JSON response.
-
fetch_readable — Fetch a website and extract the main article content using Mozilla Readability, returned as Markdown. Strips navigation, ads, and boilerplate. Ideal for articles and blog posts.
-
fetch_youtube_transcript — Fetch a YouTube video's captions/transcript. Uses
yt-dlpif available, otherwise extracts directly from the page. Accepts an additionallangparameter (default:"en") to select the caption language.
Add to your MCP client configuration:
{ "mcpServers": { "fetch": { "command": "npx", "args": ["mcp-fetch-server"] } } }npx mcp-fetch <command> <url> [flags]Or install globally:
npm install -g mcp-fetch-server mcp-fetch <command> <url> [flags]mcp-fetch <command> <url> [flags] | Command | Description |
|---|---|
html | Fetch a URL and return raw HTML |
markdown | Fetch a URL and return Markdown |
readable | Fetch a URL and return article content as Markdown (via Readability) |
txt | Fetch a URL and return plain text |
json | Fetch a URL and return JSON |
youtube | Fetch a YouTube video transcript |
| Flag | Description |
|---|---|
--max-length <N> | Maximum characters to return |
--start-index <N> | Start from this character index |
--proxy <URL> | Proxy URL |
--lang <code> | Language code for YouTube transcripts (default: en) |
--help | Show help message |
--version | Show version |
# Fetch a page as markdown mcp-fetch markdown https://example.com # Extract article content without boilerplate mcp-fetch readable https://example.com/blog/post # Get a YouTube transcript in Spanish mcp-fetch youtube https://www.youtube.com/watch?v=dQw4w9WgXcQ --lang es # Fetch with a length limit mcp-fetch html https://example.com --max-length 10000 # Fetch through a proxy mcp-fetch json https://api.example.com/data --proxy http://proxy:8080| Variable | Description |
|---|---|
DEFAULT_LIMIT | Default character limit for responses (default: 5000, set to 0 for no limit) |
MAX_RESPONSE_BYTES | Maximum response body size in bytes (default: 10485760 / 10 MB) |
Example with a custom limit:
{ "mcpServers": { "fetch": { "command": "npx", "args": ["mcp-fetch-server"], "env": { "DEFAULT_LIMIT": "50000" } } } }- Fetch web content as HTML, JSON, plain text, or Markdown
- Extract article content with Mozilla Readability (strips ads, nav, boilerplate)
- Extract YouTube video transcripts (via
yt-dlpor direct extraction) - Proxy support for requests behind firewalls
- Pagination with
max_lengthandstart_index - Custom request headers
- SSRF protection (blocks private/localhost addresses and DNS rebinding)
- Response size limits to prevent memory exhaustion
bun install bun run dev # start with watch mode bun test # run tests bun run build # build for productionThis project is licensed under the MIT License.
