关于 Snappy MCP Server with Xano Integration
这是一个运行于 Cloudflare Workers 的远程 MCP 服务,使用 Xano 管理工具定义、会话状态、OAuth 数据和请求日志。它适用于需要可配置工具的部署,并支持 Streamable HTTP 与 SSE 传输。
主要功能
- 01部署到 Cloudflare Workers
- 02通过 Xano 管理工具
- 03跟踪会话并持久化状态
- 04存储 OAuth 令牌和状态
- 05支持 Streamable HTTP 与 SSE
适用场景
- 01通过 Xano 注册和管理工具
- 02跨请求跟踪 MCP 会话
- 03通过 HTTP 连接远程 MCP 客户端
- 04保存 OAuth 数据和请求日志
MCP 相关
向 MCP 客户端公开在 Xano 中配置的工具,并支持 Streamable HTTP 和 SSE 连接。它处理身份验证、会话 ID 和持久化会话状态。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
集成 Xano 的 Snappy MCP 服务
基于 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 Inspector(旧版)
要通过较旧的 SSE 传输协议探索新的 MCP API,可以使用 MCP Inspector。
- 运行
npx @modelcontextprotocol/inspector启动它 - 在 Inspector 中,将 Transport Type 切换为
SSE,并输入http://localhost:8787/sse作为要连接的 MCP 服务 URL,然后点击“Connect” - 你将进入一个(模拟的)用户名/密码登录页面。输入任意邮箱和密码即可登录。
- 你应该会被重定向回 MCP Inspector,现在可以列出并调用任何已定义的工具了!
使用 Workers AI Playground(Streamable HTTP)
要使用最新的 Streamable HTTP 传输协议进行测试:
- 访问 Workers AI Playground
- 系统提示连接 MCP 服务时,输入你的端点 URL:
或者进行本地测试:https://remote-mcp-server.robertjboulos.workers.dev/mcphttp://localhost:8787/mcp - 系统提示时,提供身份验证凭据:
- auth_token:你的 Xano 身份验证令牌
- user_id:你的 Xano 用户 ID
- Playground 将使用新协议自动处理会话管理
将 Claude Desktop 连接到本地 MCP 服务
旧版 SSE 传输协议
要使用较旧的 SSE 传输协议进行连接,请按照 Anthropic 的快速入门指南操作,然后在 Claude Desktop 中前往 Settings > Developer > Edit Config,找到你的配置文件。
在文本编辑器中打开该文件,并将内容替换为以下配置:
{
"mcpServers": {
"math": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8787/sse"
]
}
}
}
这将运行一个本地代理,让 Claude 通过 HTTP 与你的 MCP 服务通信。
Streamable 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 时,浏览器窗口应该会打开并允许你登录。右下角应该会显示可用工具。只要提示词合适,Claude 就会请求调用工具。
Xano 集成
此 MCP 服务使用 Xano 作为后端,用于:
- 工具管理:在 Xano 的
____mcp_tools表中定义工具,它们将自动注册到 MCP 服务中 - 会话跟踪:所有 MCP 会话都使用唯一会话 ID 记录在
___mcp_sessions表中 - OAuth 身份验证:OAuth 令牌和状态存储在 Xano 的
___oauth_tokens和___oauth_states表中 - 日志记录:所有 MCP 请求都记录在
___mcp_logs表中
Streamable HTTP 实现
此服务实现了最新的 Model Context Protocol Streamable HTTP 传输协议(2024-11-05),具备以下功能:
身份验证方法
服务器支持多种身份验证机制,以实现最大兼容性:
- URL 参数:
?auth_token=xxx&user_id=yyy(旧版方法) - Authorization 标头:
Authorization: Bearer xxx,并搭配x-user-id标头(现代方法) - 请求正文:可在初始化负载中包含身份验证参数
会话管理
服务器根据最新规范处理会话 ID:
- 创建会话:服务器为新连接生成唯一的会话 ID
- 跟踪会话:客户端存储此 ID,并在后续请求中通过
?sessionId=xxx传入 - 状态持久化:每个会话在 Xano 中维护自己的状态,该状态会在请求之间持续保存
协议合规性
此实现包含对以下内容的适当支持:
- 统一消息端点:支持
/mcp/message端点模式 - 协议标头:所有响应都包含适当的标头,例如
MCP-Available-Transports - SSE 流式传输:增强对流式响应的 SSE 支持
- 响应格式:标准 JSON-RPC 2.0 格式,并包含协议专用扩展
设置 Xano
- 创建一个包含所需表的 Xano 项目(请参阅数据库架构)
- 创建以下 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
npx wrangler kv namespace create OAUTH_KV- 按照说明将 kv 命名空间 ID 添加到
wrangler.jsonc - 将 Xano API 密钥添加到
wrangler.jsonc中的XANO_API_KEY变量 npm run deploy
从远程 MCP 客户端调用新部署的远程 MCP 服务
和上文“本地开发”中的操作一样,运行 MCP 检查器:
npx @modelcontextprotocol/inspector@latest
然后在检查器中,将 Worker 的 workers.dev URL(例如:worker-name.account-name.workers.dev/sse)输入为要连接的 MCP 服务 URL,并点击“Connect”。
现在,你已从远程 MCP 客户端连接到 MCP 服务。
将 Claude Desktop 连接到远程 MCP 服务
更新 Claude 配置文件,使其指向你的 workers.dev URL(例如:worker-name.account-name.workers.dev/sse),然后重启 Claude。
{
"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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。