使用说明
项目简介
Viam MCP SDK 是一个使用 Rust 编写的软件开发工具包(SDK),旨在帮助开发者快速构建符合 Model Context Protocol (MCP) 规范的服务器组件。该 SDK 提供了一系列工具和抽象,用于处理 JSON-RPC 通信、注册和调用工具,以及管理服务器状态,从而简化 MCP 服务器的开发过程。开发者可以利用此 SDK 创建能够为大型语言模型(LLM)应用提供上下文信息和功能扩展的后端服务。
主要功能点
- 简化 MCP 服务器开发: 提供 Rust 库和宏,降低 MCP 服务器组件的开发复杂度。
- JSON-RPC 2.0 支持: 处理 MCP 客户端与服务器之间的标准 JSON-RPC 通信。
- 工具 (Tools) 注册与调用: 允许开发者注册自定义工具,并通过标准 MCP 协议被 LLM 客户端调用执行,扩展 LLM 的能力。
- 可扩展性: 通过模块化设计和自定义 Handler,支持功能的灵活扩展和定制。
- 基于 WASM: 支持构建 WASM 组件,便于部署和跨平台运行。
- 提供示例: 包含详细的示例代码,展示如何使用 SDK 构建 MCP 服务器组件和自定义工具。
安装步骤
- 确保已安装 Rust 和 Cargo: 如果尚未安装 Rust 开发环境,请访问 Rust 官网 按照指引进行安装。
- 创建 Rust 项目: 使用 Cargo 创建一个新的 Rust 项目。在终端中执行:
cargo new my-mcp-server cd my-mcp-server - 添加 Viam MCP SDK 依赖: 打开 'Cargo.toml' 文件,在 '[dependencies]' 部分添加 'viam-mcp-sdk' 依赖:
或者使用 Cargo 命令直接添加依赖:[dependencies] viam-mcp-sdk = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" chrono = "0.4"cargo add viam-mcp-sdk serde serde_json chrono - 配置 'wit' 文件路径: 如果需要使用仓库中的 'wit' 文件,请确保 'wit_bindgen' 宏的 'path' 指向正确的 'wit' 文件夹。通常情况下,如果直接使用 'viam-mcp-sdk' crate,可以不需要手动配置 'wit' 文件路径。
服务器配置
MCP 客户端需要配置 MCP 服务器的启动命令和参数才能建立连接。以下是基于 'examples/mcp-server-component' 示例生成的配置信息,用于指导 MCP 客户端如何启动和连接到使用 Viam MCP SDK 构建的服务器组件。
{ "serverName": "my-mcp-server", "command": "cargo", "args": [ "run", "--example", "mcp-server-component" ], "description": "启动基于 Viam MCP SDK 构建的 MCP 服务器组件。该命令首先使用 'cargo run' 运行 'mcp-server-component' 示例,该示例演示了如何使用 SDK 注册和调用工具,并通过标准输入/输出 (stdio) 进行 JSON-RPC 通信,从而实现 MCP 服务器的功能。" }
参数注释:
- 'serverName': 服务器的名称,可以自定义。
- 'command': 启动服务器的命令,这里使用 'cargo',因为示例项目是一个 Rust 项目,需要使用 Cargo 运行。
- 'args': 传递给 'command' 的参数列表。
- '"run"': Cargo 命令,用于运行项目。
- '"--example"': Cargo 参数,指定运行示例。
- '"mcp-server-component"': 示例名称,对应 'examples/mcp-server-component' 示例。
- 'description': 对服务器配置的描述,帮助用户理解该配置的作用。
注意: 实际部署时,可能需要将服务器组件编译为 WASM 或其他可执行格式,并相应地修改 'command' 和 'args' 配置。上述配置适用于在开发环境中使用 'cargo run' 运行示例的情况。
基本使用方法
- 创建自定义工具: 在 'src' 目录下创建 'handlers' 文件夹,并在其中创建 Rust 文件 (例如 'src/handlers/my_tool.rs'),实现 'ToolHandler' trait 来定义自定义工具。参考 'examples/mcp-server-component/src/handlers' 目录下的示例工具代码。
- 注册工具: 在 'src/lib.rs' 文件中,使用 'mcp_server_component!' 宏注册自定义工具。例如:
use viam_mcp_sdk::mcp_server_component; use crate::handlers::my_tool::MyTool; // 假设你创建了 MyTool mod handlers; // 引入 handlers 模块 mcp_server_component! { tools: [ MyTool // 注册 MyTool ] } - 运行服务器: 在项目根目录下,使用 'cargo run --example mcp-server-component' 命令运行示例服务器组件。服务器将通过标准输入 (stdin) 接收 JSON-RPC 请求,并通过标准输出 (stdout) 返回响应。
- 与 MCP 客户端交互: 使用 MCP 客户端(例如基于 MCP 协议的 LLM 应用或客户端 SDK)连接到运行中的服务器。客户端可以通过 JSON-RPC 消息调用服务器提供的工具。例如,发送 'tools/list' 方法请求获取工具列表,或发送 'tools/call' 方法请求调用特定工具。
示例工具代码 ( 'src/handlers/my_tool.rs' ):
use viam_mcp_sdk::tool::ToolHandler; use viam_mcp_sdk::command::JsonRpcError; use serde_json::{Value, json}; pub struct MyTool; impl Default for MyTool { fn default() -> Self { Self } } impl ToolHandler for MyTool { fn handle(&self, _params: &Value) -> Result<Value, JsonRpcError> { // 工具的具体逻辑 Ok(json!({ "message": "Hello from MyTool!" })) } fn name(&self) -> &'static str { "my_tool" } fn description(&self) -> &'static str { "一个简单的自定义工具示例" } fn input_schema(&self) -> Value { json!({ "type": "object", "properties": {} }) } }
确保在 'src/handlers/mod.rs' 中导出你的工具:
pub mod my_tool; pub use my_tool::MyTool;
通过以上步骤,你可以使用 Viam MCP SDK 快速搭建和扩展 MCP 服务器组件,为 LLM 应用提供强大的后端支持。
信息
分类
开发者工具