项目简介
model-context-protocol-rb 是一个用 Ruby 语言编写的 Model Context Protocol (MCP) 服务器 SDK。它旨在帮助开发者快速构建 MCP 兼容的后端服务,以便为大型语言模型(LLM)应用提供上下文信息、工具和 Prompt 管理能力。该 SDK 尚处于实验阶段,但已实现了 MCP 服务器的核心功能。
主要功能点
- 资源管理 (Resources): 允许注册和管理各种资源,并通过标准化的 URI 进行访问。支持文本和二进制资源,可以方便地向 LLM 提供外部数据。
- 工具注册与执行 (Tools): 支持注册可被 LLM 调用的工具,扩展 LLM 的能力边界。工具定义输入 Schema,并返回结构化响应。
- Prompt 模板 (Prompts): 支持定义和管理 Prompt 模板,允许客户端通过名称和参数获取 Prompt 内容,实现可定制的 LLM 交互模式。
- JSON-RPC 通信: 使用 JSON-RPC 协议与 MCP 客户端进行通信,实现请求-响应模式和通知机制。
- Stdio 传输: 默认支持 Stdio (标准输入/输出) 作为传输协议,方便本地开发和部署。
- 可扩展的配置: 提供灵活的配置选项,包括服务器名称、版本、日志开关以及可注册的 Resources、Tools 和 Prompts。
安装步骤
- 确保已安装 Ruby 和 Bundler。
- 将 gem 添加到你的 Gemfile 中:
gem 'model-context-protocol-rb' - 运行 bundle install 安装依赖:
bundle install
服务器配置
MCP 客户端需要配置 MCP 服务器的启动命令和参数才能连接。以下是一个基于 'model-context-protocol-rb' 的 MCP 服务器配置示例 (JSON 格式):
{ "serverName": "MCP Development Server", "command": "ruby", "args": ["path/to/your/server.rb"] }
配置参数说明:
- 'serverName': MCP 服务器的名称,可以自定义,例如 "My MCP Server"。 (对应示例中的 '"MCP Development Server"')
- 'command': 启动 MCP 服务器的命令,通常是 Ruby 解释器 'ruby'。(对应示例中的 '"ruby"')
- 'args': 传递给启动命令的参数,指向你的服务器 Ruby 脚本文件路径。(对应示例中的 '["path/to/your/server.rb"]')
server.rb 示例 (基于仓库 README 修改):
你需要创建一个 Ruby 脚本 (例如 'server.rb') 来启动 MCP 服务器。以下是一个简单的示例,你可以根据自己的需求扩展 Resources、Tools 和 Prompts 的实现:
# server.rb require 'model-context-protocol-rb' class TestPrompt < ModelContextProtocol::Server::Prompt with_metadata do { name: "Test Prompt", description: "A test prompt", arguments: [ { name: "message", description: "The thing to do", required: true } ] } end def call messages = [ { role: "user", content: { type: "text", text: "Do this: #{params["message"]}" } } ] Response[messages:, prompt: self] end end class TestResource < ModelContextProtocol::Server::Resource with_metadata do { name: "Test Resource", description: "A test resource", mime_type: "text/plain", uri: "resource://test-resource" } end def call TextResponse[resource: self, text: "Here's the data"] end end class TestTool < ModelContextProtocol::Server::Tool with_metadata do { name: "test-tool", description: "A test tool", inputSchema: { type: "object", properties: { message: { type: "string" } }, required: ["message"] } } end def call TextResponse[text: "You said: #{params["message"]}"] end end server = ModelContextProtocol::Server.new do |config| config.name = "My MCP Server" # 修改服务器名称 config.version = "1.0.0" config.enable_log = true config.registry = ModelContextProtocol::Server::Registry.new do prompts list_changed: false do # 根据需要配置 capabilities register TestPrompt end resources list_changed: false, subscribe: false do # 根据需要配置 capabilities register TestResource end tools list_changed: false do # 根据需要配置 capabilities register TestTool end end end server.start
请注意: 将 'path/to/your/server.rb' 替换为你的 'server.rb' 脚本的实际路径。
基本使用方法
-
启动 MCP 服务器: 在终端中,导航到包含 'server.rb' 文件的目录,并运行命令 'ruby server.rb'。服务器将通过 Stdio 监听 MCP 客户端的请求。
-
配置 MCP 客户端: 在你的 MCP 客户端应用中,配置连接到该 MCP 服务器,指定正确的 'command' 和 'args',以及 'serverName'。
-
客户端与服务器交互: MCP 客户端将通过 JSON-RPC 协议与服务器进行通信,调用 Resources, Tools 和 Prompts。你可以参考 MCP 协议规范和客户端 SDK 文档来了解如何发送请求和处理响应。
示例交互流程 (概念性):
- 客户端发送 "initialize" 请求: 客户端启动时,会向服务器发送 "initialize" 请求,获取服务器的 capabilities 和 serverInfo。
- 客户端获取资源列表: 客户端可以发送 "resources/list" 请求,获取服务器管理的资源列表。
- 客户端读取资源: 客户端可以通过 "resources/read" 请求和资源 URI 读取资源内容。
- 客户端获取 Prompt: 客户端可以发送 "prompts/get" 请求,根据 Prompt 名称和参数获取 Prompt 内容。
- 客户端调用工具: 客户端可以发送 "tools/call" 请求,根据工具名称和参数调用注册的工具。
请查阅 'model-context-protocol-rb' 仓库的更多文档和示例代码,以深入了解其使用方法和高级特性。
信息
分类
开发者工具