使用说明

项目简介

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 的类型转换支持,简化集成。

安装步骤

  1. 安装 Rust 环境: 确保已安装 Rust 编程环境和 Cargo 包管理器。
  2. 添加依赖: 在您的 'Cargo.toml' 文件中添加 'commune' 依赖:
    [dependencies]
    commune = { package = "mcp-commune", version = "0.1.2" }
  3. 构建项目: 使用 '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(())
}

使用步骤:

  1. 创建一个新的 Rust 项目。
  2. 将上述代码添加到 'src/main.rs' 文件中。
  3. 根据需要添加更多资源、工具和 Prompt 定义。
  4. 使用 'cargo build' 构建项目。
  5. 运行编译后的可执行文件(例如 'target/debug/your_project_name')。
  6. MCP 客户端可以使用 WebSocket 连接到 'ws://localhost:8080' (或其他您配置的地址) 来访问服务器提供的 MCP 服务。

注意: 这只是一个基础示例,实际应用中您可能需要更完善的错误处理、配置管理以及更复杂的资源、工具和 Prompt 定义。 请参考 Commune 库的文档和示例进行更深入的开发。

信息

分类

开发者工具