
mcp-attr

2025.04.12
19
RustMCP服务器开发Rust库开发效率
mcp-attr 是一个用于声明式构建 Model Context Protocol (MCP) 服务器的 Rust 库。它通过属性宏简化 MCP 服务器的开发流程,支持人类和 AI 高效协作。核心特性包括声明式描述、DRY 原则、类型系统利用和 rustfmt 友好格式。
View on GitHub
Overview
基本能力
产品定位
mcp-attr 是一个用于快速构建 MCP 服务器的 Rust 库,专注于通过声明式编程简化开发流程,支持人类与 AI 协作开发。
核心功能
- 声明式描述:使用
#[mcp_server]
等属性宏描述 MCP 服务器,减少代码量 - DRY 原则:避免重复代码,确保 AI 生成代码的一致性
- 类型系统利用:通过类型表达信息,减少源码体积并提高可读性
- rustfmt 友好:所有属性宏都支持 rustfmt 格式化
- 多协议支持:支持 prompts、resources 和 tools 三种 MCP 方法
适用场景
- AI 辅助开发工具
- 需要与 MCP 客户端交互的服务
- 需要快速原型开发的 MCP 服务器
工具列表
- prompt:用于描述和获取提示信息
- resource:用于处理资源读取和列表
- tool:用于定义和调用工具方法
常见问题解答
- Q: 是否支持 SSE 传输? A: 目前仅支持 stdio 传输,SSE 尚未支持但可通过自定义传输实现
- Q: 如何处理状态管理?
A: 需要使用
Mutex
等线程安全类型进行状态管理
使用教程
使用依赖
在 Cargo.toml
中添加以下依赖:
[dependencies]
mcp-attr = "0.0.6"
tokio = "1.43.0"
安装教程
- 创建新的 Rust 项目
- 编辑 Cargo.toml 添加上述依赖
- 实现 McpServer trait
调试方式
使用 McpClient
进行测试:
#[tokio::test]
async fn test_hello() -> Result<()> {
let client = McpClient::with_server(ExampleServer).await?;
let a = client.prompts_get(GetPromptRequestParams::new("hello")).await?;
assert_eq!(a, "Hello, world!".into());
Ok(())
}