{"_id":"mcp-fetch-server","_rev":"7-87d9604b64dd41a29e4a12467c3b57e0","name":"mcp-fetch-server","dist-tags":{"latest":"1.1.2"},"versions":{"1.0.0":{"name":"mcp-fetch-server","version":"1.0.0","keywords":[],"author":{"url":"@zachcaceres zach.dev","name":"zcaceres"},"license":"MIT","_id":"mcp-fetch-server@1.0.0","maintainers":[{"name":"ilintar","email":"ilintar@gmail.com"}],"contributors":[{"url":"ilintar@gmail.com","name":"pwilkin"}],"bin":{"fetch-mcp":"dist/index.js"},"dist":{"shasum":"140d253034d56836c837aa2de223e7eb5d6c0c6c","tarball":"https://registry.npmjs.org/mcp-fetch-server/-/mcp-fetch-server-1.0.0.tgz","fileCount":13,"integrity":"sha512-iBtxt9jOOR8bJ81crj6QmMZAnpyv8h1FiuNVJbwKW6ahzPKsPs0A7FqkUskDIb6TGqJ5FbjPTBPsjrWyDgLJ9Q==","signatures":[{"sig":"MEUCIQDpgi0wx/qx+PqxZ4U1FfYw3j07xHLUZSti359Y8pL88gIgeL4gudSH9XhfishvfKGUMbt9RNC5QN3kUhFmTAZ9hKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1059515},"main":"index.js","type":"module","gitHead":"7189766a0d7e75c2b837f93e613f2a15deacac08","scripts":{"dev":"tsc --watch","test":"jest","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build"},"_npmUser":{"name":"ilintar","email":"ilintar@gmail.com"},"_npmVersion":"10.9.0","description":"An MCP server offering simple HTTP fetch functionality","directories":{},"_nodeVersion":"23.1.0","dependencies":{"zod":"^3.24.1","jsdom":"^25.0.1","turndown":"^7.2.0","private-ip":"^3.0.2","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"0.4.0","jest":"^29.7.0","ts-jest":"^29.2.5","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/node":"^22.10.2","@types/jsdom":"^21.1.7","@types/turndown":"^5.0.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-fetch-server_1.0.0_1752499061268_0.1520782229297828","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"mcp-fetch-server","version":"1.0.1","keywords":[],"author":{"url":"@zachcaceres zach.dev","name":"zcaceres"},"license":"MIT","_id":"mcp-fetch-server@1.0.1","maintainers":[{"name":"ilintar","email":"ilintar@gmail.com"}],"contributors":[{"url":"ilintar@gmail.com","name":"pwilkin"}],"bin":{"mcp-fetch-server":"dist/index.js"},"dist":{"shasum":"a22b58dbc7d96de9289ba2ab7f493bb3b296b7a4","tarball":"https://registry.npmjs.org/mcp-fetch-server/-/mcp-fetch-server-1.0.1.tgz","fileCount":13,"integrity":"sha512-v7mYbytjs1fyuPq5EK5Tsquq6YrCa+7yqtwoneJn22yjQ1/qW4Hdz6sGRAr9OM0xoz/pIcKeB6bjIOTlmKG5Jg==","signatures":[{"sig":"MEUCIQC/AU5K4Znj99lR05WNl1s1+/7U9ll80aOsX8Iwvt0qLAIgLQQo0cp/8t+LNBr8Us+3ag7ccPlM8/72DH1hW62YWd4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1059522},"main":"index.js","type":"module","gitHead":"7189766a0d7e75c2b837f93e613f2a15deacac08","scripts":{"dev":"tsc --watch","test":"jest","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build"},"_npmUser":{"name":"ilintar","email":"ilintar@gmail.com"},"_npmVersion":"10.9.0","description":"An MCP server offering simple HTTP fetch functionality","directories":{},"_nodeVersion":"23.1.0","dependencies":{"zod":"^3.24.1","jsdom":"^25.0.1","turndown":"^7.2.0","private-ip":"^3.0.2","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"0.4.0","jest":"^29.7.0","ts-jest":"^29.2.5","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/node":"^22.10.2","@types/jsdom":"^21.1.7","@types/turndown":"^5.0.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-fetch-server_1.0.1_1752499143548_0.3882165839856966","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"mcp-fetch-server","version":"1.0.2","keywords":[],"author":{"url":"@zachcaceres zach.dev","name":"zcaceres"},"license":"MIT","_id":"mcp-fetch-server@1.0.2","maintainers":[{"name":"ilintar","email":"ilintar@gmail.com"}],"contributors":[{"url":"ilintar@gmail.com","name":"pwilkin"}],"bin":{"mcp-fetch-server":"dist/index.js"},"dist":{"shasum":"b826790b5b3de0ca15d2b7a029570d1142aa9ade","tarball":"https://registry.npmjs.org/mcp-fetch-server/-/mcp-fetch-server-1.0.2.tgz","fileCount":13,"integrity":"sha512-4/wRvFTmMaHbkNi50eZzOcMtD7mRH0peSmmfsm3mXLj6uJLGYqYiEMEeuVUtg7EreOQxZi/rhzeD473ARl/0hw==","signatures":[{"sig":"MEUCIBcPRFJLLIP/ceUXxMCwJmnG7pfhglKkt9pbehh2xl26AiEAkSYmY4d71e8laguxLaNMq46BKrIWP1ujM3NQwcCFGME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1059522},"main":"index.js","type":"module","gitHead":"7189766a0d7e75c2b837f93e613f2a15deacac08","scripts":{"dev":"tsc --watch","test":"jest","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build"},"_npmUser":{"name":"ilintar","email":"ilintar@gmail.com"},"_npmVersion":"10.9.0","description":"An MCP server offering simple HTTP fetch functionality","directories":{},"_nodeVersion":"23.1.0","dependencies":{"zod":"^3.24.1","jsdom":"^25.0.1","turndown":"^7.2.0","private-ip":"^3.0.2","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"shx":"0.4.0","jest":"^29.7.0","ts-jest":"^29.2.5","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/node":"^22.10.2","@types/jsdom":"^21.1.7","@types/turndown":"^5.0.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-fetch-server_1.0.2_1752499299837_0.2474574687891975","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"mcp-fetch-server","version":"1.1.0","keywords":["mcp","fetch","web","scrape","markdown","youtube","transcript"],"author":{"url":"@zachcaceres zach.dev","name":"zcaceres"},"license":"MIT","_id":"mcp-fetch-server@1.1.0","maintainers":[{"name":"zachcaceres","email":"npm@zach.dev"},{"name":"ilintar","email":"ilintar@gmail.com"}],"contributors":[{"url":"ilintar@gmail.com","name":"pwilkin"}],"homepage":"https://github.com/zcaceres/fetch-mcp#readme","bugs":{"url":"https://github.com/zcaceres/fetch-mcp/issues"},"bin":{"mcp-fetch":"dist/cli.js","mcp-fetch-server":"dist/index.js"},"dist":{"shasum":"18314d475ce509b34c3abc2d622a5573453ced19","tarball":"https://registry.npmjs.org/mcp-fetch-server/-/mcp-fetch-server-1.1.0.tgz","fileCount":5,"integrity":"sha512-xbacKaNdlBpAu8bwEurLfU0wMa12PhlOw+8944YzkbHYKdZLmRykcgKApfd59T2F4HBacmET6oNC3Lu2OnLPEQ==","signatures":[{"sig":"MEYCIQDg3+5fEVSqYBgTIkKxYzfo4GPZEH4j29ri8HpSDO2K6wIhAOSRhQ85EwSIq0bJEZrN5bZ598NCW6+CS8vUri1QXUwP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19068053},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"4de0d73b31cf7e5004b147c1f2cb92840646bce6","scripts":{"dev":"bun run --watch src/index.ts","test":"bun test","build":"bun build src/index.ts src/cli.ts --outdir dist --target node","start":"bun run src/index.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"zachcaceres","email":"npm@zach.dev"},"repository":{"url":"git+https://github.com/zcaceres/fetch-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server and CLI for fetching web content as HTML, Markdown, plain text, JSON, or YouTube transcripts","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","jsdom":"^28.1.0","turndown":"^7.2.2","private-ip":"^3.0.2","@mozilla/readability":"^0.6.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@types/jsdom":"^28.0.0","@types/turndown":"^5.0.6","@types/mozilla__readability":"^0.4.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-fetch-server_1.1.0_1772940806180_0.29211939161067213","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"mcp-fetch-server","version":"1.1.1","keywords":["mcp","fetch","web","scrape","markdown","youtube","transcript"],"author":{"url":"@zachcaceres zach.dev","name":"zcaceres"},"license":"MIT","_id":"mcp-fetch-server@1.1.1","maintainers":[{"name":"zachcaceres","email":"npm@zach.dev"},{"name":"ilintar","email":"ilintar@gmail.com"}],"contributors":[{"url":"ilintar@gmail.com","name":"pwilkin"}],"homepage":"https://github.com/zcaceres/fetch-mcp#readme","bugs":{"url":"https://github.com/zcaceres/fetch-mcp/issues"},"bin":{"mcp-fetch":"dist/cli.js","mcp-fetch-server":"dist/index.js"},"dist":{"shasum":"55718881e5ac35ed82a46f79da38b514281dcb5f","tarball":"https://registry.npmjs.org/mcp-fetch-server/-/mcp-fetch-server-1.1.1.tgz","fileCount":5,"integrity":"sha512-3t2PIk0Dc+k4Hy0KKlRK7b9B7vPp1nhvDuvSX/mv9qULEX0fHQs/IXqNvZ0OIGxXUr7PiWQEqtycAu5qVLaycA==","signatures":[{"sig":"MEUCIQCMcwnf862KXjGPnBh6QyLH3vJXfUgCgzfMvb4diP45CgIgKokpx+3HrZcA/IkEBFKvkKk9C1VuiIz8gFxfc7ZxxOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1482181},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"f0759d51408a3f847ba171337ea8e8e1ca7daf3f","scripts":{"dev":"bun run --watch src/index.ts","test":"bun test","build":"bun build src/index.ts src/cli.ts --outdir dist --target node --external jsdom --external @mozilla/readability --external turndown","start":"bun run src/index.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"zachcaceres","email":"npm@zach.dev"},"repository":{"url":"git+https://github.com/zcaceres/fetch-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server and CLI for fetching web content as HTML, Markdown, plain text, JSON, or YouTube transcripts","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","jsdom":"^28.1.0","turndown":"^7.2.2","private-ip":"^3.0.2","@mozilla/readability":"^0.6.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@types/jsdom":"^28.0.0","@types/turndown":"^5.0.6","@types/mozilla__readability":"^0.4.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-fetch-server_1.1.1_1773066960834_0.3539826679832496","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"mcp-fetch-server","version":"1.1.2","description":"MCP server and CLI for fetching web content as HTML, Markdown, plain text, JSON, or YouTube transcripts","type":"module","main":"dist/index.js","license":"MIT","author":{"name":"zcaceres","url":"@zachcaceres zach.dev"},"contributors":[{"name":"pwilkin","url":"ilintar@gmail.com"}],"repository":{"type":"git","url":"git+https://github.com/zcaceres/fetch-mcp.git"},"homepage":"https://github.com/zcaceres/fetch-mcp#readme","bugs":{"url":"https://github.com/zcaceres/fetch-mcp/issues"},"scripts":{"build":"bun build src/index.ts src/cli.ts --outdir dist --target node --external jsdom --external @mozilla/readability --external turndown","prepublishOnly":"bun run build","dev":"bun run --watch src/index.ts","start":"bun run src/index.ts","test":"bun test","publish:npm":"bun run build && bun test && npm publish"},"bin":{"mcp-fetch-server":"dist/index.js","mcp-fetch":"dist/cli.js"},"engines":{"node":">=18"},"keywords":["mcp","fetch","web","scrape","markdown","youtube","transcript"],"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@mozilla/readability":"^0.6.0","jsdom":"^28.1.0","private-ip":"^3.0.2","turndown":"^7.2.2","zod":"^4.3.6"},"devDependencies":{"@types/bun":"latest","@types/jsdom":"^28.0.0","@types/mozilla__readability":"^0.4.2","@types/turndown":"^5.0.6"},"_id":"mcp-fetch-server@1.1.2","gitHead":"4080fd215915105dbbe40aeb53d76fa152048e09","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-7sz6KlwvTS7gUWYLl3yqqPignheOCntK6KjBwqoVbk50g80Mg6BORcdGvDL7jHhYwdwlYMl+PkL34HmAViARDQ==","shasum":"12b0ef139f678078c9dc9c7e019301503df3edc0","tarball":"https://registry.npmjs.org/mcp-fetch-server/-/mcp-fetch-server-1.1.2.tgz","fileCount":5,"unpackedSize":1489288,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBGpfNNs/j0ia6LIcWxOpxvtNf6u8p6uXILB6AInBhieAiEA587qDgclWsMglWxOcWkAk6OXeZz4z0M0Qmztz0e3br8="}]},"_npmUser":{"name":"zachcaceres","email":"npm@zach.dev"},"directories":{},"maintainers":[{"name":"zachcaceres","email":"npm@zach.dev"},{"name":"ilintar","email":"ilintar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-fetch-server_1.1.2_1773085519360_0.3030801466871831"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-14T13:17:41.267Z","modified":"2026-03-09T19:45:19.742Z","1.0.0":"2025-07-14T13:17:41.529Z","1.0.1":"2025-07-14T13:19:03.845Z","1.0.2":"2025-07-14T13:21:40.100Z","1.1.0":"2026-03-08T03:33:26.473Z","1.1.1":"2026-03-09T14:36:01.126Z","1.1.2":"2026-03-09T19:45:19.631Z"},"bugs":{"url":"https://github.com/zcaceres/fetch-mcp/issues"},"author":{"name":"zcaceres","url":"@zachcaceres zach.dev"},"license":"MIT","homepage":"https://github.com/zcaceres/fetch-mcp#readme","keywords":["mcp","fetch","web","scrape","markdown","youtube","transcript"],"repository":{"type":"git","url":"git+https://github.com/zcaceres/fetch-mcp.git"},"description":"MCP server and CLI for fetching web content as HTML, Markdown, plain text, JSON, or YouTube transcripts","contributors":[{"name":"pwilkin","url":"ilintar@gmail.com"}],"maintainers":[{"name":"zachcaceres","email":"npm@zach.dev"},{"name":"ilintar","email":"ilintar@gmail.com"}],"readme":"# Fetch MCP Server\n\n![fetch mcp logo](logo.jpg)\n\n[![npm version](https://img.shields.io/npm/v/mcp-fetch-server.svg)](https://www.npmjs.com/package/mcp-fetch-server)\n\nAn MCP server for fetching web content in multiple formats — HTML, JSON, plain text, Markdown, readable article content, and YouTube transcripts.\n\n<a href=\"https://glama.ai/mcp/servers/nu09wf23ao\">\n  <img width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/nu09wf23ao/badge\" alt=\"Fetch Server MCP server\" />\n</a>\n\n## Tools\n\nAll tools accept the following common parameters:\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `url` | string | Yes | URL to fetch |\n| `headers` | object | No | Custom headers to include in the request |\n| `max_length` | number | No | Maximum characters to return (default: 5000) |\n| `start_index` | number | No | Start from this character index (default: 0) |\n| `proxy` | string | No | Proxy URL (e.g. `http://proxy:8080`) |\n\n- **fetch_html** — Fetch a website and return its raw HTML content.\n\n- **fetch_markdown** — Fetch a website and return its content converted to Markdown.\n\n- **fetch_txt** — Fetch a website and return plain text with HTML tags, scripts, and styles removed.\n\n- **fetch_json** — Fetch a URL and return the JSON response.\n\n- **fetch_readable** — Fetch a website and extract the main article content using [Mozilla Readability](https://github.com/mozilla/readability), returned as Markdown. Strips navigation, ads, and boilerplate. Ideal for articles and blog posts.\n\n- **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.\n\n## Installation\n\n### As an MCP server\n\nAdd to your MCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"fetch\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-fetch-server\"]\n    }\n  }\n}\n```\n\n### As a CLI\n\n```bash\nnpx mcp-fetch <command> <url> [flags]\n```\n\nOr install globally:\n\n```bash\nnpm install -g mcp-fetch-server\nmcp-fetch <command> <url> [flags]\n```\n\n## CLI Usage\n\n```\nmcp-fetch <command> <url> [flags]\n```\n\n### Commands\n\n| Command | Description |\n|---------|-------------|\n| `html` | Fetch a URL and return raw HTML |\n| `markdown` | Fetch a URL and return Markdown |\n| `readable` | Fetch a URL and return article content as Markdown (via Readability) |\n| `txt` | Fetch a URL and return plain text |\n| `json` | Fetch a URL and return JSON |\n| `youtube` | Fetch a YouTube video transcript |\n\n### Flags\n\n| Flag | Description |\n|------|-------------|\n| `--max-length <N>` | Maximum characters to return |\n| `--start-index <N>` | Start from this character index |\n| `--proxy <URL>` | Proxy URL |\n| `--lang <code>` | Language code for YouTube transcripts (default: `en`) |\n| `--help` | Show help message |\n| `--version` | Show version |\n\n### Examples\n\n```bash\n# Fetch a page as markdown\nmcp-fetch markdown https://example.com\n\n# Extract article content without boilerplate\nmcp-fetch readable https://example.com/blog/post\n\n# Get a YouTube transcript in Spanish\nmcp-fetch youtube https://www.youtube.com/watch?v=dQw4w9WgXcQ --lang es\n\n# Fetch with a length limit\nmcp-fetch html https://example.com --max-length 10000\n\n# Fetch through a proxy\nmcp-fetch json https://api.example.com/data --proxy http://proxy:8080\n```\n\n## Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `DEFAULT_LIMIT` | Default character limit for responses (default: `5000`, set to `0` for no limit) |\n\nExample with a custom limit:\n\n```json\n{\n  \"mcpServers\": {\n    \"fetch\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-fetch-server\"],\n      \"env\": {\n        \"DEFAULT_LIMIT\": \"50000\"\n      }\n    }\n  }\n}\n```\n\n## Features\n\n- Fetch web content as HTML, JSON, plain text, or Markdown\n- Extract article content with Mozilla Readability (strips ads, nav, boilerplate)\n- Extract YouTube video transcripts (via `yt-dlp` or direct extraction)\n- Proxy support for requests behind firewalls\n- Pagination with `max_length` and `start_index`\n- Custom request headers\n- SSRF protection (blocks private/localhost addresses)\n\n## Development\n\n```bash\nbun install\nbun run dev     # start with watch mode\nbun test        # run tests\nbun run build   # build for production\n```\n\n## License\n\nThis project is licensed under the MIT License.\n","readmeFilename":"README.md"}