MCP服务器

基于Cloudflare Workers和Xano数据库集成的远程MCP服务器,提供工具管理、会话跟踪和OAuth功能,支持最新的Streamable HTTP传输协议。

  • by roboulos
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 roboulos/remote-mcp-server

使用说明

Snappy MCP服务器与Xano集成

基于Cloudflare Workers构建的远程MCP服务器,集成了Xano数据库,用于工具管理、会话跟踪和OAuth。现在完全支持最新的Streamable HTTP传输协议(2024-11-05)。

在当地发展

# clone the repository
git clone https://github.com/roboulos/remote-mcp-server.git

# install dependencies
cd remote-mcp-server
npm install

# Configure Xano API Key
# Add your Xano API key to wrangler.jsonc in the XANO_API_KEY variable

# run locally
npm run dev

你应该能够打开 http://localhost:8787/ 在您的浏览器中

连接到您的MCP服务器

使用MCP检查器(传统)

要使用旧的SSE传输探索新的MCP API,您可以使用 MCP检查员.

  • 从以下内容开始 npx @modelcontextprotocol/inspector
  • 在检查员内部,将“传输类型”切换为 SSE 并进入 http://localhost:8787/sse 作为要连接的MCP服务器的URL,然后单击“连接”
  • 您将导航到(模拟)用户/密码登录屏幕。输入任何电子邮件并通过登录。
  • 您应该被重定向回MCP检查器,现在您可以列出并调用任何已定义的工具!

使用Workers AI游乐场(流式HTTP)

要使用最新的Streamable HTTP传输协议进行测试:

  1. 访问 工人AI游乐场
  2. 当系统提示您连接到MCP服务器时,请输入您的端点URL:
    https://remote-mcp-server.robertjboulos.workers.dev/mcp
    
    或用于本地测试:
    http://localhost:8787/mcp
    
  3. 在提示时提供身份验证凭据:
    • auth_token:您的Xano身份验证令牌
    • user_id:您的Xano用户ID
  4. 游乐场将使用新协议自动处理会话管理

将Claude Desktop连接到本地MCP服务器

传统苏格兰和南方能源公司运输

要使用旧的SSE传输进行连接,请按照以下步骤操作 Anthropic的快速入门 在Claude Desktop中,转到“设置”>“开发人员”>“编辑配置”以查找您的配置文件。

在文本编辑器中打开该文件,并将其替换为以下配置:

{
  "mcpServers": {
    "math": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:8787/sse"
      ]
    }
  }
}

这将运行一个本地代理,并让Claude通过HTTP与您的MCP服务器通信。

流式HTTP传输(推荐)

要在Claude Desktop中使用更新、更高效的Streamable HTTP传输,请更新您的配置以使用 /mcp 改为端点:

{
  "mcpServers": {
    "xano": {
      "remoteUrl": "http://localhost:8787/mcp",
      "auth": {
        "type": "bearer",
        "token": "YOUR_XANO_AUTH_TOKEN"
      },
      "headers": {
        "x-user-id": "YOUR_USER_ID"
      }
    }
  }
}

替换 YOUR_XANO_AUTH_TOKEN 和 YOUR_USER_ID 凭你的真实证件。

当您打开Claude时,浏览器窗口应该会打开并允许您登录。您应该在右下角看到可用的工具。如果提示正确,克劳德应该要求调用该工具。

Xano集成

此MCP服务器使用Xano作为其后端,用于:

  1. 工具管理:在Xano中定义工具 ____mcp_tools 表,它们将自动注册到MCP服务器中
  2. 会话跟踪:所有MCP会话都在 ___mcp_sessions 具有唯一会话ID的表
  3. OAuth身份验证:OAuth令牌和状态存储在Xano的 ___oauth_tokens 和 ___oauth_states 表格
  4. 日志记录:所有MCP请求都记录在 ___mcp_logs 桌子

流式HTTP实现

此服务器实现了最新的模型上下文协议流式HTTP传输(2024-11-05),具有以下功能:

身份验证方法

服务器支持多种身份验证机制,以实现最大兼容性:

  1. URL参数: ?auth_token=xxx&user_id=yyy (传统方法)
  2. 认证头: Authorization: Bearer xxx 随着 x-user-id 标题(现代方法)
  3. 请求正文:Auth参数可以包含在初始化有效负载中

会话管理

服务器根据最新规范处理会话ID:

  1. 会话创建:服务器为新连接生成唯一的会话ID
  2. 会话跟踪:客户端存储此ID并将其作为以下内容包含在未来的请求中 ?sessionId=xxx
  3. 状态持久性:每个会话在Xano中都保持自己的状态,该状态在请求之间持续存在

协议遵从

实施包括对以下方面的适当支持:

  1. 统一消息端点:支持 /mcp/message 端点模式
  2. 协议头:所有回复都包含适当的标题,如 MCP-Available-Transports
  3. SSE流媒体:增强了对流式响应的SSE支持
  4. 响应格式:具有协议特定扩展的标准JSON-RPC 2.0格式

设置Xano

  1. 使用所需的表创建Xano项目(请参阅数据库模式)
  2. 为以下对象创建API终结点:
    • /api/tools -GET-列出所有工具
    • /api/tools/execute/{tool_name} -POST-执行特定工具
    • /api/sessions -POST-创建新会话
    • /api/sessions/update-activity -PUT-更新会话活动
    • /api/oauth/tokens -POST-存储OAuth令牌
    • /api/oauth/tokens/{user_id}/{provider} -GET-获取OAuth令牌
    • /api/oauth/states -POST-存储OAuth状态
    • /api/oauth/states/{state} -GET-验证OAuth状态
    • /api/logs -POST-记录MCP请求

部署到Cloudflare

  1. npx wrangler kv namespace create OAUTH_KV
  2. 按照指导将kv命名空间ID添加到 wrangler.jsonc
  3. 将您的Xano API密钥添加到 XANO_API_KEY 变量in wrangler.jsonc
  4. npm run deploy

从远程MCP客户端调用新部署的远程MCP服务器

就像你在上面的“本地开发”中所做的那样,运行MCP检查器:

npx @modelcontextprotocol/inspector@latest

然后输入 workers.dev URL(例如: worker-name.account-name.workers.dev/sse)将检查器中的Worker设置为要连接的MCP服务器的URL,然后单击“连接”。

现在,您已从远程MCP客户端连接到MCP服务器。

将Claude Desktop连接到远程MCP服务器

更新Claude配置文件以指向您的 workers.dev URL(例如: worker-name.account-name.workers.dev/sse)并重新启动克劳德

{
  "mcpServers": {
    "math": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://worker-name.account-name.workers.dev/sse"
      ]
    }
  }
}

调试

如果出现任何问题,重启Claude或尝试直接连接到您的 MCP服务器在命令行上使用以下命令。

npx mcp-remote http://localhost:8787/sse

在某些罕见的情况下,清除添加到的文件可能会有所帮助 ~/.mcp-auth

rm -rf ~/.mcp-auth