内容
# KETI FLOW MCP
送风机/泵運転点データをサーバー起動時に学習し、エージェントがMCPツールで最適制御値を照会できるようにする独立MCPサーバーです。
## 構造
```text
KETI_FLOW_MCP/
├─ src/
│ ├─ train/
│ ├─ mcp_server/
│ └─ utils/
├─ data/
├─ tests/
├─ config/
│ └─ config.json
├─ main.py
├─ pyproject.toml
├─ uv.lock
├─ README.md
└─ .gitignore
```
`src/mcp/`はPython MCP SDKの`mcp`パッケージ名と衝突する可能性があるため、使用しません。
## インストール
```powershell
cd C:\Users\keti\workspace\KETI_FLOW_MCP
uv sync
```
仮想環境は`.venv/`に生成されます。
## データ
学習データは`data/`の下に置きます。このフォルダーは機密データの位置であるため、gitで追跡しません。
基本設定は次のファイルを使用します。
```text
data/blower/fan_training.csv
data/pump/pump_training.csv
```
基本CSVカラムは以下の通りです。
```csv
Flowrate,Head,Power,Angle,Speed
```
現在MCPツールは要求流量`Flowrate`を入力として、`Power`が最小となる`Angle`値を探します。
## 設定
設定ファイルは`config/config.json`です。
主要項目:
- `data.base_dir`: 学習データ基準フォルダー
- `machines.<name>.data_file`: 機器別CSVパス
- `flow_column`: 流量カラム
- `control_column`: 最適化する制御値カラム
- `target_column`: 最小化または最大化する目標カラム
- `optimization`: `minimize`または`maximize`
- `candidate_count`: リアルタイム探索候補数
- `respect_control_flow_range`: 制御値別学習流量範囲を厳格に適用するかどうかのフラグ
## 実行
```powershell
uv run python main.py
```
サーバーは実行時に次の順序で動作します。
1. `config/config.json`のロード
2. `data/`のCSVのロード
3. 送風機/ポンプモデルメモリー学習
4. MCP stdioサーバーの起動
モデルファイルとLUTファイルは生成しません。
## MCP Tools
### `get_optimal_blower_angle`
入力:
```json
{
"required_flow": 500.0
}
```
応答例:
```text
該当流量での適切な角度制御値は49です。予測Power: 2.739 kW
```
範囲外応答例:
```text
該当流量は学習データ範囲内値ではありません。サポート範囲: 500 ~ 900
```
### `get_optimal_pump_control`
入力:
```json
{
"required_flow": 5.0
}
```
## MCP Resources
### `keti-flow://training-status`
現在サーバープロセスで学習されたモデル状態、データファイル、行数、流量範囲を返します。
## Codex 登録例
Codex MCP設定で以下の形式で登録します。
```json
{
"mcpServers": {
"keti-flow": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\keti\\workspace\\KETI_FLOW_MCP",
"run",
"python",
"main.py"
]
}
}
}
```
## Claude 登録例
Claude Desktop設定ファイルの`mcpServers`に以下の項目を追加します。
```json
{
"mcpServers": {
"keti-flow": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\keti\\workspace\\KETI_FLOW_MCP",
"run",
"python",
"main.py"
]
}
}
}
```
## ローカル検証
`tests/`はローカル検証用フォルダーであり、gitで追跡しません。
簡単なsmoke検証:
```powershell
uv run python -c "from src.mcp_server.server import build_runtime; r=build_runtime(); print(r.status())"
```
送風機予測確認:
```powershell
uv run python -c "from src.mcp_server.server import build_runtime, optimal_control_text; r=build_runtime(); print(optimal_control_text(r, 'blower', 500))"
```
## git 追跡除外
以下の項目はgitに含めません。
- `data/`
- `tests/`
- `.venv/`
- モデル出力ファイル
- ログとローカル出力物
# KETI FLOW MCP
送风机/泵运行点数据在服务器启动时进行学习,并允许代理通过MCP工具查询最优控制值。
## 结构
```text
KETI_FLOW_MCP/
├─ src/
│ ├─ train/
│ ├─ mcp_server/
│ └─ utils/
├─ data/
├─ tests/
├─ config/
│ └─ config.json
├─ main.py
├─ pyproject.toml
├─ uv.lock
├─ README.md
└─ .gitignore
```
`src/mcp/` 不使用,因为它可能与 Python MCP SDK 的 `mcp` 包名冲突。
## 安装
```powershell
cd C:\Users\keti\workspace\KETI_FLOW_MCP
uv sync
```
虚拟环境将在 `.venv/` 中创建。
## 数据
训练数据放在 `data/` 下。该文件夹是机密数据位置,因此不被 git 追踪。
默认设置使用以下文件:
```text
data/blower/fan_training.csv
data/pump/pump_training.csv
```
默认 CSV 列:
```csv
Flowrate,Head,Power,Angle,Speed
```
目前,MCP 工具接受所需流量 `Flowrate` 作为输入,并查找使 `Power` 最小的 `Angle` 值。
## 配置
配置文件是 `config/config.json`。
主要项目:
- `data.base_dir`: 训练数据基准文件夹
- `machines.<name>.data_file`: 设备별 CSV 路径
- `flow_column`: 流量列
- `control_column`: 优化控制值列
- `target_column`: 最小化或最大化目标列
- `optimization`: `minimize` 或 `maximize`
- `candidate_count`: 实时探索候选数
- `respect_control_flow_range`: 是否严格应用控制值별 训练流量范围
## 运行
```powershell
uv run python main.py
```
服务器启动后按以下顺序运行:
1. 加载 `config/config.json`
2. 加载 `data/` 的 CSV 文件
3. 送风机/泵模型内存学习
4. 启动 MCP 服务器
不会生成模型文件和 LUT 文件。
## MCP 工具
### `get_optimal_blower_angle`
输入:
```json
{
"required_flow": 500.0
}
```
响应示例:
```text
在该流量下,适当的角度控制值为 49。预测 Power: 2.739 kW
```
范围外响应示例:
```text
该流量不是训练数据范围内的值。支持范围:500 ~ 900
```
### `get_optimal_pump_control`
输入:
```json
{
"required_flow": 5.0
}
```
## MCP 资源
### `keti-flow://training-status`
返回当前服务器进程的训练模型状态、数据文件、行数和流量范围。
## Codex 注册示例
在 Codex MCP 设置中按以下格式注册:
```json
{
"mcpServers": {
"keti-flow": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\keti\\workspace\\KETI_FLOW_MCP",
"run",
"python",
"main.py"
]
}
}
}
```
## Claude 注册示例
在 Claude Desktop 设置文件的 `mcpServers` 中添加以下项目:
```json
{
"mcpServers": {
"keti-flow": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\keti\\workspace\\KETI_FLOW_MCP",
"run",
"python",
"main.py"
]
}
}
}
```
## 本地验证
`tests/` 是用于本地验证的文件夹,不被 git 追踪。
简单的 smoke 验证:
```powershell
uv run python -c "from src.mcp_server.server import build_runtime; r=build_runtime(); print(r.status())"
```
送风机预测确认:
```powershell
uv run python -c "from src.mcp_server.server import build_runtime, optimal_control_text; r=build_runtime(); print(optimal_control_text(r, 'blower', 500))"
```
## git 追踪排除
以下项目不包含在 git 中:
- `data/`
- `tests/`
- `.venv/`
- 模型输出文件
- 日志和本地输出物