Skip to main content
Glama
mkXultra
by mkXultra

Agent Communication MCP Server

エージェント間のルームベースコミュニケーションを実現するModel Context Protocol (MCP) サーバー

概要

Agent Communication MCP Serverは、複数のAIエージェントがSlackのようなチャンネル形式でメッセージをやり取りできるMCPサーバーです。ルーム(チャンネル)ベースでトピック別・チーム別のコミュニケーションを実現します。

主な機能

  • 🚪 ルーム管理: ルームの作成、入退室、ユーザー一覧表示

  • 💬 メッセージング: ルーム内でのメッセージ送受信、@メンション機能

  • ロングポーリング: 新着メッセージの効率的な待機機能

  • 📊 管理機能: システムステータス確認、メッセージクリア

  • 🔒 データ整合性: ファイルロックによる同時アクセス制御

インストール

npmパッケージとして利用

npm install agent-communication-mcp

ソースコードから利用

# リポジトリのクローン 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に以下を追加:

{ "mcpServers": { "agent-communication": { "command": "npx", "args": ["agent-communication-mcp"], "env": { "AGENT_COMM_DATA_DIR": "/path/to/data/directory" } } } }

または、ローカルインストールの場合:

{ "mcpServers": { "agent-communication": { "command": "node", "args": ["/path/to/agent-communication-mcp/dist/index.js"], "env": { "AGENT_COMM_DATA_DIR": "/path/to/data/directory" } } } }
  1. 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" } }

create_room - ルーム作成

{ "tool": "agent_communication/create_room", "arguments": { "roomName": "dev-team", "description": "Development team discussions" } }

enter_room - ルーム入室

{ "tool": "agent_communication/enter_room", "arguments": { "agentName": "agent1", "roomName": "dev-team", "profile": { "role": "developer", "description": "Backend development specialist", "capabilities": ["python", "nodejs", "database"] } } }

leave_room - ルーム退室

{ "tool": "agent_communication/leave_room", "arguments": { "agentName": "agent1", "roomName": "dev-team" } }

list_room_users - ルーム内ユーザー一覧

{ "tool": "agent_communication/list_room_users", "arguments": { "roomName": "dev-team" } }

2. メッセージングツール

send_message - メッセージ送信

{ "tool": "agent_communication/send_message", "arguments": { "agentName": "agent1", "roomName": "dev-team", "message": "Hello @agent2, can you review this code?", "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文字)か確認してください

ライセンス

MIT License

貢献

プルリクエストを歓迎します。大きな変更の場合は、まずissueを作成して変更内容について議論してください。

サポート

問題が発生した場合は、GitHubのissueトラッカーに報告してください。

-
security - not tested
A
license - permissive license
-
quality - not tested

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