返回市场
宝石源_mcp.rb

宝石源_mcp.rb

作者:amkisko2 星标更新:2025-11-22

项目介绍

rubygems_mcp

Gem 版本 测试状态 代码覆盖率

这是一个 Ruby gem,通过 MCP(模型上下文协议)服务器工具提供 RubyGems 和 Ruby 版本信息。它与兼容 MCP 的客户端如 Cursor IDE、Claude Desktop 和其他 MCP 工具集成。

此 gem 访问公共的 RubyGems 和 Ruby 版本信息,无需身份验证。

赞助商:Kisko Labs

<a href="https://www.kiskolabs.com"> <img src="kisko.svg" width="200" alt="赞助商:Kisko Labs" /> </a>

要求

  • Ruby 3.1 或更高版本(不支持 Ruby 3.0 及更早版本)

快速开始

gem install rubygems_mcp

Cursor IDE 配置

对于 Cursor IDE,在项目中创建或更新 .cursor/mcp.json 文件:

{
  "mcpServers": {
    "rubygems": {
      "command": "gem",
      "args": ["exec", "rubygems_mcp"],
      "env": {
        "RUBY_VERSION": "3.4.7"
      }
    }
  }
}

注意:使用 gem exec 确保使用正确的 Ruby 版本。如果你使用了 Ruby 版本管理器如 miserbenv,设置 RUBY_VERSION 环境变量以匹配所需的 Ruby 版本。gem exec 命令会根据你的版本管理器配置自动使用正确的 Ruby 版本。

Claude Desktop 配置

对于 Claude Desktop,编辑 MCP 配置文件:

macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "rubygems": {
      "command": "gem",
      "args": ["exec", "rubygems_mcp"],
      "env": {
        "RUBY_VERSION": "3.4.7"
      }
    }
  }
}

注意:更新配置后,请重启 Claude Desktop 使更改生效。

使用 MCP Inspector 测试

你可以使用 MCP Inspector 工具来测试 MCP 服务器:

# 运行 MCP inspector 并连接到服务器
npx @modelcontextprotocol/inspector bundle exec rubygems_mcp

Inspector 将:

  1. 启动代理服务器并打开浏览器界面
  2. 通过 STDIO 连接到你的 MCP 服务器
  3. 允许你交互式地测试所有可用工具
  4. 显示请求/响应消息及任何错误

这有助于:

  • 在与 MCP 客户端集成前测试工具功能
  • 调试 MCP 协议通信
  • 探索可用工具及其参数

手动运行 MCP 服务器

安装后,你可以立即启动 MCP 服务器:

# 使用 bundler
gem install rubygems_mcp && bundle exec rubygems_mcp

# 或者全局安装
rubygems_mcp

服务器将启动并通过 STDIN/STDOUT 使用 MCP 协议进行通信。

功能

  • RubyGems API 客户端:全面支持 RubyGems REST API 的客户端,涵盖所有端点
  • Ruby 版本信息:从 ruby-lang.org 获取 Ruby 发布信息、变更日志和维护状态
  • MCP 服务器集成:预装 MCP 服务器,包含 19 个工具和 4 个资源,兼容 Cursor IDE、Claude Desktop 和其他 MCP 工具
  • 分页与排序:支持大型结果集,具有可定制的分页和排序选项
  • 缓存:内存缓存,带有可配置的 TTL,提高性能
  • 错误处理:优雅的错误处理,包括自定义异常和响应大小限制
  • 无需认证:所有端点均为公开,无需 API 密钥
  • 全面的 API 支持:支持 gem 版本、最新版本、Ruby 版本、gem 搜索、gem 信息、反向依赖关系、下载统计、变更日志等

基本用法

API 客户端

require "rubygems_mcp"

# 创建客户端
client = RubygemsMcp::Client.new

# 获取多个 gem 的最新版本
versions = client.get_latest_versions(["rails", "nokogiri", "rack"])
# => [
#   { name: "rails", version: "7.1.0", release_date: #<Date>, license: "MIT" },
#   { name: "nokogiri", version: "1.15.0", release_date: #<Date>, license: "MIT" },
#   { name: "rack", version: "3.0.0", release_date: #<Date>, license: "MIT" }
# ]

# 获取单个 gem 的所有版本
versions = client.get_gem_versions("rails")
# => [
#   { version: "7.1.0", release_date: #<Date>, license: "MIT" },
#   { version: "7.0.8", release_date: #<Date>, license: "MIT" },
#   ...
# ]

# 获取最新的 Ruby 版本
ruby_version = client.get_latest_ruby_version
# => { version: "3.3.0", release_date: #<Date> }

# 获取所有 Ruby 版本
ruby_versions = client.get_ruby_versions
# => [
#   { version: "3.3.0", release_date: #<Date> },
#   { version: "3.2.0", release_date: #<Date> },
#   ...
# ]

