模型上下文协议实现

Rs Fast MCP是一个高性能、异步优先的Rust实现的模型上下文协议(MCP),提供构建MCP服务器和客户端的高效接口。

  • by neuro-ng
  • Rust
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 neuro-ng/rs-fast-mcp

使用说明

Rs快速MCP🦀

模型上下文协议(MCP)的高性能异步优先Rust实现

Rust原生端口 Ox快速MCP 图书馆(最初基于 FastMCP Python),为使用现代Rust实践构建MCP服务器和客户端提供了一个高级、高效的接口。

特性✨

  • 🚀 高性能:基于 tokio 和 actix-web 用于非阻塞I/O。
  • �️ 内存安全:利用Rust的所有权模型实现无崩溃执行。
  • 🔌 灵活运输:完全支持Stdio(管道)和SSE(HTTP)传输。
  • 🔒 安全:内置身份验证(OAuth、OIDC、JWT)和速率限制。
  • � 零成本抽象:具有最小运行时开销的类型安全接口。
  • � 综合示例:准备运行工具、资源和身份验证示例。

建筑

rs-fast-mcp/
├── src/
│   ├── utilities/          # Common helpers (LruCache, JSON Schema)
│   ├── tools/              # Tool management (Execution, Validation)
│   ├── prompts/            # Prompt templates and execution
│   ├── resources/          # Resource management (URI templates, Reading)
│   ├── client/             # MCP Client SDK (Transport, Session)
│   ├── server/             # MCP Server implementation
│   │   ├── core.rs         # Core server logic & Builder
│   │   ├── middleware/     # Auth, Rate Limiting, Caching
│   │   ├── transport/      # Stdio and HTTP/SSE transports
│   │   └── auth/           # Authentication providers (OIDC, OAuth, etc.)
│   ├── mcp/                # Protocol types and message definitions
│   ├── cli/                # Command-line interface definitions
│   └── lib.rs              # Library entry point
├── examples/               # Usage examples (demos, integrations)
├── tests/                  # Integration tests
├── specs/                  # Specifications (Gemini)
├── Cargo.toml              # Project configuration
└── README.md               # This file

测试结果总结

132测试 跨单元、集成和文档测试——全部通过:

✅ 服务器模块:43项测试通过

  • 核心服务器生命周期,Stdio/SSE传输
  • 身份验证(谷歌、GitHub、OIDC、Auth0、AWS Cognito)
  • 中间件(速率限制、缓存、日志记录)
  • 请求处理、挂载、代理、寿命挂钩
  • 上下文状态管理,更改报告标志
  • 重复策略序列化

✅ 客户端模块:7项测试通过

  • 客户端-服务器集成、错误处理、超时
  • 传输实例化、身份验证注入
  • 代理和采样支持

✅ 工具模块:20项测试通过

  • 注册、执行、验证
  • 重复处理(错误、忽略、替换)、模糊匹配、统计
  • 工具构建器(新的,add_parameter,带_handler,模式结构)

✅ 资源模块:14项测试通过

  • 管理、阅读、模板
  • 订阅、订阅/取消订阅、统计信息、筛选
  • 重复策略(错误,忽略)

✅ 提示与验证:14项测试通过

  • 快速管理、模式验证
  • 输入验证(必填字段、类型、URI)
  • 重复策略(错误、忽略、替换)
  • 快速执行(未找到错误路径)

✅ 核心和公用事业:16项测试通过

  • 设置加载、JSON模式、配置
  • LogLevel解析(有效/无效),从env加载标签
  • 错误变量构造和显示
  • 图像/音频内容块生成

✅ MCP协议类型:15项测试通过

  • ContentBlock序列化/反序列化(文本、图像、音频)
  • 角色、通知、响应往返
  • 资源内容(text/blob),请求ID变量
  • MCPConfig CRUD、传输推理、服务器功能

✅ 文件测试:3项测试通过

  • 库入口点、ServerBuilder、RateLimitMiddleware

核心组件

1.协议类型(src/mcp/)

为所有MCP协议消息、结构和功能提供强大的、与serde兼容的定义。

