mcpField
W
web2mcp

web2mcp

远程服务
web2mcp.cwei59969.workers.dev开发工具52 天前更新

关于 web2mcp

web2mcp 是可配置的网关,可将网站和 REST API 转为 MCP 工具。它面向希望通过 Cloudflare Worker 或本地连接器向 Agent 开放 HTTP 服务的开发者。

主要功能

  1. 01通过配置定义 API 连接器
  2. 02转换 OpenAPI 3 规范
  3. 03筛选和精简响应字段
  4. 04以目录模式呈现大型 API
  5. 05可选 Bearer 身份验证

适用场景

  1. 01向 MCP 客户端开放 REST API
  2. 02将 OpenAPI 规范转换为工具
  3. 03精简模型接收的大型 API 响应

MCP 相关

它通过 Streamable HTTP 或 stdio 向 MCP 客户端提供工具,支持 tools/list 和 tools/call 等方法。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://web2mcp.cwei59969.workers.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

web2mcp

将任意网站或 REST API 转换为 MCP 工具——只需一个轻量的 Cloudflare Worker,零依赖。

English · 简体中文

CI License: MIT Runtime deps: 0 MCP

Deploy to Cloudflare

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_searchHacker News 故事
geocode_search地名 → 坐标(Open-Meteo)
weather_forecast当前天气 + 每日预报(Open-Meteo)
currency_latestECB 汇率(Frankfurter)
github_search_repos、github_repo公开 GitHub 仓库(在 Workers 中设置 GITHUB_TOKEN:共享 IP 会触发 GitHub 的匿名访问限制)
reader_read任意网页 → 清晰的 Markdown(Jina Reader)
npm_package、npmstats_downloadsnpm 软件包信息和每周下载量

一键部署自己的实例

点击上方的 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 /mcpMCP Streamable HTTP 端点(JSON 响应,支持批处理)
POST /mcp?mode=catalog同上,目录模式(search_api + call_api)
GET /人类可读的工具列表
GET /toolsJSON 格式的工具列表
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 密钥中。

许可证

MIT

如果 web2mcp 为你节省了时间,请给仓库点个 ⭐ — 这有助于其他人发现它。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。