# 获取 gem 信息
gem_info = client.get_gem_info("rails")
# => {
#   name: "rails",
#   version: "7.1.0",
#   summary: "全栈 Web 应用框架。",
#   homepage: "https://rubyonrails.org",
#   source_code: "https://github.com/rails/rails",
#   documentation: "https://api.rubyonrails.org",
#   licenses: ["MIT"],
#   authors: ["David Heinemeier Hansson", ...]
# }

# 搜索 gem
results = client.search_gems("rails")
# => [
#   { name: "rails", version: "7.1.0", info: "...", ... },
#   { name: "rails_admin", version: "3.0.0", info: "...", ... },
#   ...
# ]

# 获取反向依赖关系
reverse_deps = client.get_gem_reverse_dependencies("rails")
# => ["rails_admin", "activeadmin", ...]

# 获取下载统计
downloads = client.get_gem_version_downloads("rails", "7.1.0")
# => { version_downloads: 123456, total_downloads: 987654321 }

# 获取 Ruby 维护状态
maintenance = client.get_ruby_maintenance_status
# => [
#   { version: "3.4", status: "正常维护", release_date: "2024-12-25", ... },
#   { version: "3.3", status: "正常维护", ... },
#   ...
# ]

# 获取 Ruby 版本变更日志
changelog = client.get_ruby_version_changelog("3.4.7")
# => { version: "3.4.7", summary: "...", release_notes_url: "..." }

# 获取最新/最近更新的 gem
latest = client.get_latest_gems(limit: 10)
recently_updated = client.get_recently_updated_gems(limit: 10)

API 方法

Gem 版本

  • get_latest_versions(gem_names, fields: nil) - 获取一组 gem 的最新版本,包括发布日期和许可证。支持类似 GraphQL 的字段选择。
  • get_gem_versions(gem_name, limit: nil, offset: 0, sort: :version_desc, fields: nil) - 获取单个 gem 的所有版本,包括发布日期和许可证,按版本降序排列。支持分页、排序和字段选择。

Ruby 版本

  • get_latest_ruby_version - 获取最新的 Ruby 版本及其发布日期
  • get_ruby_versions(limit: nil, offset: 0, sort: :version_desc) - 获取所有 Ruby 版本及其发布日期、下载链接和发布说明链接,按版本降序排列。支持分页和排序。
  • get_ruby_version_changelog(version) - 获取特定 Ruby 版本的变更日志摘要,通过抓取和解析发布说明
  • get_ruby_version_github_changelog(version) - 获取 Ruby 版本的 GitHub 发布变更日志,来自 ruby/ruby 仓库
  • get_ruby_roadmap - 从 bugs.ruby-lang.org 获取 Ruby 路线图信息,显示计划的版本及其问题
  • get_ruby_version_roadmap_details(version) - 从 bugs.ruby-lang.org 获取特定 Ruby 版本的详细路线图信息,包括该版本计划的问题和功能
  • get_ruby_maintenance_status - 获取所有 Ruby 版本的维护状态,包括 EOL 日期和维护阶段

Gem 信息

  • get_gem_info(gem_name, fields: nil) - 获取 gem 的详细信息(摘要、主页、源代码、文档、许可证、作者、依赖项、下载量)。支持类似 GraphQL 的字段选择。
  • get_gem_version_info(gem_name, version, fields: nil) - 获取特定 gem 版本的详细信息,使用 RubyGems API v2(版本特定的下载量、依赖项、SHA 校验码、创建日期、构建日期)。支持类似 GraphQL 的字段选择。
  • get_gem_reverse_dependencies(gem_name) - 获取反向依赖项 - 列出依赖于指定 gem 的其他 gem
  • get_gem_version_downloads(gem_name, version) - 获取特定 gem 版本的下载统计
  • get_gem_changelog(gem_name, version: nil) - 获取 gem 的变更日志摘要,通过抓取和解析其变更日志 URI
  • search_gems(query, limit: nil, offset: 0) - 按名称在 RubyGems 上搜索 gem。支持分页。

Gem 发现

  • get_latest_gems(limit: 30) - 获取最新 gem - 最近添加到 RubyGems.org 的 gem
  • get_recently_updated_gems(limit: 30) - 获取最近更新的 gem - 最近更新的 gem 版本

MCP 服务器集成

此 gem 包含一个可以直接运行的 MCP 服务器:

# 安装 gem 后
bundle exec rubygems_mcp

或者全局安装:

gem install rubygems_mcp
rubygems_mcp

服务器将通过 STDIN/STDOUT 使用 MCP 协议进行通信。在你的 MCP 客户端(例如 Cursor IDE、Claude Desktop 或其他 MCP 工具)中配置它。

MCP 工具

