mcp-attr

mcp-attr

site icon
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 服务器

工具列表

  1. prompt:用于描述和获取提示信息
  2. resource:用于处理资源读取和列表
  3. tool:用于定义和调用工具方法

常见问题解答

  • Q: 是否支持 SSE 传输? A: 目前仅支持 stdio 传输,SSE 尚未支持但可通过自定义传输实现
  • Q: 如何处理状态管理? A: 需要使用 Mutex 等线程安全类型进行状态管理

使用教程

使用依赖

Cargo.toml 中添加以下依赖:

[dependencies]
mcp-attr = "0.0.6"
tokio = "1.43.0"

安装教程

  1. 创建新的 Rust 项目
  2. 编辑 Cargo.toml 添加上述依赖
  3. 实现 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(())
}

许可证

该项目遵循 Apache-2.0/MIT 开源许可条款。