项目简介

mcp.rs 是一个基于 Rust 语言开发的 Model Context Protocol (MCP) 服务器实现。它旨在为 AI 模型提供一个标准化的接口,以便模型能够安全、高效地访问外部上下文信息和功能。该项目提供了资源管理、工具注册、Prompt 模板定义等核心 MCP 服务器功能,并支持多种传输协议,适用于构建可扩展的 AI 应用后端。

主要功能点

  • 资源管理 (Resources)
    • 提供文件系统资源提供器,允许 AI 模型访问本地文件。
    • 支持资源模板,实现动态资源访问。
    • 支持资源订阅,允许客户端接收资源更新通知。
  • 工具注册与执行 (Tools)
    • 允许注册和调用外部工具,扩展 AI 模型的功能,例如示例中集成了计算器工具。
  • Prompt 模板 (Prompts)
    • 支持定义和管理 Prompt 模板,方便定制 LLM 交互模式。
  • 多种传输协议
    • 支持 Stdio (标准输入/输出) 和 SSE (Server-Sent Events) 传输协议,未来可扩展支持 WebSocket。
  • 灵活配置
    • 支持通过 YAML/JSON 配置文件、环境变量和命令行参数进行配置。
  • 安全特性
    • 内置访问控制、路径遍历保护、速率限制和 CORS 支持,保障服务器安全。

安装步骤

  1. 确保已安装 Rust 运行环境 (Rust 1.70 或更高版本) 和 Cargo 包管理器。

  2. 将 mcp.rs 添加到您的 Rust 项目的 'Cargo.toml' 文件依赖项中:

    [dependencies]
    mcp-rs = "0.1.0"

服务器配置

MCP 客户端需要配置以下 JSON 格式信息以连接到 mcp.rs 服务器。以下是一个基于仓库信息生成的示例配置,您可以根据实际部署情况进行调整:

{
  "server name": "my-mcp-server",
  "command": "mcp-server",
  "args": ["--config", "../servers/test.json"]
}

配置参数说明:

  • 'server name': 为 MCP 服务器指定一个名称,客户端可以使用此名称来标识连接的服务。例如 '"my-mcp-server"'。
  • 'command': 启动 MCP 服务器的命令。通常情况下,如果您已经将 'mcp-server' 构建为可执行文件,则此处应填写可执行文件的名称,例如 '"mcp-server"'。
  • 'args': 启动服务器命令时需要传递的命令行参数。根据示例仓库,您可以使用 '--config' 参数指定服务器配置文件的路径,例如 '["--config", "../servers/test.json"]'。您可以根据实际配置文件路径修改此参数。

注意: '../servers/test.json' 仅为示例配置文件路径,实际使用时请替换为您的服务器配置文件路径。您可以参考仓库中的 'server.rs' 和 'config.rs' 文件了解更多服务器配置选项。

基本使用方法

  1. 启动 MCP 服务器

    根据您的配置方式,使用命令行启动 mcp.rs 服务器。例如,使用测试配置文件启动服务器:

    cargo run --bin server -- --config "../servers/test.json"
  2. 使用 MCP 客户端

    使用仓库提供的客户端工具 'client.rs' 与 MCP 服务器进行交互。以下是一些基本命令示例:

    • 列出资源:

      cargo run --bin client list-resources
    • 读取指定资源:

      cargo run --bin client read-resource -u "file:///path/to/file"
    • 获取 Prompt:

      cargo run --bin client get-prompt -n "code_review" -a '{"code": "fn main() {}", "language": "rust"}'
    • 调用工具:

      cargo run --bin client -- --server "http://127.0.0.1:3000" call-tool --name "file_system" --args '{\"operation\": \"read_file\", \"path\": \"Config.toml\"}'
    • 使用 SSE 传输:

      cargo run --bin client -t sse -s http://localhost:3000 list-resources

    更多客户端命令和选项,请参考仓库 'README.md' 和 'bin/client.rs' 文件。

信息

分类

AI与计算