Active MCP Server (Rails Engine)
使用说明
项目简介
Active MCP 是一个 Ruby on Rails 引擎,用于简化 Model Context Protocol (MCP) 服务器的开发。它旨在帮助开发者快速构建应用后端,以便为大型语言模型 (LLM) 客户端提供结构化的上下文信息和功能。通过 Active MCP,您可以轻松地将现有的 Rails 应用功能暴露为 MCP 工具,并管理可供 LLM 访问的资源和 Prompt 模板。
主要功能点
- 简化集成: 轻松将 Rails 应用的功能作为 MCP 工具对外暴露,无需复杂的配置。
- 资源支持: 通过 MCP 资源向 AI 助手安全地共享文件和数据,支持文本和二进制内容。
- 强大的代码生成器: 利用 Rails 代码生成器快速创建 MCP 工具和资源,提升开发效率。
- 认证支持: 内置身份验证和授权功能,保障 MCP 服务器的安全性。
- 灵活部署: 支持多种部署和连接方式,包括直接 HTTP 连接和独立的 MCP 服务器模式。
安装步骤
-
在您的 Rails 应用的 'Gemfile' 中添加以下行:
gem 'active_mcp' -
运行 'bundle install' 安装 gem 包。
-
运行安装生成器初始化 Active MCP 配置:
rails generate active_mcp:install这将创建一个配置文件 'config/initializers/active_mcp.rb'。
服务器配置
MCP 客户端需要配置 MCP 服务器的连接信息才能进行交互。以下是 Standalone MCP Server 模式下客户端的配置示例,您需要配置 'command' 和 'args' 来启动 Active MCP 服务器进程:
{ "mcpServers": { "my-rails-app": { "command": "/path/to/ruby", // Ruby 解释器路径 "args": ["/path/to/script/mcp_server.rb"] // Active MCP 服务器启动脚本路径 } } }
其中 '/path/to/script/mcp_server.rb' 是您在 Rails 应用根目录下创建的服务器启动脚本,例如:
# script/mcp_server.rb require_relative '../../lib/active_mcp' require './config/environment.rb' # 加载 Rails 环境 server = ActiveMcp::Server.new( name: "My App MCP Server", uri: 'http://localhost:3000/mcp' # Rails 应用 MCP 接口的 URI ) server.start
基本使用方法
-
创建 MCP 工具: 使用代码生成器快速创建工具,例如:
rails generate active_mcp:tool create_note编辑 'app/mcp/tools/create_note_tool.rb' 文件,定义工具的 'tool_name'、'description'、参数 ('argument') 和 'call' 方法来实现具体功能。
-
创建 MCP 资源: 使用代码生成器创建资源,例如:
rails generate active_mcp:resource profile_image编辑 'app/mcp/resources/profile_image_resource.rb' 文件,定义资源的 'mime_type'、'resource_name'、'uri'、'description' 以及 'text' 或 'blob' 方法来提供资源内容。
-
定义 Schema: 创建一个 Schema 类,例如 'app/mcp/schemas/my_schema.rb',并在其中注册您创建的工具和资源:
class MySchema < ActiveMcp::Schema::Base tools CreateNoteTool, SearchUsersTool # 注册工具 resource UserResource, items: User.all.each {|user| { id: user.id } } # 注册资源 end -
配置 Controller 和路由: 创建一个 Controller,例如 'app/controllers/my_mcp_controller.rb',并设置路由:
class MyMcpController < ActiveMcp::BaseController private def schema MySchema.new(context:) # 实例化您的 Schema end end在 'config/routes.rb' 中添加路由:
Rails.application.routes.draw do post "/mcp", to: "my_mcp#index" # ... 其他路由 end -
启动服务器: 运行 'script/mcp_server.rb' 脚本启动独立的 MCP 服务器,或者直接部署 Rails 应用并通过 HTTP 接口 '/mcp' 提供 MCP 服务。
现在,您的 Rails 应用已经成功配置为 MCP 服务器。您可以配置 MCP 客户端连接到您的服务器地址,并开始调用您定义的工具和访问资源。