项目简介

该仓库是一个基于 Ruby on Rails 构建的 MCP (Model Context Protocol) 服务器启动模板。它为开发集成 Claude AI 等大型语言模型 (LLM) 的应用提供了一个快速启动基础。模板集成了用户认证、OAuth2 服务提供者、MCP 标准接口(用于托管资源和工具)以及支付处理功能,旨在帮助开发者构建安全、功能丰富且可扩展的 AI 应用后端。

主要功能点

  • 用户认证: 完整的用户注册和登录系统。
  • OAuth2 服务: 支持 OAuth2 授权流程,允许外部 AI 应用安全地访问用户数据。
  • MCP 集成: 通过标准化接口向 LLM 提供应用内的资源(数据)和工具(功能)。
  • 支付处理: 集成 Stripe 支持,可以为特定的 MCP 工具实现付费使用或订阅模式。
  • 现代技术栈: 基于 Rails 8、Tailwind CSS 和 Hotwire 构建。

安装步骤

  1. 克隆仓库: 打开终端,执行以下命令将仓库克隆到本地:
    git clone https://github.com/f/mcp-startup-boilerplate mcp-startup
    cd mcp-startup
  2. 安装依赖: 使用 Bundler 安装 Ruby gems,使用 Yarn 安装前端依赖:
    bundle install
    yarn install
  3. 设置数据库: 创建数据库并运行迁移:
    rails db:create db:migrate db:seed
  4. 配置支付 (可选): 如果需要使用支付功能,请设置 Stripe API 密钥。可以通过环境变量配置:
    export STRIPE_PUBLISHABLE_KEY="pk_test_your_key"
    export STRIPE_SECRET_KEY="sk_test_your_key"
    export STRIPE_WEBHOOK_SECRET="whsec_your_webhook_key"
  5. 启动服务器: 启动 Rails 应用服务器:
    rails server
    应用将在 'http://localhost:3000' 运行。

MCP 客户端配置 (例如 Claude)

要将此服务器连接到 MCP 客户端(如 Claude Desktop),您需要在客户端的配置文件中添加 MCP 服务器配置。配置信息通常是 JSON 格式,包含服务器名称、启动命令和参数。

  • 服务器名称: 您可以为服务器指定一个唯一的名称,例如 'my-rails-mcp-server'。
  • 命令 (command): 用于启动或连接到服务器的命令行程序。通常使用 'npx mcp-remote' 来桥接 LLM 客户端的标准输入/输出与服务器的 HTTP/SSE 接口。
  • 参数 (args): 传递给命令的参数,通常是 MCP 服务器的 SSE 端点 URL。

示例配置(添加到 MCP 客户端的配置文件中,例如 'claude_desktop_config.json' 的 '"mcpServers"' 部分):

"my-rails-mcp-server": {
  // 使用 npx mcp-remote 工具连接到服务器的 SSE 端点
  "command": "npx",
  "args": [
    "mcp-remote",
    "http://your-server-url/mcp/sse" 
    // 将 http://your-server-url 替换为您实际的应用 URL (本地开发通常是 http://localhost:3000)
    // /mcp/sse 是服务器默认的 MCP SSE 通信端点
  ]
}

请注意,'your-server-url' 需要替换为您实际运行 Rails 应用的地址和端口。如果是通过内网穿透(如 ngrok)暴露服务,则使用穿透后的 URL。

基本使用方法

  • 定义新的 MCP 工具: 在 'app/tools/' 目录下创建 Ruby 文件,继承自 'ApplicationTool' 或 'PaidTool'。定义 'description'、'arguments'(使用 Dry-rb 格式)和 'call' 方法来实现工具逻辑。您可以在 'call' 方法中通过 'current_user' 访问当前认证的用户。
  • 定义新的 MCP 资源: 在 'app/resources/' 目录下创建 Ruby 文件,继承自 'ApplicationResource'。定义 'uri'、'resource_name'、'description'、'mime_type' 和 'content' 方法来提供资源数据。您可以在 'content' 方法中通过 'current_user' 访问当前认证的用户。
  • 集成支付到工具: 继承 'PaidTool' 类,重写 'price_cents' 定义价格,并在 'call' 方法开始处调用 'charge_user'。

信息

分类

AI与计算