Comunicación entre agentes Servidor MCP
エージェント間のルームベースコミュニケーションを実現するModel Protocolo de contexto (MCP) サーバー
概要
Comunicación de agente Servidor MCPは、複数のAIエージェントがSlackのようなチャンネル形式でメッセージをやり取りできるMCPサーバーです。ルーム(チャンネル)ベースでトピック別・チーム別のコミュニケーションを実現します。
主な機能
- 🚪 ルーム管理: ルームの作成、入退室、ユーザー一覧表示
- 💬 メッセージング: ルーム内でのメッセージ送受信、@メンション機能
- ⏳ ロングポーリング: 新着メッセージの効率的な待機機能
- 📊 管理機能: システムステータス確認、メッセージクリア
- 🔒 データ整合性: ファイルロックによる同時アクセス制御
インストール
npmパッケージとして利用
npm install agente-comunicacion-mcp
ソースコードから利用
# リポジトリのクローン git clone https://github.com/mkXultra/agent-communication-mcp.git cd agente-comunicacion-mcp # 依存関係のインストール npm install # TypeScriptのビルド npm run build
使用方法
MCPクライアントとの接続
- Claude Desktopの設定
claude_desktop_config.jsonに以下を追加:
{ "mcpServers": { "agente-comunicación": { "command": "npx", "args": ["agent-communication-mcp"], "env": {"AGENT_COMM_DATA_DIR": "/ruta/a/datos/directorio" } } }
または、ローカルインストールの場合:
{ "mcpServers": { "agente-comunicación": { "command": "nodo", "args": ["/path/to/agent-communication-mcp/dist/index.js"], "env": {"AGENT_COMM_DATA_DIR": "/ruta/a/datos/directorio" } } }
- VSCode Extension経由での使用
MCP対応のVSCode拡張機能から接続可能です。
環境変数
変数名 | 説明 | デフォルト値 |
---|---|---|
AGENT_COMM_DATA_DIR | データファイルの保存ディレクトリ | ./data |
AGENT_COMM_LOCK_TIMEOUT | ファイルロックのタイムアウト時間(ミリ秒) | 5000 |
AGENT_COMM_MAX_MESSAGES | ルームあたりの最大メッセージ数 | 10000 |
AGENT_COMM_MAX_ROOMS | 最大ルーム数 | 100 |
AGENT_COMM_WAIT_TIMEOUT | wait_for_messagesの最大タイムアウト時間(ミリ秒) | 120000 |
ツール一覧と使用例
1. ルーム管理ツール
list_rooms - ルーム一覧取得
// 全ルームを取得 { "tool": "agent_communication/list_rooms", "arguments": {} } // 特定エージェントが参加しているルームのみ取得 { "tool": "agent_communication/list_rooms", "arguments": { "agentName": "agent1" } }
crear_habitación - ルーム作成
{ "herramienta": "agent_communication/create_room", "arguments": { "roomName": "dev-team", "description": "Discusiones del equipo de desarrollo" } }
enter_room - ルーム入室
{ "herramienta": "agent_communication/enter_room", "arguments": { "agentName": "agent1", "roomName": "dev-team", "profile": { "role": "desarrollador", "descripción": "Especialista en desarrollo backend", "capabilities": ["python", "nodejs", "database"] } }
leave_room - ルーム退室
{ "herramienta": "agent_communication/leave_room", "arguments": { "agentName": "agent1", "roomName": "dev-team" } }
list_room_users - ルーム内ユーザー一覧
{ "herramienta": "agent_communication/list_room_users", "arguments": { "roomName": "dev-team" } }
2. メッセージングツール
send_message - メッセージ送信
{ "herramienta": "agent_communication/send_message", "arguments": { "agentName": "agent1", "roomName": "dev-team", "message": "Hola @agente2, ¿puedes revisar este código?", "metadata": { "priority": "high" } }
get_messages - メッセージ取得
// 最新50件のメッセージを取得 { "tool": "agent_communication/get_messages", "arguments": { "roomName": "dev-team", "limit": 50 } } // 自分宛のメンションのみ取得 { "tool": "agent_communication/get_messages", "arguments": { "roomName": "dev-team", "agentName": "agent2", "mentionsOnly": true } }
wait_for_messages - 新着メッセージ待機(ロングポーリング)
// 新着メッセージが来るまで待機(最大30秒) { "tool": "agent_communication/wait_for_messages", "arguments": { "agentName": "agent1", "roomName": "dev-team", "timeout": 30 } } // デフォルトタイムアウト(30秒)で待機 { "tool": "agent_communication/wait_for_messages", "arguments": { "agentName": "agent1", "roomName": "dev-team" } }
このツールを使用すると:
- 新着メッセージがある場合は即座に返却
- ない場合は新着メッセージが来るまで待機(最大timeout秒)
- 複数エージェントが同時に待機している場合はデッドロック警告を表示
- 自動的に既読位置を管理
3. 管理ツール
get_status - システムステータス取得
// 全体のステータスを取得 { "tool": "agent_communication/get_status", "arguments": {} } // 特定ルームのステータスを取得 { "tool": "agent_communication/get_status", "arguments": { "roomName": "dev-team" } }
clear_room_messages - ルームメッセージクリア
{ "tool": "agent_communication/clear_room_messages", "arguments": { "roomName": "dev-team", "confirm": true } }
開発
ビルドとテスト
# TypeScriptのビルド npm run build # 開発モード(ウォッチモード) npm run dev # テストの実行 npm test # 特定の機能のテスト npm run test:messaging npm run test:rooms npm run test:management # 統合テスト npm run test:integration # E2Eテスト npm run test:e2e # カバレッジレポート npm run test:coverage
型チェックとLint
# 型チェック npm run typecheck # ESLint npm run lint
アーキテクチャ
MCPクライアント ↓ MCPサーバー (src/index.ts) ↓ ツールレジストリ (src/server/ToolRegistry.ts) ↓ アダプター層 (src/adapters/) ├── MessagingAdapter ├── RoomsAdapter └── ManagementAdapter ↓ 機能モジュール (src/features/) ├── messaging/ ├── rooms/ └── management/
データ構造
data/ ├── rooms.json # ルーム情報 └── rooms/ # ルーム別データ ├── general/ │ ├── messages.jsonl # メッセージ履歴 │ ├── presence.json # プレゼンス情報 │ ├── read_status.json # 既読管理 │ └── waiting_agents.json # 待機中エージェント └── dev-team/ ├── messages.jsonl ├── presence.json ├── read_status.json └── waiting_agents.json
トラブルシューティング
ファイルロックエラー
LOCK_TIMEOUTエラーが発生した場合、AGENT_COMM_LOCK_TIMEOUT環境変数を増やしてください
古いロックファイル(.lock拡張子)が残っている場合は手動で削除してください
ルームが見つからない
- ルーム名は英数字、ハイフン、アンダースコアのみ使用可能です
- ルームに入室する前に作成されているか確認してください
メッセージが送信できない
- エージェントがルームに入室しているか確認してください
- メッセージサイズが制限内(デフォルト1000文字)か確認してください
ライセンス
Licencia MIT
貢献
プルリクエストを歓迎します。大きな変更の場合は、まずissueを作成して変更内容について議論してください。
サポート
問題が発生した場合は、GitHubのissueトラッカーに報告してください。