mcpField
A
Action MCP Example 🚀

Action MCP Example 🚀

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

关于 Action MCP Example 🚀

Action MCP Example 是一个基于 Ruby on Rails 的 MCP 服务示例模板,演示如何使用 ActionMCP gem 定义工具、提示词与资源。它适合希望在 Rails 项目中构建 MCP 服务的开发者。

主要功能

  1. 01基于 ActionMCP gem 的 Rails 模板
  2. 02JWT 认证与网关配置
  3. 03天气查询与依赖信息等示例工具
  4. 04Epic 冒险提示词与 Gemfile 资源模板

适用场景

  1. 01学习如何在 Rails 项目中定义 MCP 组件
  2. 02基于模板搭建带 JWT 认证的 MCP 服务
  3. 03使用 MCP Inspector 调试本地 MCP 端点

MCP 相关

该项目是一个 MCP 服务,通过 /mcp 端点向 MCP 客户端暴露工具、提示词和资源。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"mcp_rails_template": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
启动命令npx -y @modelcontextprotocol/inspector

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

安装包
npm@modelcontextprotocol/inspector

工具

还没有获取到工具列表

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

详细介绍

Action MCP 示例 🚀

一个简单的 Ruby on Rails 应用,演示如何集成和使用 ActionMCP gem。你可以在 GitHub 上的 https://github.com/seuros/mcp 找到该 gem 的源代码。

此应用展示了如何在 Rails 项目中定义和使用 MCP 组件。


要求

  • Ruby(推荐版本见 .ruby-version)
  • PostgreSQL(或 Docker)

开始使用

1. 克隆并设置
git clone https://github.com/seuros/mcp_rails_template.git
cd mcp_rails_template
bin/setup
2. 环境配置

复制提供的 .env.example 文件:

cp .env.example .env

编辑 .env,根据你的设置填写必要的值(尤其是 fetch_weather_by_location_tool 等工具所需的 API 密钥)。

3. 数据库设置

你可以使用 Docker 快速启动一个临时 PostgreSQL 实例:

make up

这将在端口 5466 上启动 PostgreSQL。

或者,编辑 config/database.yml 来配置你自己的 PostgreSQL 数据库。

4. 运行应用

启动 Rails 服务器:

bin/rails s

应用可通过 http://localhost:3002 访问。


ActionMCP 服务

ActionMCP 作为独立服务运行在端口 62770 上(通过 mcp.ru)。Nginx 会将 /mcp 请求代理到此服务。

Client → nginx:8080/mcp → ActionMCP:62770

身份验证

此应用通过 ApplicationGateway 类使用基于 JWT 的身份验证。

测试用户(来自 fixtures)
电子邮件密码角色
[email protected]password123测试用户
[email protected]password123管理员用户
加载 Fixtures
bin/rails db:fixtures:load FIXTURES=users
生成 JWT 令牌
# In Rails console
user = User.find_by(email: '[email protected]')
token = user.generate_jwt(expires_in: 10.years)  # Long-lived for demo
MCP 客户端配置

已提供 .mcp.json 文件,其中包含预配置的长期令牌:

{
  "mcpServers": {
    "mcp_rails_template": {
      "url": "http://localhost:8080/mcp",
      "headers": {
        "Authorization": "Bearer <token>"
      }
    }
  }
}

或者使用 curl 手动测试:

curl -H "Authorization: Bearer <token>" 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)获取 gem。资源 URI 遵循 gemfile://{environment} 模式。
工具(app/mcp/tools/)

工具定义大模型可以请求执行的特定操作。

  • dependency_info_tool.rb:使用 Bundler 从 Gemfile 和 Gemfile.lock 中获取依赖信息。它还会检查 .gemspec 文件中的运行时依赖项。它会为 production、test 和 runtime 依赖项分别输出 JSON 资源。
  • 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 Inspector 交互式测试和检查 MCP 功能:

npx @modelcontextprotocol/inspector --url http://localhost:8080/mcp

执行 Inspector 命令前,请确保 Docker 正在运行(docker compose up)。


贡献

欢迎贡献!请提交问题或拉取请求,帮助改进此示例。


祝编码愉快!✨🚀

评论

支持 Markdown

第一次接触 MCP?

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

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