fast-mcp

GitHub
1.2k 105 简单 1 次阅读 昨天MITAgent图像语言模型开发框架
AI 解读 由 AI 自动生成,仅供参考

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
GPU

未说明

内存

未说明

依赖
notes这是一个 Ruby 库而非 Python 工具,因此不需要 Python 环境或 GPU。主要运行需求是安装 Ruby 和 Bundler。支持通过 STDIO、HTTP 或 SSE 传输协议运行。可与 Rails、Sinatra 或任何 Rack 兼容的框架集成。测试时需安装 Node.js 以使用 @modelcontextprotocol/inspector。
python不适用 (基于 Ruby)
dry-schema
rails (可选)
sinatra (可选)
rack
fast-mcp hero image

快速开始

Fast MCP 🚀

轻松将 AI 模型接入您的 Ruby 应用程序

无需复杂的协议、无需繁琐的集成流程、无需担心兼容性问题——只需编写优美而富有表现力的 Ruby 代码即可。

Gem 版本 CI 状态 许可证:MIT 贡献者公约 Discord 邀请链接

🌟 在几分钟内实现服务器与大语言模型的对接

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 客户端?

请参阅 configuring_mcp_clients

📊 支持的规范

功能 状态
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 的贡献!以下是您可以帮助的方式:

  1. 分支仓库
  2. 创建您的功能分支 (git checkout -b my-new-feature)
  3. 提交更改 (git commit -am '添加一些功能')
  4. 推送到分支 (git push origin my-new-feature)
  5. 创建新的 Pull Request

请阅读我们的 贡献指南,以获取更多详细信息。

📄 许可证

本项目以开源形式提供,遵循 MIT 许可证 的条款。

🙏 致谢

版本历史

v1.5.02025/06/01
v1.4.02025/05/10
v1.3.22025/05/09
v1.3.12025/04/30
v1.3.02025/04/27
v1.2.02025/04/21
v1.6.02025/09/28
v1.1.02025/04/13
v1.0.02025/03/30
v0.1.02025/03/30

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

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 真正成长为懂上

159.6k|★★☆☆☆|今天
开发框架Agent语言模型

opencode

OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信

144.3k|★☆☆☆☆|昨天
Agent插件

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|1周前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像