mcpField
S
Snappy MCP Server with Xano Integration

Snappy MCP Server with Xano Integration

本地服务
github.com/roboulos开发工具078 周前更新

关于 Snappy MCP Server with Xano Integration

这是一个运行于 Cloudflare Workers 的远程 MCP 服务,使用 Xano 管理工具定义、会话状态、OAuth 数据和请求日志。它适用于需要可配置工具的部署,并支持 Streamable HTTP 与 SSE 传输。

主要功能

  1. 01部署到 Cloudflare Workers
  2. 02通过 Xano 管理工具
  3. 03跟踪会话并持久化状态
  4. 04存储 OAuth 令牌和状态
  5. 05支持 Streamable HTTP 与 SSE

适用场景

  1. 01通过 Xano 注册和管理工具
  2. 02跨请求跟踪 MCP 会话
  3. 03通过 HTTP 连接远程 MCP 客户端
  4. 04保存 OAuth 数据和请求日志

MCP 相关

向 MCP 客户端公开在 Xano 中配置的工具,并支持 Streamable HTTP 和 SSE 连接。它处理身份验证、会话 ID 和持久化会话状态。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"remote-mcp-server-roboulos": {
"command": "npx",
"args": [
"-y",
"mcp-remote"
]
}
}
}
启动命令npx -y mcp-remote

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-remote

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

集成 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 传输协议进行测试:

  1. 访问 Workers AI Playground
  2. 系统提示连接 MCP 服务时,输入你的端点 URL:
    https://remote-mcp-server.robertjboulos.workers.dev/mcp
    
    或者进行本地测试:
    http://localhost:8787/mcp
    
  3. 系统提示时,提供身份验证凭据:
    • auth_token:你的 Xano 身份验证令牌
    • user_id:你的 Xano 用户 ID
  4. Playground 将使用新协议自动处理会话管理
使用上述配置的 MCP Inspector
工具调用后的 MCP Inspector

将 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 就会请求调用工具。

点击锤子图标可显示可用工具列表
Claude 通过调用 MCP 加法工具回答提示词“I seem to have lost my calculator and have run out of fingers. Could you use the math tool to add 23 and 19?”

Xano 集成

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

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

Streamable HTTP 实现

此服务实现了最新的 Model Context Protocol Streamable HTTP 传输协议(2024-11-05),具备以下功能:

身份验证方法

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

  1. URL 参数:?auth_token=xxx&user_id=yyy(旧版方法)
  2. Authorization 标头:Authorization: Bearer xxx,并搭配 x-user-id 标头(现代方法)
  3. 请求正文:可在初始化负载中包含身份验证参数
会话管理

服务器根据最新规范处理会话 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 密钥添加到 wrangler.jsonc 中的 XANO_API_KEY 变量
  4. 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

评论

支持 Markdown

第一次接触 MCP?

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

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