关于 web2mcp
web2mcp 是可配置的网关,可将网站和 REST API 转为 MCP 工具。它面向希望通过 Cloudflare Worker 或本地连接器向 Agent 开放 HTTP 服务的开发者。
主要功能
- 01通过配置定义 API 连接器
- 02转换 OpenAPI 3 规范
- 03筛选和精简响应字段
- 04以目录模式呈现大型 API
- 05可选 Bearer 身份验证
适用场景
- 01向 MCP 客户端开放 REST API
- 02将 OpenAPI 规范转换为工具
- 03精简模型接收的大型 API 响应
MCP 相关
它通过 Streamable HTTP 或 stdio 向 MCP 客户端提供工具,支持 tools/list 和 tools/call 等方法。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://web2mcp.cwei59969.workers.dev/mcpclaude mcp add --transport http charleswei118-web2mcp https://web2mcp.cwei59969.workers.dev/mcp{"mcpServers":{"charleswei118-web2mcp":{"type":"http","url":"https://web2mcp.cwei59969.workers.dev/mcp"}}}在 Cursor 中打开{"servers":{"charleswei118-web2mcp":{"type":"http","url":"https://web2mcp.cwei59969.workers.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"charleswei118-web2mcp":{"type":"http","url":"https://web2mcp.cwei59969.workers.dev/mcp"}}}{"mcpServers":{"charleswei118-web2mcp":{"serverUrl":"https://web2mcp.cwei59969.workers.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
web2mcp
将任意网站或 REST API 转换为 MCP 工具——只需一个轻量的 Cloudflare Worker,零依赖。
GitHub 的 665 个 REST 端点 → 2 个 MCP 工具;工具定义从约 147,000 个 token 缩减至约 300 个(目录模式:665 个端点 → 2 个工具)
现在,每个 AI Agent(Claude、ChatGPT、Cursor,以及你自己的机器人……)都支持 Model Context Protocol。但大多数网站和应用并不支持。web2mcp 就是连接两者的桥梁:只需几行配置描述 HTTP API,就能立即将其变成任何 Agent 都能调用的 MCP 工具——并免费托管在 Cloudflare 边缘网络上。
Claude / Cursor / any MCP client
│ MCP (Streamable HTTP, JSON-RPC)
▼
┌──────────────────────────┐
│ web2mcp (CF Worker) │ connectors/*.js or CONNECTORS_JSON
└──────────────────────────┘
│ │ │
Wikipedia GitHub any REST API / web page …
立即试用
公开演示已运行,地址为 **https://web2mcp.cwei59969.workers.dev**(工具列表),MCP 端点地址为:
https://web2mcp.cwei59969.workers.dev/mcp
将其粘贴到任何支持远程 MCP 服务的客户端中,或者:
curl -s https://web2mcp.cwei59969.workers.dev/mcp -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"weather_forecast","arguments":{"latitude":35.68,"longitude":139.69}}}'
演示受免费套餐的速率限制,且已禁用 reader_read。实际使用请部署自己的实例。
为什么选择它
- 配置,而非代码。 连接器就是一个普通对象:基础 URL、路径、查询参数和参数。无需学习 SDK。
- 零运行时依赖。 约 500 行易读的 JavaScript,10 分钟即可完成审计。
- 输出节省 token。
pick和fields可精简庞大的 JSON 响应,只保留模型需要的内容。 - 免费托管。 运行于 Cloudflare Workers 免费套餐,一键部署。
- 默认安全。 请求仅限访问各连接器的主机,参数会进行类型检查,密钥保留在服务端,并可选用 bearer 身份验证。
- 导入 OpenAPI。 使用一条命令,将任意 OpenAPI 3 规范转换为连接器。
内置连接器(无需 API 密钥)
| 工具 | 功能 |
|---|---|
wikipedia_search、wikipedia_summary | 搜索 Wikipedia、阅读文章摘要 |
hackernews_front_page、hackernews_search | Hacker News 故事 |
geocode_search | 地名 → 坐标(Open-Meteo) |
weather_forecast | 当前天气 + 每日预报(Open-Meteo) |
currency_latest | ECB 汇率(Frankfurter) |
github_search_repos、github_repo | 公开 GitHub 仓库(在 Workers 中设置 GITHUB_TOKEN:共享 IP 会触发 GitHub 的匿名访问限制) |
reader_read | 任意网页 → 清晰的 Markdown(Jina Reader) |
npm_package、npmstats_downloads | npm 软件包信息和每周下载量 |
一键部署自己的实例
点击上方的 Deploy to Cloudflare。Cloudflare 会将此仓库复制到你的 GitHub 账户,要求提供 AUTH_TOKEN(任意足够长的随机字符串,例如 openssl rand -hex 32),然后进行构建和部署。一分钟后,你的服务就会在 https://web2mcp.<your-subdomain>.workers.dev/mcp 上线;此后,你复制仓库中的每次推送都会触发重新部署。Workers 免费套餐已足够使用。
快速开始
git clone https://github.com/charleswei118/web2mcp && cd web2mcp
npm test # unit tests, no install needed (Node 20+)
npm run smoke # calls every built-in tool against the real APIs
npx wrangler dev # local server at http://localhost:8787/mcp
npx wrangler deploy # your own https://web2mcp.<you>.workers.dev/mcp
可选:保护你的端点
npx wrangler secret put AUTH_TOKEN
连接 AI 客户端
Claude Desktop / Cursor / Windsurf(通过 mcp-remote):
{
"mcpServers": {
"web2mcp": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://web2mcp.<you>.workers.dev/mcp",
"--header", "Authorization: Bearer ${WEB2MCP_TOKEN}"],
"env": { "WEB2MCP_TOKEN": "your-token" }
}
}
}
通过 stdio 在本地运行(无需 Cloudflare 账户;连接器相同):
{
"mcpServers": {
"web2mcp": {
"command": "npx",
"args": ["-y", "github:charleswei118/web2mcp"],
"env": { "ENABLED_CONNECTORS": "wikipedia,hackernews,weather" }
}
}
}
也可以使用 Docker:docker build -t web2mcp . && docker run -i --rm web2mcp。环境变量与 Worker 绑定的用法相同(ENABLED_CONNECTORS、CONNECTORS_JSON、MAX_OUTPUT_CHARS、TOOL_MODE=catalog)。
原生支持远程 MCP 服务的客户端(Claude.ai 自定义连接器、ChatGPT 连接器、OpenAI Responses API、Cloudflare AI Playground……)可以直接使用该 URL。使用官方检查器进行测试:
npx @modelcontextprotocol/inspector # transport: Streamable HTTP, URL: .../mcp
编写连接器
创建 connectors/myapi.js,并将其添加到 connectors/index.js:
export default {
name: "openlibrary", // tool names become openlibrary_<tool>
description: "Search books on Open Library.",
baseUrl: "https://openlibrary.org",
headers: { /* "authorization": "Bearer ${MY_API_KEY}" */ },
tools: [
{
name: "search",
description: "Search books by title or author.",
method: "GET", // GET | POST | PUT | PATCH | DELETE
path: "/search.json", // "{arg}" in the path is URL-encoded
query: { q: "{query}", limit: "{limit}" },
params: {
query: { type: "string", required: true, description: "Title or author" },
limit: { type: "integer", minimum: 1, maximum: 20, default: 5 },
},
pick: "docs", // dotted path into the JSON response
fields: ["title", "author=author_name", "year=first_publish_year"],
},
],
};
模板规则:
| 语法 | 含义 |
|---|---|
"{arg}" | 工具参数。作为完整值时会保留其类型;缺失的可选参数会被丢弃。 |
"${SECRET}" | 从 Worker 密钥 / 变量中读取 — 永远不会暴露给模型。 |
"${?SECRET}" | 可选密钥:未设置时会丢弃该值。 |
pick: "a.b.*.c" | 选择响应中的一部分(* 会映射数组;单个值会被视为只有一项的列表)。 |
fields: ["x", "alias=deep.path"] | 仅保留这些字段。 |
limit: 10 | 截断数组。 |
response: "xml" | 先将 XML/Atom/RSS 响应解析为 JSON,以便 pick / fields 对其生效(属性会变成 @name,命名空间前缀会被去除,重复元素会变成数组)。也可以使用 "json"、"text"(原始正文)或 "auto"(默认值)。 |
**无代码选项:**将连接器放入 CONNECTORS_JSON 密钥(一个包含相同对象的 JSON 数组),无需修改代码即可启用。使用 ENABLED_CONNECTORS="wikipedia,weather" 仅公开部分连接器。
根据 OpenAPI 规范生成
node scripts/openapi2connector.js https://petstore3.swagger.io/api/v3/openapi.json petstore --only GET > connectors/petstore.js
目录模式:665 个端点,2 个工具
将每个端点都作为独立工具公开会占用模型的大量上下文。在目录模式下,web2mcp 只公开两个工具:
search_api— 按关键词查找操作;返回其名称和参数架构call_api— 根据操作名称和参数对象运行操作
以下数据是使用 GitHub 完整 REST OpenAPI 规范(仅 GET 操作,通过 scripts/openapi2connector.js 转换)测得的:
| 模式 | tools/list 中的工具数 | 约占用上下文 |
|---|---|---|
| 默认(每个端点一个工具) | 665 | ~147,000 个 token |
| 目录模式 | 2 | ~300 个 token |
可通过 /mcp?mode=catalog 为单个请求启用,也可通过变量 TOOL_MODE = "catalog" 为整个部署启用(?mode=tools 可切回)。可在演示环境中试用:https://web2mcp.cwei59969.workers.dev/mcp?mode=catalog。
端点
| 路径 | |
|---|---|
POST /mcp | MCP Streamable HTTP 端点(JSON 响应,支持批处理) |
POST /mcp?mode=catalog | 同上,目录模式(search_api + call_api) |
GET / | 人类可读的工具列表 |
GET /tools | JSON 格式的工具列表 |
GET /health | 健康检查 |
支持的 MCP 方法:initialize、ping、tools/list、tools/call,以及空的 resources/list 和 prompts/list。协议版本:2025-06-18、2025-03-26、2024-11-05。
路线图
- 目录模式(
search_api+call_api)— v0.2 - 在运行时从 URL 加载 OpenAPI 规范
- 一键“部署到 Cloudflare” — v0.2
- HTML 抓取连接器(通过
HTMLRewriter使用 CSS 选择器) - 按工具设置速率限制和 KV 缓存
- 为需要用户账户的连接器添加 OAuth
- 连接器注册表:以 JSON 文件的形式分享连接器
- Durable Objects 上的 Agent-to-agent(A2A)聊天室
非常欢迎提交包含新连接器的 PR — 请参阅 CONTRIBUTING.md。
负责任地使用
仅连接你获准使用的 API 和网站。遵守各服务的条款、robots 规则和速率限制,并将凭证保存在 Worker 密钥中。
许可证
如果 web2mcp 为你节省了时间,请给仓库点个 ⭐ — 这有助于其他人发现它。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。