使用说明

项目简介

Encom 是一个 Ruby Gem,旨在简化 Model Context Protocol (MCP) 服务器和客户端的开发。它提供了一套灵活易用的框架,使开发者能够构建符合 MCP 规范的应用,用于上下文管理和工具集成。

主要功能点

  • MCP 服务器实现: 提供 Ruby 库用于快速构建 MCP 服务器,支持定义和托管工具 (Tools)。
  • MCP 客户端支持: 提供 Ruby 库用于构建 MCP 客户端,可以连接到 MCP 服务器并调用其提供的工具。
  • 工具 (Tools) 定义: 允许在服务器端定义工具,包括工具名称、描述和输入参数Schema。
  • JSON-RPC 通信: 使用标准的 JSON-RPC 协议与客户端进行通信。
  • Stdio 传输: 支持通过标准输入/输出 (Stdio) 进行数据传输。

安装步骤

  1. 确保你的系统中安装了 Ruby 和 RubyGems。
  2. 通过 RubyGems 安装 Encom:
    gem install encom
    或者,如果使用 Bundler,将以下行添加到你的 'Gemfile' 中:
    gem 'encom'
    然后运行 'bundle install'。

服务器配置

为了让 MCP 客户端连接到使用 Encom 构建的 MCP 服务器,你需要提供服务器的启动命令和参数。以下是一个 JSON 格式的配置示例,你需要在 MCP 客户端中配置类似的信息:

{
  "server name": "MyMCPServer",
  "command": "ruby",
  "args": ["path/to/your/server.rb"]
  // "command":启动 MCP 服务器的命令,通常是 Ruby 解释器。
  // "args":命令的参数,这里指向你的服务器 Ruby 脚本文件 "path/to/your/server.rb"。
  //          你需要将 "path/to/your/server.rb" 替换为实际的服务器脚本路径。
}

请注意: MCP 客户端需要根据你实际的服务器脚本位置和启动方式配置 'command' 和 'args'。 'server name' 可以自定义,用于标识服务器。

基本使用方法

1. 构建 MCP 服务器:

创建一个 Ruby 文件(例如 'my_server.rb'),并按照示例代码定义你的服务器和工具:

require 'encom/server'
require 'encom/server_transport/stdio'

class MyServer < Encom::Server
  name "MyMCPServer"
  version "1.0.0"

  tool :hello_world,
       "Says hello to the specified name",
       {
         type: "object",
         properties: {
           name: {
             type: "string",
             description: "The name to greet"
           }
         },
         required: ["name"]
       } do |args|
         { greeting: "Hello, #{args[:name]}!" }
       end
end

server = MyServer.new
server.run(Encom::ServerTransport::Stdio)

运行服务器:

ruby my_server.rb

2. 构建 MCP 客户端并连接服务器:

创建一个 Ruby 文件(例如 'my_client.rb'),并按照示例代码创建客户端并连接到服务器:

require 'encom/client'
require 'encom/transport/stdio'

client = Encom::Client.new(
  name: 'MyClient',
  version: '1.0.0',
  capabilities: {
    tools: {
      execute: true
    }
  }
)

client.on_error do |error|
  puts "ERROR: #{error.class} - #{error.message}"
end

transport = Encom::Transport::Stdio.new(
  command: 'ruby',
  args: ['path/to/your/server.rb'] # 替换为你的服务器脚本路径,与服务器配置中的 args 一致
)

client.connect(transport)

tools = client.list_tools
puts "Available tools: #{tools.map { |tool| tool[:name] }}"

result = client.call_tool(
  name: 'hello_world',
  arguments: { name: 'World' }
)
puts result[:greeting]

client.close

运行客户端:

ruby my_client.rb

确保客户端的 'transport' 配置中的 'command' 和 'args' 与你启动服务器的命令一致,以便客户端能够正确连接到服务器。

信息

分类

开发者工具