MOP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MOPDecompose and orchestrate building a weather service"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MOP - Multi-Agent Orchestrator Platform
MOPは、複数のAIエージェント(LLM)が協調してタスクを遂行するためのMCPサーバーです。OpenCodeとCodexの両方で利用可能な汎用MCPサーバーとして設計し、エージェント間の役割分担・通信・成果物の統合を自動化します。
アーキテクチャ
User Request
│
▼
┌─────────────────────────────────────┐
│ MCP Orchestrator Server │
│ (Python FastMCP / TypeScript SDK) │
│ │
│ tools: │
│ decompose_task │
│ assign_agent │
│ agent_communicate │
│ get_task_status │
│ submit_artifact │
│ review_code │
│ merge_results │
│ │
│ resources: │
│ task://{task_id}/status │
│ agent://{agent_id}/inbox │
│ artifact://{artifact_id} │
└─────────────────────────────────────┘
│
▼
Clients register themselves with register_agentRelated MCP server: agent-comm
エージェント構成
MOP は起動時にエージェントを登録しません。list_registered_agents は、まだ
register_agent を呼んだクライアントがなければ空の配列を返します。各クライアントは
共有 HTTP endpoint へ接続した後、安定した ID で自身を登録してください。再接続時の
同じ ID による登録は、モデル・名前・役割を最新の値へ更新します。
セットアップ
1. 仮想環境の作成
python3 -m venv .venv
source .venv/bin/activate2. 依存関係インストール
pip install -r requirements.txt3. 共有HTTP MCPサーバー起動
python src/http_entry.pyhttp://127.0.0.1:8765/mcp でStreamable HTTP MCPサーバーが待機します。
Codex、Kimiなど、通信させたい全クライアントをこの同じURLへ接続してください。
タスク、成果物、メッセージはこの単一プロセス内で共有されます。
INFO Starting shared MOP server at http://127.0.0.1:8765/mcp
INFO Starting MCP server 'mop' with transport 'streamable-http'ホスト、ポート、パスはオプションまたは環境変数で変更できます。
python src/http_entry.py --host 127.0.0.1 --port 9000 --path /mcp
MOP_PORT=9000 python src/http_entry.py4. Codex設定
プロジェクトの .codex/config.toml:
[mcp_servers.mop]
url = "http://127.0.0.1:8765/mcp"
enabled = true
tool_timeout_sec = 60
default_tools_approval_mode = "auto"5. OpenCode 設定
~/.config/opencode/opencode.json:
{
"mcp": {
"mop": {
"type": "remote",
"url": "http://127.0.0.1:8765/mcp",
"enabled": true
}
}
}6. 他クライアントの設定
クライアントのMCP設定で、トランスポートに Streamable HTTP、URLに次を指定します。
http://127.0.0.1:8765/mcpクライアントごとに src/mcp_entry.py を起動すると、stdioプロセスごとに状態が分離し、
エージェント間のメッセージは共有されません。stdio互換モードは単独利用の場合に限り、
次のコマンドで起動できます。
python src/mcp_entry.pyプロジェクト構成
rade/
├── docs/
│ └── 001-multi-agent-mcp-orchestrator.md
├── src/
│ ├── orchestrator/
│ │ ├── __init__.py
│ │ ├── server.py # MCPサーバーエントリポイント
│ │ ├── tools/
│ │ │ ├── __init__.py
│ │ │ ├── decompose.py # decompose_taskツール
│ │ │ ├── assign.py # assign_agentツール
│ │ │ ├── communicate.py # agent_communicateツール
│ │ │ ├── status.py # get_task_statusツール
│ │ │ ├── artifact.py # submit_artifactツール
│ │ │ ├── review.py # review_codeツール
│ │ │ └── merge.py # merge_resultsツール
│ │ ├── models/
│ │ │ ├── __init__.py
│ │ │ ├── task.py # Taskモデル定義
│ │ │ ├── agent.py # Agentモデル定義
│ │ │ └── artifact.py # Artifactモデル定義
│ │ ├── storage/
│ │ │ ├── __init__.py
│ │ │ ├── task_store.py # タスクストア実装
│ │ │ └── artifact_store.py # アーティファクトストア実装
│ │ └── orchestrator.py # コアロジック
│ ├── http_entry.py # 共有Streamable HTTPサーバー
│ └── mcp_entry.py # 単独利用向けstdioサーバー
├── tests/
│ ├── test_decompose.py
│ ├── test_assign.py
│ ├── test_communicate.py
│ ├── test_merge.py
│ └── test_orchestrator.py
├── pyproject.toml
├── requirements.txt
└── README.md実装担当
Agent A — Kimi K2.7 Code(Planner)
src/orchestrator/tools/decompose.py— decompose_task の全実装src/orchestrator/tools/assign.py— assign_agent の全実装src/orchestrator/tools/merge.py— merge_results の全実装src/orchestrator/orchestrator.py— コアロジック(タスク管理、状態遷移、進行管理)src/orchestrator/models/task.py— Taskモデル定義src/orchestrator/models/agent.py— Agentモデル定義src/orchestrator/storage/task_store.py— タスクストア実装
Agent B — Qwen3.7 Plus(Coder)
src/orchestrator/tools/communicate.py— agent_communicate の全実装src/orchestrator/tools/status.py— get_task_status の全実装src/orchestrator/tools/artifact.py— submit_artifact の全実装src/orchestrator/models/artifact.py— Artifactモデル定義src/orchestrator/storage/artifact_store.py— アーティファクトストア実装src/orchestrator/server.py— MCPサーバーエントリポイント(全ツールの登録)src/mcp_entry.py— サーバー起動用エントリポイント
Agent C — Mimo v2.5 Pro(Tester)
src/orchestrator/tools/review.py— review_code の全実装tests/test_decompose.py— decompose_task のテストtests/test_assign.py— assign_agent のテストtests/test_communicate.py— agent_communicate のテストtests/test_merge.py— merge_results のテストtests/test_orchestrator.py— 統合テストpyproject.toml— プロジェクト設定(テストフレームワーク、依存関係)requirements.txt— Python依存パッケージ一覧README.md— プロジェクト概要と実行方法
MCPツール定義
decompose_task
説明: ユーザーリクエストをサブタスクに分解する
パラメーター:
request: str— ユーザーからの要求戻り値:
Task(分解結果のルートタスク、subtasksに子タスクIDリスト)
assign_agent
説明: 特定のタスクをエージェントに割り当てる
パラメーター:
task_id: str,agent_id: str戻り値: 更新後の
Task
agent_communicate
説明: エージェント間でメッセージを送受信する
パラメーター:
from_agent: str,to_agent: str,message_type: str,content: str,task_id: str | None戻り値:
Message
get_task_status
説明: タスクの状態を取得する
パラメーター:
task_id: str戻り値:
Task(ステータス、進捗、成果物一覧含む)
submit_artifact
説明: エージェントが成果物(コード・テスト・ドキュメント)を提出する
パラメーター:
task_id: str,agent_id: str,file_path: str,content: str,type: str戻り値:
Artifact
review_code
説明: 提出された成果物に対してレビューを実施する
パラメーター:
artifact_id: str,reviewer_agent_id: str戻り値:
Review(コメント、承認/却下、修正提案)
merge_results
説明: サブタスクの成果物を統合する
パラメーター:
task_id: str戻り値: 統合後の
Task(artifactsにマージ結果含む)
使用例
Pythonコードから直接利用する例:
import asyncio
from orchestrator.orchestrator import Orchestrator
from orchestrator.storage.artifact_store import ArtifactStore
async def main():
store = ArtifactStore()
orch = Orchestrator(artifact_store=store)
# タスクを分解
task = await orch.decompose_task('Build a calculator API')
print(f'Subtasks: {task.subtasks}')
# エージェントを割り当て
await orch.assign_agent(task.subtasks[0], 'B-Qwen')
# エージェント間で通信
await orch.agent_communicate(
'B-Qwen', 'A-Kimi', 'question',
'What auth method?', task.subtasks[0]
)
# ステータス確認
status = await orch.get_task_status(task.subtasks[0])
print(f'Status: {status.status.value}')
asyncio.run(main())全ワークフロー例
import asyncio
from orchestrator.orchestrator import Orchestrator
from orchestrator.storage.artifact_store import ArtifactStore
from orchestrator.tools.artifact import create_submit_artifact
from orchestrator.tools.review import ReviewTool
from orchestrator.models.task import TaskStatus
async def full_workflow():
store = ArtifactStore()
orch = Orchestrator(artifact_store=store)
# 1. タスク分解
task = await orch.decompose_task('Build a REST API')
# 2. エージェント割り当て
for i, sid in enumerate(task.subtasks):
agents = ['A-Kimi', 'B-Qwen', 'B-Qwen', 'C-Mimo']
await orch.assign_agent(sid, agents[i % 4])
# 3. 成果物提出
submit = create_submit_artifact(store, orch)
for sid in task.subtasks:
await submit(
task_id=sid, agent_id='B-Qwen',
file_path=f'src/{sid}.py',
content=f'# Code for {sid}',
type='code'
)
# 4. コードレビュー
review_tool = ReviewTool(store)
artifacts = store.list_all()
review = await review_tool.review_code(
artifacts[0].id, 'C-Mimo'
)
print(f'Review: {review.status.value}')
# 5. サブタスク完了
for sid in task.subtasks:
orch.update_task_status(sid, TaskStatus.COMPLETED)
# 6. 成果物統合
merged = await orch.merge_results(task.id)
print(f'Merged: {merged.status.value}, {len(merged.artifacts)} artifacts')
asyncio.run(full_workflow())MCPツール一覧
ツール | 説明 | 担当エージェント |
| リクエストをサブタスクに分解 | Agent A |
| タスクをエージェントに割り当て | Agent A |
| エージェント間メッセージ送受信 | Agent B |
| 受信箱をカーソル付きで取得 | Agent B |
| 新着メッセージを待機 | Agent B |
| タスクステータス取得 | Agent B |
| 成果物提出 | Agent B |
| コードレビュー実施 | Agent C |
| 成果物統合 | Agent A |
| サーバーと登録ツールの診断情報 | Codex |
ライブ通信
受信側はまず get_agent_inbox を呼び、返された latest_message_id を保持します。
続けて wait_for_agent_message の after_message_id にそのIDを指定すると、
新着メッセージが届くまで待機できます。送信側は従来どおり
agent_communicate を呼びます。
この待機はメッセージ配送をリアルタイム化しますが、停止中のLLMを自動起動するものでは ありません。受信クライアントが待機ツールを実行中である必要があります。また、現在の 状態はHTTPサーバープロセス内に保持され、サーバー再起動時に失われます。
MCPリソース
リソース | 説明 |
| タスクのステータス情報を取得 |
| エージェントの受信箱メッセージ一覧 |
| 成果物の内容を取得 |
開発
テスト実行
pytest tests/ -vコードフォーマット
black src/ tests/静的解析
flake8 src/ tests/
mypy src/ライセンス
MIT License
This server cannot be deployed
Maintenance
Related MCP Connectors
LLM Orchestration Agent (Mcp)
MCP server for building and testing AI agents with multi-model experimentation and insights.
LLM Orchestration MCP Agent
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server for multi-agent collaboration enabling AI agents to communicate, delegate tasks, and share artifacts across clients and machines with federation support.111MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI coding agents to communicate, share state, and coordinate work in real time via MCP tools or REST API.2025MIT
- AlicenseAqualityCmaintenanceAn MCP server that turns independent AI agents into a coordinated engineering team with shared task board, context, review loop, and enforced plan-implement-review-iterate workflow.24MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that enables AI agents to run a deterministic orchestration loop with decomposition, subagent execution, and review feedback across multiple LLM backends.59MIT