动作MCP示例🚀
一个简单的Ruby on Rails应用程序,演示如何集成和使用 行动MCP 宝石。gem源代码可以在GitHub上找到,网址为 .
此应用程序展示了如何在Rails项目中定义和使用MCP组件。
______________________________________________________________________
需求
- Ruby(参见
.ruby-version对于推荐版本) - PostgreSQL(或Docker)
______________________________________________________________________
入门指南
1.克隆和设置
git clone https://github.com/seuros/mcp_rails_template.git
cd mcp_rails_template
bin/setup2.环境配置
复制提供的 .env.example 文件:
cp .env.example .env编辑 .env 并根据您的设置填写必要的值(尤其是像这样的工具所需的任何API密钥 fetch_weather_by_location_tool).
3.数据库设置
您可以使用Docker快速启动一个临时PostgreSQL实例:
make up这将在端口上启动PostgreSQL 5466.
或者,通过编辑配置自己的PostgreSQL数据库 config/database.yml.
4.运行应用程序
启动Rails服务器:
bin/rails s该应用程序将在 http://localhost:3002.
______________________________________________________________________
ActionMCP服务器
ActionMCP作为 独立服务器 在港口 62770 (通过 mcp.ru).Nginx代理 /mcp 请求到此服务器。
Client → nginx:8080/mcp → ActionMCP:62770______________________________________________________________________
认证
此应用程序通过以下方式使用基于JWT的身份验证 ApplicationGateway 类。
测试用户(来自夹具)
| 电子邮件 | 密码 | 角色 |
|---|---|---|
| test@example.com | 密码123 | 测试用户 |
| admin@example.com | 密码123 | 管理员用户 |
装载夹具
bin/rails db:fixtures:load FIXTURES=users生成JWT令牌
# In Rails console
user = User.find_by(email: 'test@example.com')
token = user.generate_jwt(expires_in: 10.years) # Long-lived for demoMCP客户端配置
A. .mcp.json 文件提供了一个预配置的长期令牌:
{
"mcpServers": {
"mcp_rails_template": {
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "Bearer "
}
}
}
}或者用curl手动测试:
curl -H "Authorization: Bearer " http://localhost:8080/mcp网关配置
网关已在中配置 config/mcp.yml:
development:
authentication: ["jwt"]
gateway_class: "ApplicationGateway"在工具中访问用户
class MyTool < ApplicationMCPTool
def perform
render text: "Hello #{current_user.name}!"
end
end______________________________________________________________________
MCP组件(app/mcp/)
此应用程序包括ActionMCP组件的几个示例:
提示(app/mcp/prompts/)
epic_adventure_prompt.rb:根据提供的英雄姓名和冒险类型(幻想、科幻、神秘)生成一个简短的叙事冒险故事。它可以选择性地包含一个占位符图像数据串。
资源模板(app/mcp/resource_templates/)
gemfile_template.rb:以JSON资源的形式提供对项目Gemfile依赖关系的访问。它使用Bundler根据指定的环境获取宝石(production,test,development,或default).资源URI遵循以下模式gemfile://{environment}.
工具(app/mcp/tools/)
工具定义了语言模型可以请求执行的特定操作。
dependency_info_tool.rb:使用Bundler从中检索依赖关系信息Gemfile和Gemfile.lock。它还检查是否存在.gemspec运行时依赖关系的文件。它为输出单独的JSON资源production,test,以及runtime依赖性。fetch_weather_by_location_tool.rb:从Open-Meteo API获取天气预报数据(https://api.open-meteo.com)基于所提供的纬度和经度坐标。它返回来自API的原始JSON响应。rubocop_tool.rb:使用RuboCop gem的API分析提供的Ruby代码片段。它报告任何检测到的样式或代码质量违规,包括规则名称、消息、行号和列号。ruby_code_analyzer_tool.rb:对项目目录中的Ruby代码执行基本的静态分析。它通过解析对类、模块和方法进行索引.rb文件夹。可以查询它以列出所有找到的类、模块或方法,或获取特定类/模块的详细信息(包括源代码片段)(constant)或方法(method_details).
______________________________________________________________________
用法
要交互式测试和检查MCP功能,您可以使用MCP检查器:
npx @modelcontextprotocol/inspector --url http://localhost:8080/mcp确保Docker正在运行(docker compose up)在执行检查器命令之前。
______________________________________________________________________
贡献
请随时贡献!打开问题或提交pull请求以帮助改进此示例。
______________________________________________________________________
快乐编码! ✨🚀

