fast-mcp
fast-mcp 是一款专为 Ruby 开发者打造的开源工具,旨在轻松连接 AI 大模型与 Ruby 应用程序。它实现了“模型上下文协议”(Model Context Protocol),让开发者无需处理复杂的通信协议、自定义 JSON 格式或繁琐的集成难题,即可用优雅的原生 Ruby 代码赋予 AI 调用应用功能的能力。
过去,让 AI 与现有系统交互往往面临兼容性差、状态管理困难等痛点。fast-mcp 通过提供清晰的工具(Tools)和资源(Resources)API,解决了这些问题。它不仅支持 STDIO、HTTP 等多种传输方式,还能无缝集成 Rails、Sinatra 等主流框架,并内置基于 Dry-Schema 的参数验证机制,确保 AI 调用函数时的数据安全与准确。
这款工具非常适合熟悉 Ruby 的后端工程师及全栈开发者使用。其独特亮点在于将复杂的 AI 交互逻辑封装为直观的 Ruby 类继承模式:开发者只需定义简单的类和参数规则,即可让 AI 安全地执行创建用户、查询数据等操作,甚至支持动态权限控制和实时数据订阅。如果你希望快速在 Ruby 项目中落地 AI 功能,而不想陷入底层协议的开发泥潭,fast-mcp 是一个高效且专业的选择。
使用场景
某电商团队正在为其 Ruby on Rails 后台构建一个智能客服助手,需要让大语言模型(LLM)能够安全地查询用户订单状态并执行退款操作。
没有 fast-mcp 时
- 协议对接繁琐:开发人员需手动编写复杂的 JSON-RPC 解析代码来处理模型请求,极易因格式错误导致通信失败。
- 参数验证脆弱:缺乏统一的校验机制,模型传入的非法参数(如负数金额)直接穿透到业务层,引发运行时异常。
- 资源暴露困难:想让模型读取实时库存数据,必须额外开发独立的 HTTP API 接口并处理鉴权,开发周期长。
- 状态管理混乱:在多轮对话中维持上下文状态与数据库事务的一致性极其困难,常出现数据不同步问题。
使用 fast-mcp 后
- 原生 Ruby 集成:只需继承
FastMcp::Tool类并用简洁的 DSL 定义工具,fast-mcp 自动处理底层协议转换与 JSON 序列化。 - 强类型参数校验:利用内置的 Dry-Schema 支持,在定义阶段即可声明参数类型与必填项,自动拦截非法输入保障安全。
- 资源一键共享:通过继承
FastMcp::Resource并将 URI 映射到 ActiveRecord 模型,模型即可直接按需读取最新的订单或库存数据。 - 框架无缝协作:fast-mcp 完美融入 Rails 生态,直接复用现有的认证中间件与事务机制,确保 AI 操作与业务逻辑高度一致。
fast-mcp 将原本耗时数天的 AI 集成工作缩减为分钟级的代码编写,让 Ruby 开发者能专注于业务逻辑而非协议细节。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
Fast MCP 🚀
轻松将 AI 模型接入您的 Ruby 应用程序
无需复杂的协议、无需繁琐的集成流程、无需担心兼容性问题——只需编写优美而富有表现力的 Ruby 代码即可。
🌟 在几分钟内实现服务器与大语言模型的对接
AI 模型功能强大,但只有与您的应用程序无缝交互,才能真正发挥其价值。传统的集成方式往往伴随着以下挑战:
- 🔄 复杂的通信协议和自定义 JSON 格式
- 🔌 不同模型提供商之间的集成难题
- 🧩 您的应用程序与 AI 工具之间的兼容性问题
- 🧠 需要在 AI 交互与您的数据之间管理状态
Fast MCP 通过提供基于 Model Context Protocol 的简洁、以 Ruby 为中心的实现,彻底解决了这些问题,让 AI 集成变得简单愉快,而非繁重的任务。
✨ 核心特性
- 🛠️ 工具 API - 允许 AI 模型安全地调用您的 Ruby 函数,并通过 Dry-Schema 进行深入的参数校验。
- 📚 资源 API - 在您的应用与 AI 模型之间共享数据。
- 🔄 多种传输方式 - 根据需求选择 STDIO、HTTP 或 SSE。
- 🧩 框架集成 - 与 Rails、Sinatra 或任何 Rack 应用无缝兼容。
- 🔒 认证支持 - 轻松保护您的 AI 驱动端点。
- 🚀 实时更新 - 订阅变化,构建交互式应用。
- 🎯 动态过滤 - 根据请求上下文(权限、API 版本等)控制工具和资源的访问权限。
💎 FastMCP 的优势
# 定义供 AI 模型使用的工具
server = FastMcp::Server.new(name: 'popular-users', version: '1.0.0')
# 继承 FastMcp::Tool 定义工具
class CreateUserTool < FastMcp::Tool
description "创建用户"
# 这些参数会生成传递给 MCP 客户端所需的 JSON,
# 并在运行时进行验证。
# 验证基于 Dry-Schema,并附加描述信息。
arguments do
required(:first_name).filled(:string).description("用户的名")
optional(:age).filled(:integer).description("用户的年龄")
required(:address).description("收货地址").hash do
required(:street).filled(:string).description("街道地址")
optional(:city).filled(:string).description("城市名称")
optional(:zipcode).maybe(:string).description("邮政编码")
end
end
def call(first_name:, age: nil, address: {})
User.create!(first_name:, age:, address:)
end
end
# 将工具注册到服务器
server.register_tool(CreateUserTool)
# 继承 FastMcp::Resource 与 AI 模型共享数据资源
class PopularUsers < FastMcp::Resource
uri "myapp:///users/popular"
resource_name "热门用户"
mime_type "application/json"
def content
JSON.generate(User.popular.limit(5).as_json)
end
end
class User < FastMcp::Resource
uri "myapp:///users/{id}" # 这是一个资源模板
resource_name "用户"
mime_type "application/json"
def content
id = params[:id] # 参数由 URI 模式计算得出
JSON.generate(User.find(id).as_json)
end
end
# 将资源注册到服务器
server.register_resources(PopularUsers, User)
# 通过服务器访问资源
server.read_resource(PopularUsers.uri)
# 通知客户端资源内容已更新
server.notify_resource_updated(PopularUsers.variabilized_uri)
# 通知模板化资源的内容已更新
server.notify_resource_updated(User.variabilized_uri(id: 1))
🎯 动态工具过滤
根据请求上下文控制可用的工具和资源:
# 为工具打标签以便于过滤
class AdminTool < FastMcp::Tool
tags :admin, :dangerous
description "执行管理员操作"
def call
# 仅限管理员的功能
end
end
# 根据用户权限过滤工具
server.filter_tools do |request, tools|
user_role = request.params['role']
case user_role
when 'admin'
tools # 管理员可见所有工具
when 'user'
tools.reject { |t| t.tags.include?(:admin) }
else
tools.select { |t| t.tags.include?(:public) }
end
end
🚂 快速的 Ruby on Rails 实现
bundle add fast-mcp
bin/rails generate fast_mcp:install
这将添加一个可配置的 fast_mcp.rb 初始化器。
require 'fast_mcp'
FastMcp.mount_in_rails(
Rails.application,
name: Rails.application.class.module_parent_name.underscore.dasherize,
version: '1.0.0',
path_prefix: '/mcp', # 这是默认的路径前缀
messages_route: 'messages', # 这是消息端点的默认路由
sse_route: 'sse', # 这是 SSE 端点的默认路由
# 在下方添加允许的来源,它默认为 Rails.application.config.hosts
# allowed_origins: ['localhost', '127.0.0.1', 'example.com', /.*\.example\.com/],
# localhost_only: true, # 设置为 false 以允许来自其他主机的连接
# 如果您想在本地运行并允许来自其他 IP 的连接,请列出特定的 IP 地址
# allowed_ips: ['127.0.0.1', '::1']
# authenticate: true, # 取消注释以启用身份验证
# auth_token: 'your-token' # 如果 authenticate: true,则需要此参数
) do |server|
Rails.application.config.after_initialize do
# FastMcp 将自动发现并注册:
# - 所有继承自 ApplicationTool 的类(使用 ActionTool::Base)
# - 所有继承自 ApplicationResource 的类(使用 ActionResource::Base)
server.register_tools(*ApplicationTool.descendants)
server.register_resources(*ApplicationResource.descendants)
# 或者,您也可以手动注册工具和资源:
# server.register_tool(MyTool)
# server.register_resource(MyResource)
end
end
安装脚本还将:
- 添加
app/resources文件夹 - 添加
app/tools文件夹 - 添加
app/tools/sample_tool.rb - 添加
app/resources/sample_resource.rb - 添加
ApplicationTool作为基类 - 同时添加
ApplicationResource作为基类
适合 Rails 的类命名规范
对于 Rails 应用程序,FastMCP 提供了符合 Rails 规范的类名:
ActionTool::Base- 是FastMcp::Tool的别名ActionResource::Base- 是FastMcp::Resource的别名
这些会在 Rails 应用程序中自动设置。您可以在代码中使用任一种命名方式:
# 使用 Rails 风格的命名:
class MyTool < ActionTool::Base
description "我的超棒工具"
arguments do
required(:input).filled(:string)
end
def call(input:)
# 您的实现
end
end
# 使用标准的 FastMcp 命名:
class AnotherTool < FastMcp::Tool
# 在 Rails 应用程序中,这两种风格可以互换使用
end
当创建新的工具或资源时,生成器会默认使用 Rails 的命名规范:
# app/tools/application_tool.rb
class ApplicationTool < ActionTool::Base
# 所有工具的基础方法
end
# app/resources/application_resource.rb
class ApplicationResource < ActionResource::Base
# 所有资源的基础方法
end
简单的 Sinatra 设置
请参阅专门的 Sinatra 集成文档。
🚀 快速入门
创建带有工具和资源以及 STDIO 传输的服务器
require 'fast_mcp'
# 创建一个 MCP 服务器
server = FastMcp::Server.new(name: 'my-ai-server', version: '1.0.0')
# 定义一个工具,继承自 FastMcp::Tool
class SummarizeTool < FastMcp::Tool
description "总结给定的文本"
arguments do
required(:text).filled(:string).description("要总结的文本")
optional(:max_length).filled(:integer).description("摘要的最大长度")
end
def call(text:, max_length: 100)
# 您的总结逻辑在这里
text.split('.').first(3).join('.') + '...'
end
end
# 将工具注册到服务器
server.register_tool(SummarizeTool)
# 创建一个资源,继承自 FastMcp::Resource
class StatisticsResource < FastMcp::Resource
uri "data/statistics"
resource_name "使用统计"
description "当前系统统计信息"
mime_type "application/json"
def content
JSON.generate({
users_online: 120,
queries_per_minute: 250,
popular_topics: ["Ruby", "AI", "WebDev"]
})
end
end
# 将资源注册到服务器
server.register_resource(StatisticsResource)
# 启动服务器
server.start
🧪 使用检查器进行测试
MCP 开发了一个非常 有用的检查器。您可以使用它来验证您的实现。我建议您使用随本项目提供的示例作为简单的样板。克隆该项目,然后开始尝试!
npx @modelcontextprotocol/inspector examples/server_with_stdio_transport.rb
或者使用 Rack 中间件通过 SSE 传输进行测试:
npx @modelcontextprotocol/inspector examples/rack_middleware.rb
或者使用经过身份验证的 Rack 中间件通过 SSE 进行测试:
npx @modelcontextprotocol/inspector examples/authenticated_rack_middleware.rb
您可以通过使用官方 MCP 检查器来测试您的自定义实现:
# 使用 stdio 传输进行测试:
npx @modelcontextprotocol/inspector path/to/your_ruby_file.rb
# 使用 HTTP / SSE 服务器进行测试。在 UI 中选择 SSE 并输入您的地址。
npx @modelcontextprotocol/inspector
Sinatra
# app.rb
require 'sinatra'
require 'fast_mcp'
use FastMcp::RackMiddleware.new(name: 'my-ai-server', version: '1.0.0') do |server|
# 在这里注册工具和资源
server.register_tool(SummarizeTool)
end
get '/' do
'Hello World!'
end
与 Claude Desktop 集成
将您的服务器添加到 Claude Desktop 的配置中,路径如下:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"my-great-server": {
"command": "ruby",
"args": ["/Users/path/to/your/awesome/fast-mcp/server.rb"]
}
}
}
如何将 MCP 服务器添加到 Claude、Cursor 或其他 MCP 客户端?
📊 支持的规范
| 功能 | 状态 |
|---|---|
| ✅ JSON-RPC 2.0 | 完整实现用于通信 |
| ✅ 工具定义与调用 | 定义并调用具有丰富参数类型的工具 |
| ✅ 资源及资源模板管理 | 创建、读取、更新和订阅资源 |
| ✅ 传输选项 | STDIO、HTTP 和 SSE,支持灵活集成 |
| ✅ 框架集成 | Rails、Sinatra、Hanami 以及任何兼容 Rack 的框架 |
| ✅ 认证 | 使用令牌认证保护您的 AI 端点 |
| ✅ 模式支持 | 完整的 JSON Schema,用于工具参数验证 |
🗺️ 使用场景
- 🤖 AI 驱动的应用程序: 将 LLM 连接到您的 Ruby 应用程序功能
- 📊 实时仪表盘: 构建带有实时 AI 生成洞察的仪表盘
- 🔗 微服务通信: 使用 MCP 作为服务之间的清晰协议
- 📚 交互式文档: 创建 AI 增强的 API 文档
- 💬 聊天机器人和助手: 构建可访问您应用数据的 AI 助手
🔒 安全特性
Fast MCP 包含内置的安全特性,以保护您的应用程序:
DNS 重绑定防护
HTTP/SSE 传输会验证所有传入连接的 Origin 头,以防止 DNS 重绑定攻击。这种攻击可能允许恶意网站与本地 MCP 服务器进行交互。
# 配置允许的来源(默认为 ['localhost', '127.0.0.1'])
FastMcp.rack_middleware(app,
allowed_origins: ['localhost', '127.0.0.1', 'your-domain.com', /.*\.your-domain\.com/],
localhost_only: false,
allowed_ips: ['192.168.1.1', '10.0.0.1'],
# 其他选项...
)
认证
Fast MCP 支持所有连接的基于令牌的认证:
# 启用认证
FastMcp.authenticated_rack_middleware(app,
auth_token: 'your-secret-token',
# 其他选项...
)
📖 文档
💻 示例
请查看 examples 目录,获取更多详细示例:
🧪 要求
- Ruby 3.2+
👥 贡献
我们欢迎对 Fast MCP 的贡献!以下是您可以帮助的方式:
- 分支仓库
- 创建您的功能分支 (
git checkout -b my-new-feature) - 提交更改 (
git commit -am '添加一些功能') - 推送到分支 (
git push origin my-new-feature) - 创建新的 Pull Request
请阅读我们的 贡献指南,以获取更多详细信息。
📄 许可证
本项目以开源形式提供,遵循 MIT 许可证 的条款。
🙏 致谢
- Model Context Protocol 团队,感谢他们创建了该规范
- Dry-Schema 团队,感谢他们提供的参数验证。
- 本项目的全体贡献者
版本历史
v1.5.02025/06/01v1.4.02025/05/10v1.3.22025/05/09v1.3.12025/04/30v1.3.02025/04/27v1.2.02025/04/21v1.6.02025/09/28v1.1.02025/04/13v1.0.02025/03/30v0.1.02025/03/30常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。