使用说明
项目简介
Commune 是一个 Rust 库,旨在支持开发可发现的 AI 代理网络。它作为 mcp-sdk-rs 的封装,为 Model Context Protocol (MCP) 网络内的对等节点发现和资源利用提供了增强功能。Commune 可以作为 MCP 服务器,对外提供资源、工具和 Prompt 服务。
主要功能点
- MCP 服务器实现: 实现了 MCP 协议的核心服务器功能,能够处理来自 MCP 客户端的请求。
- 资源管理: 支持托管和管理资源 (Resources),允许客户端访问和获取资源内容。
- 工具注册: 支持注册工具 (Tools),允许客户端调用服务器提供的外部功能。
- Prompt 模板: 支持定义和管理 Prompt 模板 (Prompts),方便客户端获取预定义的 Prompt 消息。
- WebSocket 通信: 使用 WebSocket 协议与 MCP 客户端进行通信。
- 对等节点发现: 具备发现和维护对等 MCP 服务器列表的能力(实验性功能)。
- 类型转换: 提供对 AWS Bedrock 等推理 API 的类型转换支持,简化集成。
安装步骤
- 安装 Rust 环境: 确保已安装 Rust 编程环境和 Cargo 包管理器。
- 添加依赖: 在您的 'Cargo.toml' 文件中添加 'commune' 依赖:
[dependencies] commune = { package = "mcp-commune", version = "0.1.2" } - 构建项目: 使用 'cargo build' 命令构建您的 Rust 项目,包含 Commune 库。
服务器配置
Commune 库本身是作为库使用的,您需要创建一个 Rust 项目并使用 Commune 库来构建 MCP 服务器应用。以下是一个 MCP 客户端配置示例,用于连接使用 Commune 构建的 MCP 服务器。
{ "serverName": "commune-server", "command": "your_commune_server_binary", "args": ["--address", "ws://localhost:8080"] }
配置参数说明:
- 'serverName': 服务器名称,您可以自定义。
- 'command': 请替换为您的 Commune 服务器可执行文件的路径。 这通常是您 Rust 项目编译后生成的二进制文件,例如 'target/debug/your_project_name'。
- 'args': 启动服务器的参数列表。
- '--address': 指定服务器监听的 WebSocket 地址。请根据您的服务器实际监听地址进行修改。 例如,'ws://localhost:8080' 表示服务器将在本地的 8080 端口通过 WebSocket 协议提供服务。 您需要在您的 Commune 服务器代码中配置并启动监听在这个地址的服务。
注意: 您需要基于 Commune 库编写 Rust 代码来创建可执行的服务器程序。 'command' 字段需要指向这个编译后的可执行文件。 'args' 中的 '--address' 参数是示例,具体的参数和配置需要在您的服务器代码中定义和解析。
基本使用方法
以下是一个简单的 Rust 代码示例,展示如何使用 Commune 库构建一个基本的 MCP 服务器,并提供一些示例资源、工具和 Prompt。
use commune::prelude::*; use mcp_sdk_rs::types::*; use serde_json::json; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let server = ServerBuilder::new() .with_resource(Resource { uri: "test://static/resource/1".to_string(), name: "example-resource-1".to_string(), description: "An example static resource".to_string(), contents: vec![ResourceContents { media_type: "text/plain".to_string(), data: "This is example resource 1".as_bytes().to_vec(), }], templates: vec![], }) .with_tool(Tool { name: "example-tool".to_string(), description: "An example tool".to_string(), schema: json!({ "type": "object", "properties": { "input": { "type": "object", "properties": { "text": { "type": "string", "description": "Text to process" } }, "required": ["text"] } }, "required": ["input"] }), }) .with_prompt(Prompt { name: "example-prompt".to_string(), description: "An example prompt".to_string(), messages: vec![PromptMessage { role: "user".to_string(), content: "This is an example prompt message.".to_string(), }], context: None, }) .build() .await?; server.start("0.0.0.0:8080").await?; // 启动服务器监听 8080 端口 Ok(()) }
使用步骤:
- 创建一个新的 Rust 项目。
- 将上述代码添加到 'src/main.rs' 文件中。
- 根据需要添加更多资源、工具和 Prompt 定义。
- 使用 'cargo build' 构建项目。
- 运行编译后的可执行文件(例如 'target/debug/your_project_name')。
- MCP 客户端可以使用 WebSocket 连接到 'ws://localhost:8080' (或其他您配置的地址) 来访问服务器提供的 MCP 服务。
注意: 这只是一个基础示例,实际应用中您可能需要更完善的错误处理、配置管理以及更复杂的资源、工具和 Prompt 定义。 请参考 Commune 库的文档和示例进行更深入的开发。
信息
分类
开发者工具