水资源模型访问服务

为LLMs提供高效访问Pywr-DRB水资源模型代码库的服务,通过静态分析提取源代码结构和数据。

  • by Pywr-DRB
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Pywr-DRB/pywrdrb-mcp

使用说明

pywrdrb-mcp

MCP服务器,使LLM能够高效访问 Pywr DRB 水资源模型代码库。使用静态分析(Python ast)从源文件中提取结构和数据,而无需导入pywrdrb或其严重依赖关系。

快速开始

先决条件

  • 紫外线 安装
  • Pywr DRB源代码在本地克隆( src/pywrdrb/ 启动时读取目录)

运行服务器

uv run python -m pywrdrb_mcp.server

运行测试

uv run pytest tests/ -v

配置

环境变量 默认值 描述
PYWRDRB_ROOT 自动检测到兄弟姐妹 Pywr-DRB/src/pywrdrb 通往的绝对路径 pywrdrb 源程序包目录

服务器通过静态分析(Python ast)在启动时。它从不导入或执行pywrdrb代码,因此pywrdrb的重依赖项(numpy、pandas、pywr等)是 不 必修的。

集 PYWRDRB_ROOT 如果您的Pywr DRB签出不在默认的同级位置:

# Linux/macOS
export PYWRDRB_ROOT=/path/to/Pywr-DRB/src/pywrdrb

# Windows (PowerShell)
$env:PYWRDRB_ROOT = "C:\path\to\Pywr-DRB\src\pywrdrb"

客户端设置

克劳德代码(CLI)

claude mcp add --transport stdio pywrdrb-mcp -- \
  uv run --directory /path/to/pywrdrb-mcp python -m pywrdrb_mcp.server

克劳德代码(VS代码扩展)

添加 .claude/settings.json (项目或用户级别):

{
  "mcpServers": {
    "pywrdrb-mcp": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "run",
        "--directory", "/path/to/pywrdrb-mcp",
        "python", "-m", "pywrdrb_mcp.server"
      ]
    }
  }
}

克劳德桌面版

编辑Claude Desktop配置文件:

  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

(通过克劳德桌面打开: 设置>开发人员>编辑配置)

{
  "mcpServers": {
    "pywrdrb-mcp": {
      "command": "uv",
      "args": [
        "run",
        "--directory", "/path/to/pywrdrb-mcp",
        "python", "-m", "pywrdrb_mcp.server"
      ],
      "env": {
        "PYWRDRB_ROOT": "/path/to/Pywr-DRB/src/pywrdrb"
      }
    }
  }
}

Windows路径: 使用正斜杠(C:/Users/...)或逃过一劫(C:\\Users\\...)在JSON中。

保存后, 完全退出并重新启动 Claude Desktop(系统托盘>退出,而不仅仅是关闭窗口)。

Claude桌面兼容性说明

功能 支持 备注
工具 (14) 完整 所有工具都有效。当工具可用时,会出现一个锤子图标。
资源 (22) 部分 资源列在“设置”>“集成”下,但Claude Desktop列出了 不 主动阅读它们。用户必须通过以下方式手动将资源附加到邮件中 + 菜单或 @ 提及。
提示 (6) 完整 提示出现在 + 菜单。带有论点的提示(例如。, how_to_understand_node)将提示输入。

在实践中,这意味着 工具是主要界面 在克劳德桌面上。领域知识资源(FFMP规则、STARFIT规则、洪水操作)和 how_to_* 提示有效,但需要手动用户操作才能调用。在Claude Code中,资源和提示更加无缝地集成在一起。

包含什么

工具(14)

工具 模块 目的
get_node_topology 拓扑 节点的河流网络连接、滞后、仪表ID和额定曲线
get_reservoir_details 拓扑 水库类型、容量、STARFIT参数和数据源映射
get_file_contents code 读取pywrdrb源代码树中的任何文件
search_codebase code 在所有源文件中搜索正则表达式
get_module_overview code 模块文档字符串、类和函数摘要
get_parameter_class_info 参数 完整的类详细信息(方法、签名、文档字符串)
get_model_builder_options model_builder 带有类型和默认值的选项数据类字段
get_model_builder_method model_builder 任何ModelBuilder方法的源代码
get_repo_status data Git分支、最近提交、修改的文件
get_data_file_list data 枚举磁盘上的数据文件
refresh_index data 在不重新启动的情况下重建缓存索引
get_parameter_list lists 按模块分组的所有参数类
get_data_object_info data_object 数据类层次结构、访问模式、加载方法
get_ffmp_data ffmp_data ffmp操作常数、配置文件和下游流域策略

