一个基于 Rust 的综合工作空间,实现了 MCP (Model Context Protocol) 代理系统,包含文档解析、语音转录和协议转换等多个服务。
| Crates | 版本 | 描述 |
|---|---|---|
| mcp-common | 0.1.5 | MCP 代理组件的共享类型和工具 |
| mcp-sse-proxy | 0.1.5 | 基于 rmcp 0.10 的 SSE (Server-Sent Events) 代理实现 |
| mcp-streamable-proxy | 0.1.5 | 基于 rmcp 0.12 的 Streamable HTTP 代理实现 |
| mcp-stdio-proxy | 0.1.18 | 主 MCP 代理服务器,带 CLI 工具用于协议转换 |
| document-parser | 0.1.0 | 高性能多格式文档解析服务 |
| voice-cli | 0.1.0 | 基于 Whisper 模型的语音转文字 HTTP 服务 |
| oss-client | 0.1.0 | 轻量级阿里云 OSS 客户端库 |
| fastembed | 0.1.0 | 使用 FastEmbed 的文本嵌入 HTTP 服务 |
- Rust: 1.70 或更高版本(推荐 1.75+)
- Python: 3.8+(用于 document-parser 和 voice-cli TTS)
- uv: Python 包管理器(通过
curl -LsSf https://astral.sh/uv/install.sh | sh安装)
# 克隆仓库
git clone https://github.com/nuwax-ai/mcp-proxy.git
cd mcp-proxy
# 构建所有工作空间成员
cargo build --release
# 或构建特定 crate
cargo build -p mcp-proxy
cargo build -p document-parser
cargo build -p voice-cli主代理服务,将 SSE/Streamable HTTP 转换为 stdio 协议。
# 从源码安装
cargo install --path ./mcp-proxy
# 启动代理服务器
mcp-proxy
# 将远程 MCP 服务转换为 stdio
mcp-proxy convert https://example.com/mcp/sse
# 检查服务状态
mcp-proxy check https://example.com/mcp/sse
# 检测协议类型
mcp-proxy detect https://example.com/mcp详细文档: mcp-proxy/README_zh-CN.md
支持 PDF、Word、Excel 和 PowerPoint 的高性能文档解析服务。
cd document-parser
# 初始化 Python 环境(首次使用)
document-parser uv-init
# 检查环境状态
document-parser check
# 启动 HTTP 服务器
document-parser server详细文档: document-parser/README_zh-CN.md
基于 Whisper 模型的语音转文字 HTTP 服务。
cd voice-cli
# 初始化服务器配置
voice-cli server init
# 运行语音服务器
voice-cli server run
# 列出 Whisper 模型
voice-cli model list
# 下载模型
voice-cli model download tiny详细文档: voice-cli/README_zh-CN.md
- mcp-common: 共享配置类型和工具
- mcp-sse-proxy: SSE 协议支持 (rmcp 0.10)
- mcp-streamable-proxy: Streamable HTTP 协议支持 (rmcp 0.12)
- mcp-stdio-proxy: 用于协议转换的主 CLI 工具
特性:
- 多协议支持:SSE、Streamable HTTP、stdio
- 动态插件加载
- 协议自动检测和转换
- OpenTelemetry 集成,支持 OTLP
- 后台健康检查
特性:
- 多格式支持:PDF (MinerU)、Word/Excel/PowerPoint (MarkItDown)
- GPU 加速,通过 CUDA/sglang(可选)
- 使用 uv 进行 Python 环境管理
- HTTP API,带 OpenAPI 文档
- OSS 云存储集成
特性:
- Whisper 模型集成(tiny/base/small/medium/large)
- 多格式音频支持(MP3、WAV、FLAC、M4A 等)
- 基于 Apalis 的异步任务队列,带 SQLite 持久化
- FFmpeg 集成,用于元数据提取
- TTS 服务(TODO - 当前存在问题)
- oss-client: 阿里云 OSS 客户端,统一接口
- fastembed: 使用 FastEmbed 的文本嵌入 HTTP 服务
# 构建所有工作空间 crates
cargo build
# 构建特定 crate
cargo build -p mcp-proxy
# 以 release 模式构建
cargo build --release
# 运行所有 crates 的测试
cargo test
# 运行特定 crate 的测试
cargo test -p mcp-proxy
# 运行 clippy 进行代码检查
cargo clippy --all-targets --all-features
# 格式化代码
cargo fmt# 为 Linux x86_64 构建 document-parser
make build-document-parser-x86_64
# 为 Linux ARM64 构建 document-parser
make build-document-parser-arm64
# 为 Linux x86_64 构建 voice-cli
make build-voice-cli-x86_64
# 为 x86_64 构建所有组件
make build-all-x86_64
# 构建 Docker 运行时镜像
make build-image
# 运行 Docker 容器
make run- 行长度:100 字符
- 4 空格缩进(不使用制表符)
- 使用
dashmap替代Arc<RwLock<HashMap>>进行并发哈希映射 - 遵循 KISS 和 SOLID 原则
- 使用
anyhow::Context实现"尽快失败"错误处理
- CLAUDE.md - 贡献者开发指南
- mcp-proxy/README_zh-CN.md - MCP 代理文档
- document-parser/README_zh-CN.md - 文档解析器文档
- voice-cli/README_zh-CN.md - 语音 CLI 文档
- oss-client/README_zh-CN.md - OSS 客户端文档
本项目采用 MIT OR Apache-2.0 双许可证。
欢迎贡献!请随时提交问题和拉取请求。