雨量追踪器MCP服务器
用于从Rain Tracker Service REST API查询雨量计数据的MCP(模型上下文协议)服务器。
项目状态
当前阶段第一阶段完成 ✅
第一阶段:项目设置(已完成)
- ✅ 项目结构已创建
- ✅ 在 Cargo.toml 中配置了依赖项
- ✅ 从rain-tracker-service复制了OpenAPI规范
- ✅ 已创建构建脚本(目前为客户端存根)
- ✅ 已建立模块结构
- ✅ 配置管理设置完成
- ✅ 已创建 .gitignore 和 .env.example 文件
已知问题
OpenAPI客户端生成来自rain-tracker-service的OpenAPI规范使用了OpenAPI 3.1.0语法type: ["string", "null"] (对于可为空的字段),但 openapiv3 crate 仅支持使用 OpenAPI 3.0.x 的版本 nullable: true。
临时解决方案使用一个存根客户端在 src/generated/client.rs 对于第一阶段。
第二阶段修复将OpenAPI规范转换为3.0格式,或者更新rain-tracker-service以生成兼容3.0的规范。
下一步行动(第二阶段)
- 解决OpenAPI 3.1到3.0的兼容性问题
- 使用祖先客户端重新生成合适的客户端
- 实现 RainTrackerClientTrait
- 添加重试逻辑和中间件
- 实现错误处理
项目结构
rain-tracker-mcp/
├── Cargo.toml # Dependencies
├── build.rs # Build script (generates OpenAPI client)
├── openapi.json # OpenAPI spec (copied from service)
├── PLAN.md # Complete implementation plan
├── .env.example # Configuration template
├── src/
│ ├── main.rs # HTTP server entry point
│ ├── lib.rs # Library root
│ ├── generated.rs # Exposes generated client
│ ├── generated/ # Generated code (gitignored)
│ │ └── client.rs # OpenAPI client (stub for now)
│ ├── client.rs # Client wrapper (stub)
│ ├── config.rs # Configuration management
│ ├── types.rs # Additional types
│ ├── tools.rs # MCP tools module
│ └── tools/
│ ├── gauges.rs # Gauge tools (TODO: Phase 3)
│ └── readings.rs # Reading tools (TODO: Phase 3)
├── tests/ # Integration tests (TODO: Phase 6)
├── examples/ # Example usage (TODO: Phase 6)
├── http-tests/ # HTTP endpoint tests (TODO: Phase 6)
└── k8s/ # Kubernetes manifests (TODO: Phase 7)建筑
cargo build配置
复制 .env.example 到;对于;为了;给;在 .env 并进行配置:
HTTP_PORT=8081
RAIN_TRACKER_API_URL=http://localhost:8080/api/v1
RAIN_TRACKER_API_TIMEOUT=30
RUST_LOG=info发展
这个项目正按照概述的阶段逐步建设中 PLAN.md。
如需完整的实施计划,请参阅 PLAN.md(文件名,可翻译为“计划.md”或保持原样,具体取决于上下文是否需要翻译文件名).
