一个轻量级的Ruby框架,用于实现类似Sinatra的DSL风格的MCP(模型上下文协议)服务器。
在你的应用Gemfile中添加以下行:
gem 'mcp-rb'
这里是一个创建MCP服务器的简单示例:
require 'mcp'
name "hello-world"
version "1.0.0"
# 定义一个资源
resource "hello://world" do
name "Hello World"
description "一个简单的Hello World消息"
call { "Hello, World!" }
end
# 定义一个资源模板
resource_template "hello://{user_name}" do
name "Hello User"
description "一个简单的问候用户的消息"
call { |args| "Hello, #{args[:user_name]}!" }
end
# 定义一个工具
tool "greet" do
description "通过名字问候某人"
argument :name, String, required: true, description: "要问候的名字"
call do |args|
"Hello, #{args[:name]}!"
end
end
# 定义一个带有嵌套参数的工具
tool "greet_full_name" do
description "通过全名问候某人"
argument :person, required: true, description: "要问候的人" do
argument :first_name, String, required: false, description: "名字"
argument :last_name, String, required: false, description: "姓氏"
end
call do |args|
"Hello, First: #{args[:person][:first_name]} Last: #{args[:person][:last_name]}!"
end
end
# 定义一个带有数组参数的工具
tool "group_greeting" do
description "一次问候多个人"
argument :people, Array, required: true, items: String, description: "要问候的人"
call do |args|
args[:people].map { |person| "Hello, #{person}!" }.join(", ")
end
end
目前不支持任何其他能力。
rake test
rake test:unit # 仅运行单元测试,跳过测试正在运行的服务器的测试
使用MCP Inspector进行测试
bunx @modelcontextprotocol/inspector $(pwd)/examples/hello_world.rb
bundle exec standardrb --fix
你也可以使用rake任务:
rake lint # 运行standardrb检查代码风格
rake lint:fix # 自动修复standardrb问题
发布新版本:
lib/mcp/version.rb中的版本CHANGELOG.mdgit add .
git commit -m "Release vx.y.z"
git tag vx.y.z
git push --tags
gem build mcp-rb.gemspec
gem push mcp-rb-*.gem