项目简介

这是一个使用 Ruby 语言实现的 Model Context Protocol (MCP) 服务器及客户端的初步版本。它提供了一个基础框架,用于构建能够与大型语言模型 (LLM) 客户端交互的 MCP 服务器,特别是支持工具 (Tools) 的注册与调用。该仓库旨在提供一个基于 Ruby 的 MCP 实现参考,目前主要聚焦于通过标准输入输出 (Stdio) 进行通信,并包含一个简单的工具示例。

主要功能点

  • 遵循 MCP 协议: 实现 MCP 协议的基本生命周期管理(初始化、Ping、关闭)以及工具相关的消息处理(列出工具、调用工具)。
  • 支持 JSON-RPC: 使用 JSON-RPC 2.0 作为通信协议,进行请求和响应的交互。
  • Stdio 传输: 通过标准输入输出流 ('stdin'/'stdout') 进行数据传输。
  • 工具注册与调用: 提供了在服务器端注册工具的能力,并能接收客户端(LLM)发起的工具调用请求并执行。
  • 示例工具: 包含一个简单的“掷骰子”工具作为功能演示。
  • LLM 集成示例: 项目中包含一个 MCP 客户端/Host 示例 ('main.rb'),演示了如何启动 MCP 服务器,并使用 Anthropic Claude LLM 调用服务器上注册的工具来响应用户查询。

安装步骤

  1. 安装 Ruby 环境: 确保您的系统已安装 Ruby 及其包管理工具 Bundler。
  2. 克隆仓库:
    git clone https://github.com/YuheiNakasaka/scratch-mcp-rb.git
  3. 进入项目目录:
    cd scratch-mcp-rb
  4. 复制环境变量文件:
    cp .env.example .env
    请注意:'main.rb' 中的示例 Host 使用 Anthropic API,您可能需要在 '.env' 文件中配置 'ANTHROPIC_API_KEY'。MCP 服务器本身不依赖此密钥。
  5. 安装依赖:
    bundle install

服务器配置

此 MCP 服务器实现通过启动一个特定的 Ruby 脚本来运行。对于使用此服务器的 MCP 客户端,需要提供启动服务器的命令及其参数。

  • 服务器名称: 您可以为这个服务器定义一个名称,例如 "Ruby Dice Server"。
  • 启动命令 (Command): 用于执行 Ruby 脚本的命令,通常是 'ruby'。
  • 启动参数 (Args): 传递给 'ruby' 命令的参数,指定要运行的服务器入口文件路径。根据该仓库结构,示例 MCP 服务器的入口文件是 'mcp/dice/server.rb'。
  • 传输协议: Stdio (标准输入输出)。

一个典型的 MCP 客户端配置文件中用于启动此服务器的片段(非代码示例)可能类似于:

// JSON 格式的服务器配置示例(仅作说明)
{
  "name": "Ruby Dice Server",
  "command": ["ruby"],
  "args": ["mcp/dice/server.rb"],
  "transport": {
    "type": "stdio"
  }
}

请根据您的 MCP 客户端的要求,提供相应的配置信息。

基本使用方法

安装依赖后,可以直接运行项目中的 'main.rb' 文件,它将启动内置的 MCP 客户端,并由客户端启动示例的 MCP 服务器进程:

ruby main.rb

程序启动后,您会看到提示 'MCP Client Started!'。您可以输入文字进行交互。例如,您可以尝试输入包含掷骰子意图的语句(因为示例 Host 会将输入发送给 LLM,再由 LLM 决定是否调用服务器上的骰子工具):

  • 输入: 'Roll a 6-sided dice'
  • 输入: '掷一个20面的骰子'

输入 'exit' 可以退出程序。

信息

分类

开发者工具