一个简单的 Ruby on Rails 应用程序,演示如何集成并使用 ActionMCP 宝石。该宝石的源代码可以在 GitHub 上找到:https://github.com/seuros/action_mcp。
此应用程序展示了如何在 Rails 项目中定义和使用 MCP 组件。
.ruby-version 文件以获取推荐版本)git clone https://github.com/seuros/mcp_rails_template.git
cd mcp_rails_template
bin/setup
复制提供的 .env.example 文件:
cp .env.example .env
编辑 .env 并根据您的设置填写必要的值(特别是像 fetch_weather_by_location_tool 这样的工具所需的任何 API 密钥)。
您可以使用 Docker 快速启动一个临时的 PostgreSQL 实例:
make up
这将在端口 5466 启动 PostgreSQL。
或者,通过编辑 config/database.yml 来配置您自己的 PostgreSQL 数据库。
启动 Rails 服务器:
bin/rails s
应用程序将在 http://localhost:3002 可用。
ActionMCP 引擎安装在 /action_mcp。您可以通过修改应用程序中的路由来自定义安装位置。
app/mcp/)此应用程序包括几个 ActionMCP 组件示例:
app/mcp/prompts/)epic_adventure_prompt.rb:基于提供的英雄名字和冒险类型(奇幻、科幻、神秘)生成一段简短的叙述冒险故事。它可以可选地包含一个占位符图像数据字符串。app/mcp/resource_templates/)gemfile_template.rb:提供对项目 Gemfile 依赖项作为 JSON 资源的访问。它使用 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 宝石的 API 分析提供的 Ruby 代码片段。它报告检测到的任何风格或代码质量问题,包括规则名称、消息、行号和列号。ruby_code_analyzer_tool.rb:对项目目录内的 Ruby 代码进行基本的静态分析。它通过解析 .rb 文件来索引类、模块和方法。它可以查询以列出所有发现的类、模块或方法,或获取特定类/模块(constant)或方法(method_details)的详细信息(包括源代码片段)。要交互式地测试和检查 MCP 功能,您可以使用 MCP 检查器:
npx @modelcontextprotocol/inspector --url http://localhost:3002/action_mcp
确保您的 Rails 服务器 (bin/rails s) 在执行检查器命令之前正在运行。
欢迎贡献!打开问题或提交拉取请求以帮助改进这个示例。
祝编码愉快! ✨🚀