2.服务器模块(src/server/)

心的 rs-fast-mcp。管理服务器生命周期,通过以下方式处理传入请求 Stdio 或 Http 传输和编排工具、资源和提示。包括对以下内容的中间件支持:

  • 认证:通用 AuthProvider 特性与谷歌、Azure、OCI、Supabase、WorkOS、Scalekit的实现。
  • 速率限制:令牌桶算法。
  • 缓存:自动结果缓存。

3.客户端模块(src/client/)

一个强大的异步客户端,用于连接到MCP服务器。支持:

  • 发现:列出工具、提示和资源。
  • 执行:调用工具、获取提示、阅读资源。
  • 运输:Stdio和SSE之间无缝切换。

4.经理(src/tools, src/resources, src/prompts)

用于注册、查找和执行具有内置验证(JSON模式)的MCP原语的专用管理器。

安装📦

将此添加到您的 Cargo.toml:

[dependencies]
rs-fast-mcp = { git = "https://github.com/neuron-ng/rs-fast-mcp.git" }

建立和运行

构建项目

cargo build --release

运行测试

cargo test

使用CLI

rs-fast-mcp 包括用于服务和检查的CLI。

# Start a server (echo example)
cargo run -- serve --transport stdio

# Connect as a client
cargo run -- client --server-url http://localhost:8000/sse

# Inspect a server
cargo run -- inspect

例子

我们提供了一套全面的示例来帮助您开始:

示例 描述 命令
simple_server 基本Echo服务器 cargo run --example simple_server
demo 全面的Stdio演示 cargo run --example demo
filesystem 文件操作工具 cargo run --example filesystem
calculator_server 数学工具 cargo run --example calculator_server
http_demo HTTP/SSE传输 cargo run --example http_demo
auth_demo 身份验证中间件集成 cargo run --example auth_demo
smart_home WebSocket/状态模拟 cargo run --example smart_home
complex_inputs 嵌套架构验证 cargo run --example complex_inputs
atproto_server AT协议客户端 cargo run --example atproto_server
google_oauth_demo 谷歌OAuth cargo run --example google_oauth_demo
github_oauth_demo GitHub OAuth cargo run --example github_oauth_demo
authkit_dcr 自定义路线和DCR cargo run --example authkit_dcr

详细规格请参见 specs/gemini/.

依赖项

  • 东京:异步运行时
  • actix网络:HTTP服务器框架
  • 序列化与反序列化:序列化/反序列化
  • reqwest:HTTP客户端
  • 异步特性:异步特性支持
  • 拍手:CLI参数解析

比较🐍 🐫 🦀

特性 Ox快速MCP(OCaml) Rs快速MCP(Rust) FastMCP(Python)
类型安全 ✅ 强静态 ✅ 强静态 ❌ 运行时间
异步模型 ✅ LWT ✅ 东京 ✅ 异步
演出✅ 本地 🚀 本地(最高) ❌ 翻译
生态系统 🐫 OCaml 🦀 板条箱.io 🐍 PyPI
错误处理 ✅ 结果类型 ✅ 结果类型 ❌ 例外情况

Rust实现的好处🦀

  • 零成本异步: tokio 提供行业标准的高性能异步执行。
  • 生态系统:直接进入广阔的crates.io生态系统(例如。, reqwest 对于OAuth, sqlx 对于DB)。
  • 工具:Cargo提供一流的构建、测试和依赖关系管理。
  • 互操作:易于嵌入其他应用程序或编译为WASM(未来潜力)。

贡献🤝

我们欢迎捐款!

  1. 分叉 存储库。
  2. 创建 一个特征分支。
  3. 实施 您通过测试所做的更改。
  4. 提交 拉取请求。

请参阅 specs/ 建筑指导目录。

版本历史📈

  • v0.1.0 (当前):
    • 完整的OCaml端口已完成。
    • Stdio和HTTP传输。
    • 已实现所有身份验证提供程序。
    • 综合示例套件。

许可证📄

Apache-2.0许可证-请参阅 许可证 文件以获取详细信息。


搬运工❤️ 从OCaml到Rust