项目简介
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 支持,保障服务器安全。
安装步骤
-
确保已安装 Rust 运行环境 (Rust 1.70 或更高版本) 和 Cargo 包管理器。
-
将 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' 文件了解更多服务器配置选项。
基本使用方法
-
启动 MCP 服务器:
根据您的配置方式,使用命令行启动 mcp.rs 服务器。例如,使用测试配置文件启动服务器:
cargo run --bin server -- --config "../servers/test.json" -
使用 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与计算