资源(22)

拓扑和数据

URI 描述
pywrdrb://topology/network-graph 完整的河流网络拓扑结构(上游、下游、滞后)
pywrdrb://topology/reservoir-list 所有17个水库的类型、容量、下游连通性
pywrdrb://topology/node-list 按类型组织的所有节点(NYC、STARFIT、洪水监测)
pywrdrb://data/inflow-types 可用的流入类型,包括日期范围和使用提示
pywrdrb://data/results-sets 所有带有描述和有效加载器的results_set选项
pywrdrb://domain/constants 单位转换常数(cfs_to_mgd等)
pywrdrb://domain/rating-curves 美国地质调查局洪水监测仪器的等级曲线元数据

API参考资料

URI 描述
pywrdrb://api/parameter-class-index 带模块和说明的所有参数类表
pywrdrb://api/model-builder-api ModelBuilder类方法摘要
pywrdrb://api/data-loader-api 数据类层次结构、方法和结果集选项
pywrdrb://api/post-processing-api 性能指标和误差指标函数签名
pywrdrb://api/preprocessing-api 流入预测和预处理类/函数签名
pywrdrb://api/nyc-operations-config 修改FFMP规则的NYCOperationsConfig类方法

领域知识指南

URI 描述
pywrdrb://domain/ffmp-rules-summary FFMP干旱水平、储存区、MRF目标、交付限制
pywrdrb://domain/starfit-rules-summary STARFIT水库释放政策和谐条款
pywrdrb://domain/flood-operations-summary 洪水监测阶段、阈值和响应操作
pywrdrb://domain/post-processing-guide 性能指标、不足分析和错误指标
pywrdrb://domain/preprocessing-guide 流入预测、流量预处理和数据检索
pywrdrb://domain/data-loading-guide 数据加载模式、结果集描述、HDF5约定

项目

URI 描述
pywrdrb://project/package-structure 带有模块描述的包文件树
pywrdrb://project/repo-status 当前git分支、提交和修改的文件
pywrdrb://project/getting-started 带有示例工作流的入门指南

参数化模板

URI 描述
pywrdrb://parameter/{class_name} 特定参数类的详细信息
pywrdrb://reservoir/{reservoir_name} 特定水库的详细信息

提示(6)

所有提示都使用 how_to_* 命名约定,表明它们是教学指南。

提示 工作流
how_to_add_parameter 创建自定义Pywr参数的模式
how_to_debug_simulation 逐步模拟诊断
how_to_understand_node 收集有关河流网络节点的所有信息
how_to_modify_ffmp_rules 通过NYCOperationsConfig更改FFMP规则
how_to_add_inflow_source 添加新的水文模型流入数据集
how_to_review_output 加载并解释模拟结果

建筑

pywrdrb-mcp/
├── src/pywrdrb_mcp/
│   ├── server.py          # FastMCP entry point
│   ├── config.py          # PYWRDRB_ROOT path
│   ├── index/             # AST-based static analysis engine
│   │   ├── builder.py     # PywrDRBIndex — topology, lists, capacity, rating curves
│   │   ├── ast_utils.py   # Safe AST extraction utilities
│   │   └── file_utils.py  # File system utilities
│   ├── tools/             # 14 MCP tools (8 modules)
│   ├── resources/         # 22 MCP resources
│   ├── prompts/           # 6 MCP prompt templates
│   └── content/           # Hand-written domain knowledge (7 markdown files)
└── tests/

服务器在启动时通过以下方式从Pywr DRB源代码树读取 ast.parse() 和 ast.literal_eval() --它从不导入或执行pywrdrb代码。