EPANET MCP Server について
EPANET MCP Serverは、ePyTを通じてEPANETの配水ネットワークモデル機能をMCPクライアントに提供します。ネットワークの確認や変更、水理・水質シミュレーションに加え、シナリオごとの独立したセッションを扱えます。
主な機能
- 01ネットワークモデルの読み込みと確認
- 02水理・水質シミュレーションの実行
- 03ネットワークのパラメーターと制御の変更
- 04需要変動や障害シナリオの作成
- 05シナリオごとの独立セッション
活用シーン
- 01ノード圧力と管路流量の分析
- 02需要変化による影響の評価
- 03漏水や汚染事象のシミュレーション
- 04ポンプやバルブの障害シナリオの比較
MCP 対応
ePyTによるネットワークの読み込み、確認、シミュレーション、変更、シナリオ作成のツールをMCPクライアントに公開します。stdioとSSE/HTTPに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
EPANET MCP サーバー
ePyT(EPANET Python Toolkit)を通じて、 EPANET の水道ネットワークモデリング機能を提供する Model Context Protocol(MCP) サーバーです。
MCP に対応した LLM であれば、水道ネットワークモデルの読み込み、 シミュレーションの実行、パラメーターの変更、複雑な仮定シナリオの作成を 自然言語で行えます。
機能
| カテゴリ | ツール |
|---|---|
| 読み込みと確認 | load_network, unload_network, list_networks, list_bundled_networks, get_network_summary, get_nodes, get_links, get_patterns, get_controls, get_curves, get_options |
| シミュレーション | run_hydraulic_simulation, run_quality_simulation, run_full_simulation, get_pressure_at_time, get_flow_at_time |
| 変更 | set_node_base_demand, set_pattern, add_pattern, set_pipe_diameter, set_pipe_roughness, set_pipe_status, set_pipe_length, set_pump_status, set_pump_speed, set_pump_head_curve, set_valve_setting, set_valve_status, set_tank_parameters, set_reservoir_head, set_simulation_duration, set_hydraulic_timestep, set_quality_timestep, set_quality_type, add_control, delete_control, save_network |
| シナリオ | create_demand_perturbation, create_leakage_event, create_contamination_event, create_pressure_change_scenario, create_pump_control_scenario, create_valve_control_scenario, create_multi_failure_scenario |
必要条件
pip install epyt mcp
インストール
git clone https://github.com/Applied-Artificial-Intelligence-Eurecat/epanet-mcp-server.git
cd epanet-mcp-server
pip install -e .
サーバーの実行
stdio(Claude Desktop / Claude Code 用)
epanet-mcp-server
# or
python -m epanet_mcp.server
SSE / HTTP
epanet-mcp-server --transport sse --port 8000
Claude Desktop の設定
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または
お使いのプラットフォーム上の同等のファイルに追加します。
{
"mcpServers": {
"epanet": {
"command": "epanet-mcp-server",
"args": []
}
}
}
PATH に含まれていない場合:
{
"mcpServers": {
"epanet": {
"command": "python",
"args": ["-m", "epanet_mcp.server"],
"cwd": "/path/to/epanet-mcp-server/src"
}
}
}
Claude Code(.mcp.json)
プロジェクトのルートまたは ~/.claude/ に配置します。
{
"mcpServers": {
"epanet": {
"command": "epanet-mcp-server",
"args": []
}
}
}
やり取りの例
サーバーに接続したら、次のように質問できます。
「Net1.inp を読み込んで、ネットワークの概要を表示してください。」
「完全なシミュレーションを実行して、12 時間後に最も圧力が低いノードを教えてください。」
「ジャンクション 11 の基底需要を 2 倍にして、シミュレーションを再実行してください。圧力はどのように変化しますか?」
「漏水率 20% で、管 10 の破裂をシミュレーションしてください。」
「1 時間から 3 時間までノード 11 に 10 mg/L の塩素を注入して、汚染の広がりを表示してください。」
「貯水池の水頭が 150 m から 120 m に低下すると、圧力はどうなりますか?」
「ポンプ 9 を 06:00 に起動し、22:00 に停止するように設定してください。」
「管 10 と 11、およびポンプを同時に閉じてください。どこで給水に支障が出ますか?」
アーキテクチャ
src/epanet_mcp/
├── server.py # FastMCP server – tool registration + entry point
├── session.py # Thread-safe registry of open ePyT sessions
├── utils.py # numpy → Python serialisation helpers
└── tools/
├── inspection.py # load / inspect network models
├── simulation.py # run hydraulic & quality simulations
├── modification.py# in-memory parameter changes
└── scenarios.py # what-if scenario generators (clone + modify + run)
セッションモデル:読み込まれた各ネットワークは、名前付きセッションに保存されます。シナリオツールは、ベースラインのネットワークが変更されないよう、元のセッションを自動的に複製して新しい独立したセッションを作成します。
テストの実行
pip install pytest
pytest tests/ -v
同梱ネットワーク
ePyT には、Net1、Net2、L-TOWN、Hanoi、Anytown、Balerma など、多数の標準ベンチマークネットワークが同梱されています。list_bundled_networks を使って、すべて確認できます。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。