使用说明

项目简介

本项目是一个基于Cloudflare Durable Objects的MCP (Model Context Protocol) 服务器的概念验证实现。它允许LLM客户端通过标准的MCP协议,经由WebSocket连接访问服务器提供的资源、工具和Prompt模板。项目还包含一个代理客户端,用于桥接Stdio与WebSocket,方便本地测试和与MCP Inspector等工具集成。

主要功能点

  • MCP服务器核心功能: 实现了资源 (Resources) 的托管和访问、工具 (Tools) 的注册和执行、以及Prompt模板 (Prompts) 的定义和渲染,符合MCP服务器的核心定义。
  • Cloudflare Durable Objects: 利用Cloudflare Durable Objects构建,提供可扩展和持久化的服务器运行环境。
  • WebSocket通信: 使用WebSocket协议与MCP客户端进行实时双向通信。
  • Stdio代理客户端: 提供了一个基于Stdio的代理客户端,允许开发者在本地使用MCP Inspector等工具,通过Stdio与远端WebSocket服务器交互。
  • 示例资源、工具和Prompt: 内置了名为 "echo" 的示例资源、工具和Prompt,方便用户快速测试和理解MCP服务器的功能。

安装步骤

  1. 环境准备: 确保已安装Node.js和npm,并已安装和配置Cloudflare 'wrangler' CLI 工具,且已关联Cloudflare账号。
  2. 克隆仓库: 在本地克隆GitHub仓库 'git clone https://github.com/gingerhendrix/cf-mcp-durable-object.git'
  3. 进入目录: 'cd cf-mcp-durable-object'
  4. 安装依赖: 运行 'npm install' 安装项目依赖。
  5. 部署到Cloudflare: 运行 'npm run deploy' 将Durable Object部署到您的Cloudflare Workers账号。首次部署可能需要配置 'wrangler.toml' 文件。部署成功后,会得到一个Durable Object的WebSocket URL。

服务器配置

MCP客户端需要配置以下信息以连接到此MCP服务器。以下是使用项目自带代理客户端的配置示例(JSON格式):

{
  "serverName": "cf-mcp-durable-object",
  "command": "npx",
  "args": [
    "-y",
    "tsx",
    "src/client.ts",
    "wss://<YOUR_DURABLE_OBJECT_URL>"  // 将 <YOUR_DURABLE_OBJECT_URL> 替换为部署后获得的WebSocket URL
  ]
}

注意: 请将 '<YOUR_DURABLE_OBJECT_URL>' 替换为您部署后 Cloudflare 提供的实际 WebSocket URL。此配置适用于通过项目提供的 'src/client.ts' 代理连接服务器。如果MCP客户端支持直接WebSocket连接,则可以直接使用Durable Object的WebSocket URL进行连接,无需Stdio代理。

基本使用方法

  1. 启动代理客户端 (如果需要): 如果您需要使用Stdio方式连接MCP服务器(例如配合MCP Inspector),请根据“服务器配置”中的 'args' 启动代理客户端,将 '<YOUR_DURABLE_OBJECT_URL>' 替换为您的URL。例如: 'npx -y tsx src/client.ts wss://my-durable-object.foo.workers.dev'
  2. 使用MCP客户端连接: 使用MCP客户端工具(如 '@modelcontextprotocol/inspector')连接到MCP服务器。如果使用代理客户端,则MCP客户端连接到Stdio。如果直接使用WebSocket连接,则MCP客户端连接到Durable Object的WebSocket URL。
    • 例如,使用MCP Inspector 通过代理客户端连接: 'npx -y @modelcontextprotocol/inspector npx -y tsx src/client.ts wss://...'
  3. 测试示例功能: 通过MCP客户端发送MCP请求,测试 "echo" 资源 (例如: 'mcp://echo/test_message')、工具 (例如: '{"method": "tool/invoke", "params": {"tool": "echo", "parameters": {"message": "工具测试信息"}}}') 和 Prompt (例如: '{"method": "prompt/render", "params": {"prompt": "echo", "parameters": {"message": "Prompt测试信息"}}}'),验证服务器功能。

信息

分类

开发者工具