Manus MCP
Manus MCP
公式のManus API v2を通じて、Claude CodeにManus.imの完全なプログラム制御を提供するMCPサーバーです。文書化された全30エンドポイント、一般的なワークフローのための3つの複合ツール、およびRSA-SHA256署名検証を備えたローカルWebhookレシーバーを実装しています。
ステータス: 本番環境対応(シングルユーザー) — v0.1.1
言語: Python 3.11+
トランスポート: stdio (Claude Codeネイティブ)
ベースURL:
https://api.manus.ai
検証済みカバレッジ (v0.1.1)
レイヤー | メトリクス |
ユニットテスト | 60以上 (server.pyのディスパッチ、Webhook ASGIアプリ、シークレット漏洩ガード、スキーマの安定性) |
ライブE2Eテスト | 23 (task.update / sendMessage / confirmAction / agent.update / website.publish を含む) |
複合ライブテスト | 4 (F2拒否チェックを含む) |
WebhookライブE2E | 1 (cloudflaredトンネル + レシーバー + Manus配信) |
ライブ実行されたManus APIエンドポイント | 30/30 (アカウントに前提条件がない場合のみ正常にスキップ — エージェントなし / ウェブサイトなし) |
カバレッジ | ≥ 80% (CIでゲート制御) |
| 0エラー |
| 0エラー |
本番環境のフローについては、docs/SECURITY.mdおよびdocs/RELEASE.mdを参照してください。
含まれるもの
30の直接APIラッパー
カテゴリ | ツール |
タスク (9) |
|
プロジェクト (2) |
|
スキル (1) |
|
エージェント (3) |
|
ファイル (3) |
|
Webhook (4) |
|
使用量 (3) |
|
コネクタ (1) |
|
ブラウザ (1) |
|
ウェブサイト (3) |
|
3つの複合ツール
manus_file_upload— 署名付きURLを作成し、バイトをアップロードしてstatus=uploadedを待ちます。path、base64、または公開urlを受け入れます。manus_task_wait— タスクが終了ステータス (stopped/waiting/error) に達するまでポーリングし、新しいメッセージと待機詳細 (event_id + レスポンススキーマ) を返します。manus_website_publish_and_wait— サイトを公開し、publishedまたはfailedになるまで待ちます。
3つのWebhookツール (ローカルSQLite DBから読み取り)
manus_webhook_events_list— 受信したイベントをフィルタ付きで一覧表示します。manus_webhook_events_get—event_idでイベントを取得します。manus_webhook_events_clear— 受信したイベントを削除します。
合計: 36個のMCPツール。
インストール
cd path/to/Manus-MCP
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS/Linux:
# source .venv/bin/activate
pip install -e ".[dev]"APIキーの設定
プロジェクトルートに .env ファイルを配置します(.env.example テンプレートが提供されています)。以下の両方の変数名が受け入れられます:
MANUS_API_KEY=sk-...
# or, for backwards compatibility:
# ManusAPI=sk-...優先順位: process.env > .env。
オプション設定:
MANUS_BASE_URL=https://api.manus.ai
MANUS_HTTP_TIMEOUT=60
MANUS_LOG_LEVEL=INFOClaude Codeへの登録
.claude/settings.json (プロジェクトレベル) または ~/.claude/settings.json (グローバル) に以下を追加します:
{
"mcpServers": {
"manus": {
"command": "python",
"args": ["-m", "manus_mcp"],
"cwd": "path/to/Manus-MCP"
}
}
}MANUS_API_KEY がグローバルに設定されていない場合は、明示的に渡してください:
{
"mcpServers": {
"manus": {
"command": "python",
"args": ["-m", "manus_mcp"],
"cwd": "path/to/Manus-MCP",
"env": { "MANUS_API_KEY": "sk-..." }
}
}
}Claude Codeを再起動すると、ツールリストに manus_* ツールが表示されます。
検証
サーバーを起動せずに実行:
python scripts/list_tools.py実際のAPIに対して実行:
python scripts/smoke.pyユニットテスト:
pytestリントと型チェック:
ruff check .
mypy manus_mcpClaude Codeからの使用例
manus_task_create { "message": { "content": "Give me a 5-bullet summary of today's AI news" } }レスポンスには task_id が含まれます。次に:
manus_task_wait { "task_id": "<id>", "timeout_sec": 600 }終了すると、最終的な返信を含む last_assistant_message と、会話履歴を含む new_messages が取得されます。
ファイルをアップロードしてタスクに添付する:
manus_file_upload { "source": { "path": "C:/docs/report.pdf" } }
manus_task_create {
"message": {
"content": [
{ "type": "text", "text": "Summarize this report" },
{ "type": "file", "file_id": "<file_id>" }
]
}
}Webhookレシーバー (オプション)
ManusAPIDocs/webhooks/security.md に従った完全なRSA-SHA256署名検証を備えた、task_created / task_stopped イベント用のローカルレシーバーです。
1. 環境変数の設定
MANUS_WEBHOOK_PUBLIC_URL=https://your-tunnel.example.com/manus/webhook
MANUS_WEBHOOK_HOST=127.0.0.1
MANUS_WEBHOOK_PORT=8787
# MANUS_WEBHOOK_DB_PATH=... # defaults to %LOCALAPPDATA%\manus-mcp\events.db on WindowsMANUS_WEBHOOK_PUBLIC_URL は、Manusが呼び出すURLと完全に一致している必要があります。Manusの署名ペイロードにはこのURLが含まれているため、タイプミスがあるとすべてのイベントが拒否されます。
2. トンネルの開始
例えば、Cloudflare Tunnelを使用する場合:
cloudflared tunnel --url http://localhost:8787またはngrokを使用する場合:
ngrok http 87873. レシーバーの実行
python -m manus_mcp.webhook_receiver
# or: manus-mcp-webhook --host 127.0.0.1 --port 87874. ManusへのWebhook登録
Claude Codeで以下を実行:
manus_webhook_create { "url": "https://your-tunnel.example.com/manus/webhook" }5. イベントの読み取り
manus_webhook_events_list { "event_type": "task_stopped", "limit": 20 }
manus_webhook_events_get { "event_id": "..." }
manus_webhook_events_clear { "before_received_at": 1704000000 }アーキテクチャ
manus_mcp/
├── __main__.py # stdio entrypoint
├── server.py # MCP Server bootstrap
├── config.py # pydantic-settings
├── logger.py # stderr-only logger
├── client/
│ ├── manus_client.py # async httpx client + retry
│ ├── rate_limiter.py # per-endpoint token bucket (from rate-limits.md)
│ ├── retry.py # exponential backoff + jitter
│ └── errors.py # ManusApiError / ManusNetworkError
├── schemas/ # pydantic models for each resource (tasks, projects, ...)
├── tools/ # @manus_tool registration for all 36 tools
│ ├── tasks.py projects.py skills.py agents.py
│ ├── files.py webhooks.py usage.py connectors.py
│ ├── browser.py website.py
│ └── composite.py # task_wait / file_upload / website_publish_and_wait
└── webhook_receiver/
├── signature.py # RSA-SHA256 verification using {ts}.{url}.{sha256_hex(body)}
├── storage.py # SQLite WAL
├── server.py # Starlette + uvicorn
├── tools.py # events_list / events_get / events_clear
└── __main__.pyレート制限
クライアントはAPI制限(60秒のスライディングウィンドウ)を遵守し、429レスポンスに対してバックオフとジッターを伴う再試行を透過的に行います。制限は ManusAPIDocs/getting-started/rate-limits.md に基づいています:
10回/分:
task.create,task.sendMessage40回/分: すべてのミューテーション
100回/分: すべての読み取り専用呼び出し
600回/分:
usage.*
セキュリティ
APIキーはログに記録されません。
Webhookレシーバーは署名を検証し、5分以上経過したタイムスタンプを拒否します。
公開鍵は1時間キャッシュされます。
SQLiteは安全なマルチリーダーアクセスのために
check_same_thread=Falseを指定し、WALモードで開かれます。
ライセンス
MIT。
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/aruxojuyu665/Manus-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server