Appearance
RMCP
一个使用 tokio 异步运行时实现的官方 Rust Model Context Protocol(模型上下文协议) SDK。
本仓库包含以下模块包(crates):
- rmcp:核心模块包,提供 RMCP 协议的实现(如需了解更多,请访问 rmcp)
- rmcp-macros:用于生成 RMCP 工具实现的程序宏模块包(如需了解更多,请访问 rmcp-macros)
使用方法
导入模块包
toml
rmcp = { version = "0.2.0", features = ["server"] }
## 或者开发通道
rmcp = { git = "https://github.com/modelcontextprotocol/rust-sdk", branch = "main" }第三方依赖
基础依赖:
构建客户端
启动客户端
rust,
use rmcp::{ServiceExt, transport::{TokioChildProcess, ConfigureCommandExt}};
use tokio::process::Command;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = ().serve(TokioChildProcess::new(Command::new("npx").configure(|cmd| {
cmd.arg("-y").arg("@modelcontextprotocol/server-everything");
}))?).await?;
Ok(())
}构建服务器
构建传输层
rust,
use tokio::io::{stdin, stdout};
let transport = (stdin(), stdout());构建一个服务
你可以通过使用 ServerHandler 或 ClientHandler 轻松地构建一个服务。
rust,
let service = common::counter::Counter::new();启动服务器
rust,
// 此调用将完成初始化过程
let server = service.serve(transport).await?;与服务器交互
一旦服务器初始化完成,你就可以发送请求或通知:
rust,
// 请求
let roots = server.列出根目录().await?;
// 或发送通知
server.通知已取消(...).await?;等待服务关闭
rust,
let quit_reason = server.waiting().await?;
// 或者取消它
let quit_reason = server.cancel().await?;示例
请参阅 示例
OAuth 支持
详情请参阅 oauth_support。
相关资源
相关项目
- rustfs-mcp - 高性能 MCP 服务器,为 AI/LLM 集成提供 S3 兼容的对象存储操作
- containerd-mcp-server - 基于 containerd 的 MCP 服务器实现
开发
贡献者建议
请参阅 docs/CONTRIBUTE.MD 获取一些贡献建议。
使用开发容器
如果你想使用开发容器,请参阅 docs/DEVCONTAINER.md 获取有关使用 Dev Container 进行开发的说明。
