使用说明
项目简介
Encom 是一个 Ruby Gem,旨在简化 Model Context Protocol (MCP) 服务器和客户端的开发。它提供了一套灵活易用的框架,使开发者能够构建符合 MCP 规范的应用,用于上下文管理和工具集成。
主要功能点
- MCP 服务器实现: 提供 Ruby 库用于快速构建 MCP 服务器,支持定义和托管工具 (Tools)。
- MCP 客户端支持: 提供 Ruby 库用于构建 MCP 客户端,可以连接到 MCP 服务器并调用其提供的工具。
- 工具 (Tools) 定义: 允许在服务器端定义工具,包括工具名称、描述和输入参数Schema。
- JSON-RPC 通信: 使用标准的 JSON-RPC 协议与客户端进行通信。
- Stdio 传输: 支持通过标准输入/输出 (Stdio) 进行数据传输。
安装步骤
- 确保你的系统中安装了 Ruby 和 RubyGems。
- 通过 RubyGems 安装 Encom:
或者,如果使用 Bundler,将以下行添加到你的 'Gemfile' 中:gem install encom
然后运行 'bundle install'。gem 'encom'
服务器配置
为了让 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' 与你启动服务器的命令一致,以便客户端能够正确连接到服务器。
信息
分类
开发者工具