使用说明
项目简介
'model_context_protocol_rs' 是一个使用 Rust 语言开发的 Model Context Protocol (MCP) 服务器实现。该项目旨在为大型语言模型 (LLM) 应用提供一个标准化的后端服务,用于管理上下文信息和扩展功能。它实现了 MCP 协议的关键特性,允许 LLM 客户端通过 JSON-RPC 协议与服务器交互,获取资源、调用工具和渲染 Prompt 模板。
主要功能点
- 资源管理 (Resources):
- 托管和管理文件系统资源。
- 提供基于 URI 的资源访问能力(读取资源内容)。
- 支持资源变更订阅,允许客户端接收资源更新通知。
- 支持资源模板列表功能。
- 工具调用 (Tools):
- 注册和管理可执行的工具,例如示例中提供的计算器工具。
- 允许客户端通过服务器调用注册的工具,扩展 LLM 的功能。
- 支持列出可用工具。
- Prompt 模板 (Prompts):
- 注册和管理 Prompt 模板,支持参数化 Prompt。
- 允许客户端获取预定义的 Prompt 模板,并根据需要传入参数进行渲染。
- 支持列出可用 Prompt 模板。
- 传输协议:
- 支持 STDIO (标准输入输出) 和 SSE (Server-Sent Events) 两种传输协议,方便在不同环境中使用。
- 日志管理:
- 提供日志记录功能,并允许客户端动态设置日志级别。
- 配置化:
- 服务器配置通过 JSON 文件加载,方便用户自定义服务器行为。
安装步骤
-
安装 Rust 环境: 确保你的系统中已安装 Rust 编程语言和 Cargo 包管理器。你可以访问 Rust 官网 按照指引进行安装。
-
克隆仓库: 打开终端,使用 'git clone' 命令克隆 'model_context_protocol_rs' 仓库到本地:
git clone https://github.com/EmilLindfors/model_context_protocol_rs cd model_context_protocol_rs -
构建项目: 在仓库根目录下,使用 Cargo 构建项目:
cargo build构建成功后,可执行文件将位于 'target/debug/server' (或 'target/release/server' 如果使用 'cargo build --release')。
服务器配置
MCP 服务器的配置通过 JSON 文件进行管理。仓库中提供了一个示例配置文件 'servers/test.json'。你可以根据需要修改该文件,或者创建新的配置文件。
以下是 'servers/test.json' 文件的内容和参数注释:
{ "server": { "name": "mcp-server", "version": "0.1.0", "transport": "stdio", // 传输协议类型,可选 "stdio", "sse", "ws" (WebSocket 未实现) "host": "127.0.0.1", // 服务器主机地址,仅当 transport 为 "sse" 或 "ws" 时生效 "port": 3000, // 服务器端口,仅当 transport 为 "sse" 或 "ws" 时生效 "max_connections": 100, // 最大连接数 "timeout_ms": 30000 // 请求超时时间,单位毫秒 }, "resources": { "root_path": ".", // 资源根路径,服务器访问资源的起始目录 "allowed_schemes": ["file"], // 允许的资源 URI scheme,例如 "file" 表示文件系统资源 "max_file_size": 10485760, // 最大允许读取的文件大小,单位字节 "enable_templates": true // 是否启用资源模板功能 }, "logging": { "level": "INFO" // 服务器日志级别,可选 "TRACE", "DEBUG", "INFO", "WARN", "ERROR" }, "tools": [], // 预注册的工具列表 (当前示例为空) "prompts": [] // 预注册的 Prompt 模板列表 (当前示例为空,但 server.rs 中有代码注册示例 Prompt) }
MCP 客户端配置示例
MCP 客户端需要配置如何启动 MCP 服务器。以下是一个 JSON 格式的客户端配置示例,用于连接使用 'servers/test.json' 配置的 'model_context_protocol_rs' 服务器:
{ "serverName": "mcp-rs-server", "command": "cargo", "args": ["run", "--", "-c", "servers/test.json"] }
- 'serverName': 服务器名称,客户端用于标识连接的服务器。
- 'command': 启动 MCP 服务器的可执行命令,这里使用 'cargo run' 来运行 Rust 项目。
- 'args': 传递给 'command' 的参数列表。'"--"' 分隔 Cargo 命令和应用程序参数,'-c servers/test.json' 指定服务器加载 'servers/test.json' 配置文件。
基本使用方法
-
启动 MCP 服务器: 在仓库根目录下,使用以下命令启动 MCP 服务器,并指定配置文件路径:
cargo run -- -c servers/test.json服务器将根据 'servers/test.json' 中的配置运行。默认情况下,服务器使用 STDIO 传输协议。
-
使用 MCP 客户端连接服务器: 你需要一个 MCP 客户端来连接到运行中的服务器。仓库中包含了一个简单的客户端示例 'bin/client.rs'。 你可以使用以下命令运行客户端示例,并连接到 STDIO 传输的服务器:
cargo run -- bin/client.rs --transport stdio或者连接到 SSE 传输的服务器 (假设服务器配置为 SSE 并在端口 3000 运行):
cargo run -- bin/client.rs --transport sse --server http://127.0.0.1:3000客户端启动后,你可以使用其提供的子命令 (例如 'list-resources', 'read-resource', 'call-tool' 等) 与服务器进行交互。 客户端命令可以通过 '--help' 参数查看。
-
通过客户端与服务器交互: 使用客户端提供的命令,例如:
- 'cargo run -- bin/client.rs --transport stdio list-resources':列出服务器管理的资源。
- 'cargo run -- bin/client.rs --transport stdio read-resource --uri file:///README.md':读取 'README.md' 文件的内容。
- 'cargo run -- bin/client.rs --transport stdio list-tools':列出服务器注册的工具。
- 'cargo run -- bin/client.rs --transport stdio call-tool --name calculator --args '{"operation": "add", "operands": [2, 3]}'':调用 'calculator' 工具执行加法运算。
请根据客户端和服务器的实际运行情况和提供的命令进行操作。
信息
分类
AI与计算