Rust MCP服务器模板(STDIO)
此存储库提供了一个简单的示例 模型上下文协议(MCP) 用Rust实现的服务器。 这与STDIO一起运行。
服务器使用 prism_mcp_rs crate创建一个基本的MCP服务器,使用一个工具根据用户的输入向用户致意。
特性
- MCP服务器:使用
prism_mcp_rs机箱。 - Hello工具:一个简单的工具,它以用户的名字作为输入,并以个性化的问候语作为回应。
- 异步执行:由
tokio用于处理异步操作的运行时。 - 标准运输:服务器使用标准输入/输出(Stdio)进行通信,使其易于与其他工具或脚本集成。
运作原理
- 服务器已用名称初始化(
HelloToolServer)和版本(1.0.0). - 单个工具,
hello,已向服务器注册。此工具:
- 接受JSON输入 name 现场。 - 回复问候信息,如 Hello, !.
- 服务器使用标准输入/输出(Stdio)作为其通信传输机制。
代码概述
main.rs
这 main.rs 文件包含以下关键组件:
- 工具处理核心:一个实现
ToolHandler特质,它定义了hello工具。在Rust中,我们创建结构来保存要使用的数据,类似于Python __初始化__ 在类内,但不实际初始化任何东西,只存储数据。然后,我们使用实现为它们添加行为,就像我们在这里为ToolHandler所做的那样,而不是像Python那样在类中添加函数。我们还在空结构体上方有#\[derive(Clone)\],允许我们为工具的多个实现克隆它。 - MCP服务器初始化:服务器已创建
hello添加了工具及其模式和处理程序。 - 服务器启动:服务器已使用启动
StdioServerTransport.
添加工具
在主功能中,使用以下工具编写更多工具: server.addtool(工具名、描述、json对象、结构体(工具句柄核心)),并确保等待它,否则它不会拿起工具(此服务器中的函数是异步的)。
示例工具: hello
这 hello 工具定义如下:
- 输入架构:
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the person to greet."
}
}
}
server.add_tool(
"hello".to_string(), // NAME
Some("Says hello to the specified user.".to_string()), // DESCRIPTION
json!({
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the person to greet."
}
}
}), // JSON INPUT SCHEMA
ToolHandlerCore, // CORE STRUCT
).await?;依赖项
Cargo.toml中的所有内容,以及CMake的安装。
如何使用它?
使用cargo Build-release构建它,然后使用cargo run-release。然后,它将在“目标”文件夹中创建一个发布文件夹,您可以将其中的exe作为STDIO服务器使用。
用于VSCode的mcp.json示例
{
"servers": {
"RustMCPServer": {
"type": "stdio",
"command": "target\\release\\rust_mcp_template.exe",
"args": ["--mode", "vscode"],
"env": {
"VSCODE_WORKSPACE": "${workspaceFolder}"
}
}
}
}