MCP 服务器提供了以下工具:

  1. get_latest_versions - 获取一组 gem 的最新版本,包括发布日期和许可证。支持类似 GraphQL 的字段选择。

    • 参数:gem_names(字符串数组),fields(可选字符串数组)
  2. get_gem_versions - 获取单个 gem 的所有版本,包括发布日期和许可证,按版本降序排列。支持类似 GraphQL 的字段选择。

    • 参数:gem_name(字符串),limit(可选整数),offset(可选整数),sort(可选字符串:"version_desc"、"version_asc"、"date_desc"、"date_asc"),fields(可选字符串数组)
  3. get_latest_ruby_version - 获取最新的 Ruby 版本及其发布日期

    • 参数:无
  4. get_ruby_versions - 获取所有 Ruby 版本及其发布日期、下载链接和发布说明链接,按版本降序排列

    • 参数:limit(可选整数),offset(可选整数),sort(可选字符串:"version_desc"、"version_asc"、"date_desc"、"date_asc")
  5. get_ruby_version_changelog - 获取特定 Ruby 版本的变更日志摘要,通过抓取和解析发布说明

    • 参数:version(字符串,例如 "3.4.7")
  6. get_gem_info - 获取 gem 的详细信息(摘要、主页、源代码、文档、许可证、作者、依赖项、下载量)。支持类似 GraphQL 的字段选择。

    • 参数:gem_name(字符串),fields(可选字符串数组)
  7. get_gem_version_info - 获取特定 gem 版本的详细信息,使用 RubyGems API v2(版本特定的下载量、依赖项、SHA 校验码、创建日期、构建日期)。支持类似 GraphQL 的字段选择。

    • 参数:gem_name(字符串),version(字符串,例如 "0.1.0" 或 "1.15.0-x86_64-linux"),fields(可选字符串数组)
  8. get_gem_reverse_dependencies - 获取反向依赖项 - 列出依赖于指定 gem 的其他 gem

    • 参数:gem_name(字符串)
  9. get_gem_version_downloads - 获取特定 gem 版本的下载统计

    • 参数:gem_name(字符串),version(字符串)
  10. get_latest_gems - 获取最新 gem - 最近添加到 RubyGems.org 的 gem

  • 参数:limit(可选整数,默认值:30,最大值:50)
  1. get_recently_updated_gems - 获取最近更新的 gem - 最近更新的 gem 版本
  • 参数:limit(可选整数,默认值:30,最大值:50)
  1. get_gem_changelog - 获取 gem 的变更日志摘要,通过抓取和解析其变更日志 URI
  • 参数:gem_name(字符串),version(可选字符串,未提供时使用最新版本)
  1. search_gems - 按名称在 RubyGems 上搜索 gem
  • 参数:query(字符串)
  1. get_ruby_roadmap - 从 bugs.ruby-lang.org 获取 Ruby 路线图信息,显示计划的版本及其问题
  • 参数:无
  1. get_ruby_version_roadmap_details - 从 bugs.ruby-lang.org 获取特定 Ruby 版本的详细路线图信息,包括该版本计划的问题和功能
  • 参数:version(字符串,例如 "3.4"、"4.0")
  1. get_ruby_version_github_changelog - 获取 Ruby 版本的 GitHub 发布变更日志,来自 ruby/ruby 仓库
  • 参数:version(字符串,例如 "3.4.7"、"3.4.0")

MCP 资源

MCP 服务器提供了以下资源:

  1. rubygems://popular - 一份精选的流行 Ruby gem 列表及其最新版本

    • 资源名称:"流行 Ruby gem"
    • MIME 类型:application/json
  2. rubygems://ruby/compatibility - 关于 Ruby 版本兼容性和发布日期的信息

    • 资源名称:"Ruby 版本兼容性"
    • MIME 类型:application/json
  3. rubygems://ruby/maintenance - 所有 Ruby 版本的详细维护状态,包括 EOL 日期和维护阶段

    • 资源名称:"Ruby 维护状态"
    • MIME 类型:application/json
  4. rubygems://ruby/latest - 最新的稳定 Ruby 版本及其发布日期

    • 资源名称:"最新 Ruby 版本"
    • MIME 类型:application/json

错误处理

客户端优雅地处理错误:

  • 对于失败的请求返回空数组
  • 对于失败的 gem 信息请求返回空哈希
  • 处理网络错误和 JSON 解析错误

开发

# 安装依赖
bundle install

# 运行测试
bundle exec rspec

# 在多个 Ruby 版本上运行测试
bundle exec appraisal install
bundle exec appraisal rspec

# 运行代码检查
bundle exec standardrb --fix

# 验证 RBS 类型签名
bundle exec rbs validate

贡献

欢迎在 GitHub 上提交 bug 报告和拉取请求:https://github.com/amkisko/rubygems_mcp.rb。

贡献政策:

  • 新功能不一定被添加到 gem 中
  • 拉取请求应覆盖受影响部分的测试
  • 拉取请求应包含变更日志条目

审查政策:

  • 至多需要 2 个日历周来审查和合并关键修复
  • 至多需要 6 个日历月来审查和合并拉取请求
  • 至多需要 1 个日历来审查问题

更多详情,请参阅 CONTRIBUTING.md

安全

如果您发现安全漏洞,请负责任地报告。详情请参阅 SECURITY.md

许可证

此 gem 在 MIT 许可证下作为开源软件提供。