fetch_markdown
Fetch a web page and return its main content as clean Markdown (nav, ads and boilerplate removed). Raw Markdown, plain-text and JSON endpoints are returned as-is. Use this to read an article, docs page or raw file.
url必填max_chars
io.github.vanshulgoyal101由 GitHub 账号 vanshulgoyal101 发布v1.0.0更新于 Oct 24, 2026
Read any web page as clean Markdown for AI agents: fetch, search, metadata, links. SSRF-safe.
远程 MCP 服务器,让助手把实时网页抓取为干净的 Markdown、页面元数据、外链或按查询匹配的段落。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。
阅读 https://sourceweft.com/mcp/io.github.vanshulgoyal101%2Fmcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。把它添加到你客户端的 mcpServers 配置中。
{
"mcpServers": {
"vanshulgoyal101": {
"type": "http",
"url": "https://mcp.vanshul.com/mcp"
}
}
}A public Model Context Protocol (MCP) server, running as a Cloudflare
Worker, that lets any AI agent read the live web as clean Markdown. It builds on
the same extraction pipeline as the sibling reader/ project
(Mozilla Readability + Turndown), exposed over the MCP Streamable HTTP
transport so agentic clients can plug straight in.
Remote/HTTP-capable clients (Claude Desktop, Cursor, Continue, …):
Stdio-only clients can bridge with mcp-remote:
~/.cursor/mcp.json:
claude_desktop_config.json (Settings → Developer → Edit Config). If your version is stdio-only, use:
web-reader with URL https://mcp.vanshul.com/mcp to your MCP servers config.After the first deploy, attach the custom domain mcp.vanshul.com in the
Cloudflare dashboard (Workers & Pages → this worker → Settings → Domains), or
uncomment the [[routes]] block in wrangler.toml.
http(s) URLs; localhost, private ranges, cloud
metadata and every redirect hop are blocked/re-validated.Implements initialize, ping, tools/list, tools/call and notifications
(protocol version 2025-06-18). Tool failures are returned as
{ content, isError: true } so the agent can read the message and recover;
malformed requests use standard JSON-RPC error codes.
MIT © Vanshul Goyal
来源:README.md,提交 20b88d4
Fetch a web page and return its main content as clean Markdown (nav, ads and boilerplate removed). Raw Markdown, plain-text and JSON endpoints are returned as-is. Use this to read an article, docs page or raw file.
url必填max_charsFetch a web page and return its metadata as JSON: title, byline, site name, excerpt and word count (no full body).
url必填Fetch a web page and return all of its outbound http(s) links (with anchor text) as JSON. Useful for crawling or finding related pages.
url必填limitFetch a web page and return only the passages that match a query, instead of the whole page. Each result includes its heading breadcrumb and is ranked by relevance. Use this to find a specific detail (e.g. pricing, a config option) while spending far fewer tokens than fetch_markdown.
url必填query必填max_matchescontext_chars已满足适用检查项的 100%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
POST https://mcp.vanshul.com/mcp # JSON-RPC 2.0 (MCP)GET https://mcp.vanshul.com/health # { ok: true, tools: [...] }{ "mcpServers": { "web-reader": { "url": "https://mcp.vanshul.com/mcp" } }}npx mcp-remote https://mcp.vanshul.com/mcp{ "mcpServers": { "web-reader": { "url": "https://mcp.vanshul.com/mcp" } } }{ "mcpServers": { "web-reader": { "command": "npx", "args": ["mcp-remote", "https://mcp.vanshul.com/mcp"] } } }curl -s https://mcp.vanshul.com/mcp \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -s https://mcp.vanshul.com/mcp \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call", "params":{"name":"fetch_markdown","arguments":{"url":"https://example.com"}}}'
# Return only the passages matching a query (token-efficient):curl -s https://mcp.vanshul.com/mcp \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":3,"method":"tools/call", "params":{"name":"search_page","arguments":{"url":"https://example.com","query":"more information"}}}'mcp/├── src/│ ├── worker.ts # entry: routes /mcp, /health, rate limit, CORS│ ├── mcp.ts # JSON-RPC dispatch + tool definitions│ ├── extract.ts # HTML -> Markdown / links (Readability + Turndown)│ ├── search.ts # query-focused passage search over extracted Markdown│ ├── fetcher.ts # fetch with timeout, size cap, re-validated redirects│ └── security.ts # SSRF guard (block private/internal addresses)├── public/│ ├── index.html # landing page (served for non-API paths)│ ├── og.png # social share image (1200×630)│ ├── og.svg # social image source│ ├── robots.txt│ └── sitemap.xml├── tests/ # vitest: security, extract, search, mcp dispatch, fetcher, worker├── wrangler.toml├── package.json├── tsconfig.json└── README.mdcd mcpnpm installnpm run typechecknpm test # vitest — security, extraction, search, MCP dispatch, fetcher, workernpm run dev # local worker at http://localhost:8787 (POST /mcp)npm run deploy # wrangler deploy