使用说明

项目简介

Rust MCP SDK (RMCP) 是 Model Context Protocol (MCP) 的官方 Rust 软件开发工具包。它旨在帮助开发者使用 Rust 语言快速构建 MCP 服务器和客户端应用,以标准化方式为大型语言模型 (LLM) 应用提供上下文信息和功能扩展。

主要功能点

  • 资源管理 (Resources): 提供托管和管理资源的能力,支持数据访问。
  • 工具注册与执行 (Tools): 允许注册和执行外部功能,供 LLM 客户端调用,例如计算器、文件系统访问等。
  • Prompt 模板 (Prompts): 支持定义和渲染 Prompt 模板,实现可定制的 LLM 交互模式。
  • JSON-RPC 协议: 通过 JSON-RPC 协议与客户端通信,实现标准化的请求和响应处理。
  • 多种传输协议支持: 支持 Stdio, SSE, WebSocket 等多种传输协议,满足不同应用场景的需求。
  • 会话管理和能力声明: 服务器端负责会话管理和能力声明,提供安全可扩展的上下文服务框架。
  • 宏工具箱 (Toolbox Macros): 提供 'tool' 和 'toolbox' 宏,简化工具的声明和管理。

安装步骤

  1. 添加依赖到 'Cargo.toml' 文件:

    在你的 'Cargo.toml' 文件中,将 'rmcp' 添加到 'dependencies' 部分。如果需要构建 MCP 服务器,请启用 'server' feature。

    rmcp = { version = "0.1", features = ["server"] }

    或者,如果使用开发分支,可以指定 Git 仓库:

    rmcp = { git = "https://github.com/modelcontextprotocol/rust-sdk", branch = "main" }
  2. 构建项目:

    使用 'cargo build' 命令构建你的 Rust 项目。

服务器配置

MCP 服务器的配置主要体现在使用 SDK 构建服务器程序时,如何定义和注册资源 (Resources)、工具 (Tools) 和 Prompt 模板 (Prompts)。 MCP 客户端无需配置 MCP 服务器的启动命令或参数,客户端的配置应关注如何连接到已运行的 MCP 服务器。

以下是一个使用 'rust-sdk' 构建 MCP 服务器的简单示例,展示了如何使用 SDK 启动一个服务,但具体的服务器行为(例如提供的工具和资源)需要开发者根据业务需求实现。

use rmcp::{ServiceExt, transport::TokioChildProcess};
use tokio::process::Command;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = ().serve(
        TokioChildProcess::new(Command::new("npx").arg("-y").arg("@modelcontextprotocol/server-everything"))?
    ).await?;
    Ok(())
}

基本使用方法

使用 Rust MCP SDK 构建 MCP 服务器的基本步骤包括:

  1. 构建传输层 (Transport): 选择合适的传输协议,例如 Stdio、SSE 或 WebSocket,并使用 SDK 提供的工具构建传输通道。示例代码展示了如何使用标准输入/输出 '(stdin(), stdout())' 或子进程 'TokioChildProcess' 作为传输层。

  2. 构建服务处理 (Service Handler): 创建 Rust 结构体并实现 'ServerHandler' trait。在 'ServerHandler' 中,你可以注册和管理资源、工具和 Prompt 模板,并实现处理客户端请求的逻辑。SDK 提供了 'tool' 和 'tool_box' 宏来简化工具的定义。

  3. 组合传输层和服务 (Serve): 使用 'service.serve(transport).await?' 将传输层和服务处理逻辑组合起来,启动 MCP 服务器。

  4. 与服务器交互 (Interact): 服务器启动后,可以使用 MCP 客户端 SDK 或其他 MCP 客户端工具,通过 JSON-RPC 协议与服务器进行交互,例如调用工具、读取资源等。示例代码展示了如何使用 'server.list_roots().await?' 等方法发送请求。

示例代码参考

仓库的 'examples' 目录下提供了更详细的示例代码,包括不同传输协议的用法和工具的定义示例,可以帮助你快速上手使用 Rust MCP SDK 构建 MCP 服务器。

信息

分类

开发者工具