Fetch

Fetch web content as HTML, JSON, plain text, or Markdown.

Fetch MCP Server

fetch mcp logo

npm version

An MCP server for fetching web content in multiple formats — HTML, JSON, plain text, Markdown, readable article content, and YouTube transcripts.

Tools

All tools accept the following common parameters:

ParameterTypeRequiredDescription
urlstringYesURL to fetch
headersobjectNoCustom headers to include in the request
max_lengthnumberNoMaximum characters to return (default: 5000)
start_indexnumberNoStart from this character index (default: 0)
proxystringNoProxy 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-dlp if available, otherwise extracts directly from the page. Accepts an additional lang parameter (default: "en") to select the caption language.

Installation

As an MCP server

Add to your MCP client configuration:

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

As a CLI

npx mcp-fetch <command> <url> [flags]

Or install globally:

npm install -g mcp-fetch-server
mcp-fetch <command> <url> [flags]

CLI Usage

mcp-fetch <command> <url> [flags]

Commands

CommandDescription
htmlFetch a URL and return raw HTML
markdownFetch a URL and return Markdown
readableFetch a URL and return article content as Markdown (via Readability)
txtFetch a URL and return plain text
jsonFetch a URL and return JSON
youtubeFetch a YouTube video transcript

Flags

FlagDescription
--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)
--helpShow help message
--versionShow version

Examples

# 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

Environment Variables

VariableDescription
DEFAULT_LIMITDefault character limit for responses (default: 5000, set to 0 for no limit)
MAX_RESPONSE_BYTESMaximum 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"
      }
    }
  }
}

Features

  • 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-dlp or direct extraction)
  • Proxy support for requests behind firewalls
  • Pagination with max_length and start_index
  • Custom request headers
  • SSRF protection (blocks private/localhost addresses and DNS rebinding)
  • Response size limits to prevent memory exhaustion

Development

bun install
bun run dev     # start with watch mode
bun test        # run tests
bun run build   # build for production

License

This project is licensed under the MIT License.

Related Servers