使用说明

项目简介

'model_context_protocol_rs' 是一个使用 Rust 语言开发的 Model Context Protocol (MCP) 服务器实现。该项目旨在为大型语言模型 (LLM) 应用提供一个标准化的后端服务,用于管理上下文信息和扩展功能。它实现了 MCP 协议的关键特性,允许 LLM 客户端通过 JSON-RPC 协议与服务器交互,获取资源、调用工具和渲染 Prompt 模板。

主要功能点

  • 资源管理 (Resources)
    • 托管和管理文件系统资源。
    • 提供基于 URI 的资源访问能力(读取资源内容)。
    • 支持资源变更订阅,允许客户端接收资源更新通知。
    • 支持资源模板列表功能。
  • 工具调用 (Tools)
    • 注册和管理可执行的工具,例如示例中提供的计算器工具。
    • 允许客户端通过服务器调用注册的工具,扩展 LLM 的功能。
    • 支持列出可用工具。
  • Prompt 模板 (Prompts)
    • 注册和管理 Prompt 模板,支持参数化 Prompt。
    • 允许客户端获取预定义的 Prompt 模板,并根据需要传入参数进行渲染。
    • 支持列出可用 Prompt 模板。
  • 传输协议
    • 支持 STDIO (标准输入输出) 和 SSE (Server-Sent Events) 两种传输协议,方便在不同环境中使用。
  • 日志管理
    • 提供日志记录功能,并允许客户端动态设置日志级别。
  • 配置化
    • 服务器配置通过 JSON 文件加载,方便用户自定义服务器行为。

安装步骤

  1. 安装 Rust 环境: 确保你的系统中已安装 Rust 编程语言和 Cargo 包管理器。你可以访问 Rust 官网 按照指引进行安装。

  2. 克隆仓库: 打开终端,使用 'git clone' 命令克隆 'model_context_protocol_rs' 仓库到本地:

    git clone https://github.com/EmilLindfors/model_context_protocol_rs
    cd model_context_protocol_rs
  3. 构建项目: 在仓库根目录下,使用 Cargo 构建项目:

    cargo build

    构建成功后,可执行文件将位于 'target/debug/server' (或 'target/release/server' 如果使用 'cargo build --release')。

服务器配置

MCP 服务器的配置通过 JSON 文件进行管理。仓库中提供了一个示例配置文件 'servers/test.json'。你可以根据需要修改该文件,或者创建新的配置文件。

以下是 'servers/test.json' 文件的内容和参数注释:

{
  "server": {
    "name": "mcp-server",
    "version": "0.1.0",
    "transport": "stdio",  // 传输协议类型,可选 "stdio", "sse", "ws" (WebSocket 未实现)
    "host": "127.0.0.1",   // 服务器主机地址,仅当 transport 为 "sse" 或 "ws" 时生效
    "port": 3000,        // 服务器端口,仅当 transport 为 "sse" 或 "ws" 时生效
    "max_connections": 100, // 最大连接数
    "timeout_ms": 30000   // 请求超时时间,单位毫秒
  },
  "resources": {
    "root_path": ".",      // 资源根路径,服务器访问资源的起始目录
    "allowed_schemes": ["file"], // 允许的资源 URI scheme,例如 "file" 表示文件系统资源
    "max_file_size": 10485760, // 最大允许读取的文件大小,单位字节
    "enable_templates": true // 是否启用资源模板功能
  },
  "logging": {
    "level": "INFO"       // 服务器日志级别,可选 "TRACE", "DEBUG", "INFO", "WARN", "ERROR"
  },
  "tools": [],             // 预注册的工具列表 (当前示例为空)
  "prompts": []            // 预注册的 Prompt 模板列表 (当前示例为空,但 server.rs 中有代码注册示例 Prompt)
}

MCP 客户端配置示例

MCP 客户端需要配置如何启动 MCP 服务器。以下是一个 JSON 格式的客户端配置示例,用于连接使用 'servers/test.json' 配置的 'model_context_protocol_rs' 服务器:

{
  "serverName": "mcp-rs-server",
  "command": "cargo",
  "args": ["run", "--", "-c", "servers/test.json"]
}
  • 'serverName': 服务器名称,客户端用于标识连接的服务器。
  • 'command': 启动 MCP 服务器的可执行命令,这里使用 'cargo run' 来运行 Rust 项目。
  • 'args': 传递给 'command' 的参数列表。'"--"' 分隔 Cargo 命令和应用程序参数,'-c servers/test.json' 指定服务器加载 'servers/test.json' 配置文件。

基本使用方法

  1. 启动 MCP 服务器: 在仓库根目录下,使用以下命令启动 MCP 服务器,并指定配置文件路径:

    cargo run -- -c servers/test.json

    服务器将根据 'servers/test.json' 中的配置运行。默认情况下,服务器使用 STDIO 传输协议。

  2. 使用 MCP 客户端连接服务器: 你需要一个 MCP 客户端来连接到运行中的服务器。仓库中包含了一个简单的客户端示例 'bin/client.rs'。 你可以使用以下命令运行客户端示例,并连接到 STDIO 传输的服务器:

    cargo run -- bin/client.rs --transport stdio

    或者连接到 SSE 传输的服务器 (假设服务器配置为 SSE 并在端口 3000 运行):

    cargo run -- bin/client.rs --transport sse --server http://127.0.0.1:3000

    客户端启动后,你可以使用其提供的子命令 (例如 'list-resources', 'read-resource', 'call-tool' 等) 与服务器进行交互。 客户端命令可以通过 '--help' 参数查看。

  3. 通过客户端与服务器交互: 使用客户端提供的命令,例如:

    • 'cargo run -- bin/client.rs --transport stdio list-resources':列出服务器管理的资源。
    • 'cargo run -- bin/client.rs --transport stdio read-resource --uri file:///README.md':读取 'README.md' 文件的内容。
    • 'cargo run -- bin/client.rs --transport stdio list-tools':列出服务器注册的工具。
    • 'cargo run -- bin/client.rs --transport stdio call-tool --name calculator --args '{"operation": "add", "operands": [2, 3]}'':调用 'calculator' 工具执行加法运算。

请根据客户端和服务器的实际运行情况和提供的命令进行操作。

信息

分类

AI与计算