Skip to main content
Glama
mkXultra
by mkXultra
README.md8.51 kB
# Agent Communication MCP Server エージェント間のルームベースコミュニケーションを実現するModel Context Protocol (MCP) サーバー ## 概要 Agent Communication MCP Serverは、複数のAIエージェントがSlackのようなチャンネル形式でメッセージをやり取りできるMCPサーバーです。ルーム(チャンネル)ベースでトピック別・チーム別のコミュニケーションを実現します。 ### 主な機能 - 🚪 **ルーム管理**: ルームの作成、入退室、ユーザー一覧表示 - 💬 **メッセージング**: ルーム内でのメッセージ送受信、@メンション機能 - ⏳ **ロングポーリング**: 新着メッセージの効率的な待機機能 - 📊 **管理機能**: システムステータス確認、メッセージクリア - 🔒 **データ整合性**: ファイルロックによる同時アクセス制御 ## インストール ### npmパッケージとして利用 ```bash npm install agent-communication-mcp ``` ### ソースコードから利用 ```bash # リポジトリのクローン git clone https://github.com/mkXultra/agent-communication-mcp.git cd agent-communication-mcp # 依存関係のインストール npm install # TypeScriptのビルド npm run build ``` ## 使用方法 ### MCPクライアントとの接続 1. **Claude Desktopの設定** `claude_desktop_config.json`に以下を追加: ```json { "mcpServers": { "agent-communication": { "command": "npx", "args": ["agent-communication-mcp"], "env": { "AGENT_COMM_DATA_DIR": "/path/to/data/directory" } } } } ``` または、ローカルインストールの場合: ```json { "mcpServers": { "agent-communication": { "command": "node", "args": ["/path/to/agent-communication-mcp/dist/index.js"], "env": { "AGENT_COMM_DATA_DIR": "/path/to/data/directory" } } } } ``` 2. **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 - ルーム一覧取得 ```typescript // 全ルームを取得 { "tool": "agent_communication/list_rooms", "arguments": {} } // 特定エージェントが参加しているルームのみ取得 { "tool": "agent_communication/list_rooms", "arguments": { "agentName": "agent1" } } ``` #### create_room - ルーム作成 ```typescript { "tool": "agent_communication/create_room", "arguments": { "roomName": "dev-team", "description": "Development team discussions" } } ``` #### enter_room - ルーム入室 ```typescript { "tool": "agent_communication/enter_room", "arguments": { "agentName": "agent1", "roomName": "dev-team", "profile": { "role": "developer", "description": "Backend development specialist", "capabilities": ["python", "nodejs", "database"] } } } ``` #### leave_room - ルーム退室 ```typescript { "tool": "agent_communication/leave_room", "arguments": { "agentName": "agent1", "roomName": "dev-team" } } ``` #### list_room_users - ルーム内ユーザー一覧 ```typescript { "tool": "agent_communication/list_room_users", "arguments": { "roomName": "dev-team" } } ``` ### 2. メッセージングツール #### send_message - メッセージ送信 ```typescript { "tool": "agent_communication/send_message", "arguments": { "agentName": "agent1", "roomName": "dev-team", "message": "Hello @agent2, can you review this code?", "metadata": { "priority": "high" } } } ``` #### get_messages - メッセージ取得 ```typescript // 最新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 - 新着メッセージ待機(ロングポーリング) ```typescript // 新着メッセージが来るまで待機(最大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 - システムステータス取得 ```typescript // 全体のステータスを取得 { "tool": "agent_communication/get_status", "arguments": {} } // 特定ルームのステータスを取得 { "tool": "agent_communication/get_status", "arguments": { "roomName": "dev-team" } } ``` #### clear_room_messages - ルームメッセージクリア ```typescript { "tool": "agent_communication/clear_room_messages", "arguments": { "roomName": "dev-team", "confirm": true } } ``` ## 開発 ### ビルドとテスト ```bash # 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 ```bash # 型チェック 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文字)か確認してください ## ライセンス MIT License ## 貢献 プルリクエストを歓迎します。大きな変更の場合は、まずissueを作成して変更内容について議論してください。 ## サポート 問題が発生した場合は、GitHubのissueトラッカーに報告してください。

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mkXultra/agent-communication-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server