COMPARISON.md•3.77 kB
# MCP Hot-Reload 実装比較
## 類似ツールとの比較
### ファイル監視ツール
| ツール | 特徴 | 長所 | 短所 |
|--------|------|------|------|
| **tsx watch** | TypeScript専用、esbuild使用 | シンプル、TypeScript対応 | 設定制限、再起動が遅い、デコレータ未対応 |
| **nodemon** | 汎用ファイル監視ツール | 高い設定自由度、安定性 | プロセス再起動のみ、状態保持なし |
| **Node.js --watch** | ネイティブ実装 | 追加依存なし | 実験的機能、限定的な設定 |
| **Bun --hot** | 真のホットリロード | 状態保持、高速 | Bunランタイム限定 |
| **tsc-watch** | TypeScript特化 | コンパイルステータス連携 | TypeScript限定 |
### 本実装の位置づけ
本実装(mcp-hot-reload)は、**MCPプロトコル専用**のホットリロードシステムとして、以下の独自性があります:
1. **MCPプロトコル統合**
- `tools/list_changed`通知の自動送信
- MCPクライアントとの連携最適化
2. **二段階リロード**
- ツールファイル:ホットリロード(プロセス再起動なし)
- 設定ファイル:プロセス再起動(dirtyフラグ)
3. **ラッパー機能**
- 任意のLSPサーバーをホットリロード対応に
- `--include`パターンで柔軟な監視設定
## 他のMCPホットリロード実装
### 1. whitejoce/hot-update-MCP-Server(Python)
```python
# JSONファイルからツール定義を動的読み込み
def load_tools():
tools_data = json.load(open("tools.json"))
for tool in tools_data:
exec(tool['code'], namespace)
```
**特徴**:
- JSONベースのツール定義
- 独立した名前空間でコード実行
- ランタイムでのコード評価
### 2. Spring AI実装
```java
// 動的ツール登録
mcpServer.addTool(new CustomTool());
// tool-updateシグナルで追加
```
**特徴**:
- APIベースのツール管理
- シグナルベースの更新通知
### 3. MCP TypeScript SDK
```typescript
// ツールの動的有効化/無効化
tool.enable();
tool.disable();
// 自動的にlistChanged通知
```
**特徴**:
- 公式SDKの標準機能
- 条件付きツール表示
## 本実装の優位性と改善点
### 優位性
1. **ファイルベースの直感的な管理**
- ツールをファイルとして管理
- Git等でのバージョン管理が容易
2. **包括的な監視システム**
- ツールと設定ファイルの両方を監視
- 変更の種類に応じた適切な対応
3. **汎用性**
- 任意のプロセスをラップ可能
- 言語非依存
### 改善の余地
1. **条件付きツール管理**
```javascript
// 提案:enabledプロパティのサポート
export default {
name: "admin_tool",
enabled: () => hasAdminPermission(),
// ...
}
```
2. **ツールのバリデーション強化**
```javascript
// 提案:スキーマ検証
validateToolSchema(tool) {
return ajv.validate(toolSchema, tool);
}
```
3. **メトリクスとモニタリング**
```javascript
// 提案:リロード統計
{
reloadCount: 0,
lastReloadTime: Date.now(),
toolLoadErrors: []
}
```
## 結論
本実装は、MCPプロトコルに特化したホットリロードシステムとして、既存のファイル監視ツールとは異なる価値を提供しています。特に、MCPの`tools/list_changed`通知との統合と、任意のLSPサーバーをラップできる柔軟性が特徴的です。
今後は、公式SDKの動的ツール管理機能との統合や、より高度なツール管理機能の追加により、さらに強力なシステムへと発展させることができるでしょう。