使用说明

项目简介

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 能力。
  • 灵活的鉴权与授权:支持工具和资源的访问控制,可以配置服务器级别的认证以及在工具层面进行细粒度的授权控制。

安装步骤

  1. 添加 Gem 依赖

    在你的 Ruby 项目的 'Gemfile' 文件中添加 'mcp_lite' 依赖:

    gem 'mcp_lite'
  2. 安装 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 类。

基本使用方法

  1. 定义 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
  2. 创建 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
  3. 创建 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
  4. 创建 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
  5. 启动 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 服务器。

  6. 客户端请求示例

    LLM 客户端可以使用 JSON-RPC 格式发送请求到 MCP 服务器。例如,获取工具列表的请求:

    {
      "jsonrpc": "2.0",
      "method": "tools/list",
      "params": {},
      "id": 1
    }

    MCP Lite 服务器会处理请求并返回 JSON-RPC 响应。

通过以上步骤,你可以使用 MCP Lite 快速构建和部署 MCP 服务器,为你的 LLM 应用提供强大的上下文服务能力。

信息

分类

开发者工具