雨量数据查询服务

Rain Tracker MCP Server是一个用于查询雨量数据的REST API服务,主要用于气象数据收集和分析。

  • by tdrozdowski
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 tdrozdowski/rain-tracker-mcp

使用说明

雨量追踪器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的规范。

下一步行动(第二阶段)

  1. 解决OpenAPI 3.1到3.0的兼容性问题
  2. 使用祖先客户端重新生成合适的客户端
  3. 实现 RainTrackerClientTrait
  4. 添加重试逻辑和中间件
  5. 实现错误处理

项目结构

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”或保持原样,具体取决于上下文是否需要翻译文件名).