使用说明
项目简介
MCP Lite 是 Model Context Protocol (MCP) 的一个轻量级 Ruby 实现,用于构建 LLM(大型语言模型)应用的后端服务。它旨在简化 LLM 应用与外部数据和功能的集成,提供资源管理、工具调用和 Prompt 管理等核心能力,帮助开发者快速搭建功能丰富的 LLM 应用。
主要功能点
- 资源管理 (Resources):允许服务器托管和管理各种数据资源,并通过 URI 提供标准化的数据访问接口,供 LLM 客户端按需读取。支持文本和二进制资源,并可定义资源描述和 MIME 类型。
- 工具注册与执行 (Tools):支持注册各种外部功能为工具,LLM 客户端可以通过调用工具来执行外部操作,例如数据查询、业务逻辑处理等。工具定义输入参数和描述信息,方便 LLM 理解和调用。
- Prompt 模板 (Prompts):支持定义和管理 Prompt 模板,允许开发者预设不同场景下的 Prompt 结构和内容,并支持参数化定制,实现灵活可控的 LLM 交互模式。
- JSON-RPC 协议通信:使用标准的 JSON-RPC 协议与 LLM 客户端进行通信,接收客户端请求并返回 JSON-RPC 响应。
- Stdio 传输协议:默认支持 Stdio (标准输入输出) 作为传输协议,方便快速部署和集成。
- 会话管理和能力声明:服务器端负责会话管理,并声明自身提供的资源、工具和 Prompt 能力。
- 灵活的鉴权与授权:支持工具和资源的访问控制,可以配置服务器级别的认证以及在工具层面进行细粒度的授权控制。
安装步骤
-
添加 Gem 依赖
在你的 Ruby 项目的 'Gemfile' 文件中添加 'mcp_lite' 依赖:
gem 'mcp_lite' -
安装 Gem
运行 'bundle install' 或 'gem install mcp_lite' 命令安装 'mcp_lite' Gem。
服务器配置
MCP 服务器需要通过启动命令和参数与 MCP 客户端建立连接。以下是 MCP 客户端的 'mcpServers' 配置示例,用于连接到 'mcp_lite' 服务器:
{ "mcpServers": { "my-mcp-server": { // 服务器名称,客户端自定义 "command": "/path/to/ruby", // Ruby 解释器路径 "args": ["/path/to/your/mcp_server.rb"] // MCP 服务器启动脚本路径 } } }
配置说明:
- 'server name': 为 MCP 服务器自定义一个名称,例如 'my-mcp-server'。客户端使用此名称引用服务器。
- 'command': 指向 Ruby 解释器的可执行文件路径,例如 '/usr/bin/ruby' 或 '/usr/local/bin/ruby'。
- 'args': 一个字符串数组,包含启动 MCP 服务器脚本所需的参数。通常第一个参数是你的 MCP 服务器脚本的路径,例如 '/path/to/your/mcp_server.rb'。
请根据你的 Ruby 环境和脚本路径,修改 'command' 和 'args' 的配置。你需要创建一个 Ruby 脚本来启动 'McpLite::Server' 实例,并指定你的 Schema 类。
基本使用方法
-
定义 Schema
创建一个 Schema 类,用于注册你的工具 (Tools)、资源 (Resources) 和 Prompt 模板 (Prompts)。例如:
# app/mcp/schemas/my_schema.rb class MySchema < McpLite::Schema::Base tool CreateNoteTool tool SearchUsersTool resource UserResource, items: User.all.map { |user| { id: user.id } } prompt HelloPrompt end -
创建 Tool 类
创建继承自 'McpLite::Tool::Base' 的 Tool 类,定义工具的名称、描述、输入参数和执行逻辑。例如:
# app/mcp/tools/create_note_tool.rb class CreateNoteTool < McpLite::Tool::Base tool_name "create_note" description "Create a new note" argument :title, :string, required: true, description: "Note title" argument :content, :string, required: true, description: "Note content" def call(title:, content:, context: {}) note = Note.create(title: title, content: content) [{ type: "text", text: "Note created with ID: #{note.id}" }] end end -
创建 Resource 类
创建继承自 'McpLite::Resource::Base' 的 Resource 类,定义资源的名称、URI、MIME 类型和内容获取方式。例如:
# app/mcp/resources/user_resource.rb class UserResource < McpLite::Resource::Base mime_type "application/json" def initialize(id:) @user = User.find(id) end def resource_name @user.name end def uri "data://localhost/users/#{@user.id}" end def description "User profile information" end def text { id: @user.id, name: @user.name, email: @user.email } end end -
创建 Prompt 类
创建继承自 'McpLite::Prompt::Base' 的 Prompt 类,定义 Prompt 的名称、描述、参数和消息内容。例如:
# app/mcp/prompts/hello_prompt.rb class HelloPrompt < McpLite::Prompt::Base prompt_name "hello" description "A simple greeting prompt" argument :name, required: true, description: "User name" def messages(name:) [ McpLite::Message::Text.new(role: "user", text: "Hello, #{name}!") ] end end -
启动 MCP 服务器
创建一个 Ruby 脚本 (例如 'mcp_server.rb'),用于启动 'McpLite::Server' 实例,并指定你的 Schema 类。
# mcp_server.rb require 'mcp_lite' require_relative './app/mcp/schemas/my_schema' # 替换为你的 Schema 文件路径 server = McpLite::Server.new( name: "My App MCP Server", uri: 'http://localhost:3000/mcp' # 如果需要 HTTP 接口,配置 URI ) server.serve_stdio # 使用 Stdio 协议运行 'ruby mcp_server.rb' 命令启动 MCP 服务器。
-
客户端请求示例
LLM 客户端可以使用 JSON-RPC 格式发送请求到 MCP 服务器。例如,获取工具列表的请求:
{ "jsonrpc": "2.0", "method": "tools/list", "params": {}, "id": 1 }MCP Lite 服务器会处理请求并返回 JSON-RPC 响应。
通过以上步骤,你可以使用 MCP Lite 快速构建和部署 MCP 服务器,为你的 LLM 应用提供强大的上下文服务能力。
信息
分类
开发者工具