项目简介
'cf-mcp' 是一个部署在 Cloudflare Workers 上的轻量级 MCP 服务器实现,它将一个简单的产品管理 REST API 转换并暴露为 MCP 工具。这使得 LLM 客户端能够通过标准化的 Model Context Protocol 调用这些后端功能,例如查询产品、创建订单等,同时利用 Cloudflare Workers 的全球边缘网络优势,提供低延迟的服务。
主要功能点
- REST API 包装为 LLM 工具: 自动将 REST API 的 CRUD 操作(如列出、获取、创建、更新、删除产品)转换为 LLM 可调用的 MCP 工具,并提供详细的描述和参数定义。
- JSON-RPC 通信支持: 完全支持 MCP 协议要求的 JSON-RPC 格式请求,包括工具列表 ('tools/list')、工具调用 ('tools/call') 和服务器初始化 ('initialize')。
- 边缘网络部署: 利用 Cloudflare Workers 的无服务器架构,在 Cloudflare 的全球边缘网络部署服务,实现高性能和低延迟的响应。
- 会话管理基础: 在服务器初始化响应中提供 'Mcp-Session-Id',为未来支持有状态的 LLM 会话管理奠定基础。
- 统一代码库设计: REST API 和 MCP 协议处理逻辑共享核心业务代码,易于开发、维护和功能扩展。
安装步骤
- 准备环境: 确保您的系统已安装 Node.js (推荐 LTS 版本) 和 npm。
- 克隆仓库: 打开您的命令行工具,克隆 'cf-mcp' 仓库到本地。
git clone https://github.com/HeyGarrison/cf-mcp.git cd cf-mcp - 安装依赖: 进入项目目录后,安装所有必要的 Node.js 依赖。
npm install - 本地运行: 在本地启动开发服务器,进行测试和功能验证。
服务器将在 'http://localhost:8787' 启动,您可以在此地址访问 REST API 和 MCP 端点。npm run dev - 部署到 Cloudflare (可选): 如果您希望将服务器部署到 Cloudflare Workers,需要拥有 Cloudflare 账户并配置好 Wrangler CLI 工具。
部署成功后,您的 MCP 服务器将通过 Cloudflare 的边缘网络提供服务。npm run deploy
服务器配置
MCP 客户端连接此服务器时,需要提供以下启动信息。请注意,这里的 'command' 和 'args' 主要用于本地开发环境的启动。当服务器部署到 Cloudflare Workers 后,客户端将直接通过 HTTP POST 访问其公开的 URL,而无需在本地执行启动命令。
{ "server_name": "cf-mcp-server", "description": "一个运行在Cloudflare Workers上的MCP服务器,提供产品管理工具。部署后通过HTTP POST访问。", "command": "npm", "args": ["run", "dev"], "env": {}, "endpoint_url": "http://localhost:8787/mcp" }
- 'server_name': 此 MCP 服务器的唯一标识符。
- 'description': 对服务器功能的简要描述。
- 'command': 在本地启动此 MCP 服务器的命令行主程序(例如 'npm')。
- 'args': 启动命令所需的参数列表(例如 '["run", "dev"]')。
- 'env': 启动服务器时可能需要的环境变量(本示例中暂无特定环境变量)。
- 'endpoint_url': MCP 服务的访问地址。客户端将向此 URL 发送所有 JSON-RPC 请求。对于本地运行的服务,通常是 'http://localhost:8787/mcp'。
基本使用方法
一旦服务器在本地 ('http://localhost:8787') 运行,您可以通过向 '/mcp' 端点发送标准 JSON-RPC 请求来与之交互。
-
获取服务器支持的所有工具列表:
curl -X POST http://localhost:8787/mcp \ -H "Content-Type: application/json" \ -d '{"method":"tools/list","params":{}, "id": 1}' -
调用 'get_product' 工具查询 ID 为 '1' 的产品详情:
curl -X POST http://localhost:8787/mcp \ -H "Content-Type: application/json" \ -d '{"method":"tools/call","params":{"name":"get_product","arguments":{"id":"1"}}, "id": 2}' -
调用 'create_product' 工具创建一个新产品:
curl -X POST http://localhost:8787/mcp \ -H "Content-Type: application/json" \ -d '{"method":"tools/call","params":{"name":"create_product","arguments":{"name":"Smartwatch","price":199,"description":"Fitness tracker and notifications","category":"Electronics"}}, "id": 3}'
这些请求将返回 JSON 格式的响应,其中包含工具执行的结果或错误信息。
信息
分类
网页与API