项目简介
该仓库是一个基于 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 构建。
安装步骤
- 克隆仓库:
打开终端,执行以下命令将仓库克隆到本地:
git clone https://github.com/f/mcp-startup-boilerplate mcp-startup cd mcp-startup - 安装依赖:
使用 Bundler 安装 Ruby gems,使用 Yarn 安装前端依赖:
bundle install yarn install - 设置数据库:
创建数据库并运行迁移:
rails db:create db:migrate db:seed - 配置支付 (可选):
如果需要使用支付功能,请设置 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" - 启动服务器:
启动 Rails 应用服务器:
应用将在 'http://localhost:3000' 运行。rails server
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与计算