MCP server that escalates to Opus via Claude Code (claude -p / --bg): ask, delegate, fire/check background tasks — blocks nested MCP delegation.
Five tools with explicit Zod schemas and descriptions. Naming is clear (ask, delegate, follow_up, fire, check) but lacks action-verb consistency, 'ask' and 'delegate' are strong; 'follow_up' and 'fire' are colloquial. Descriptions are verbose (200 - 400 chars) with repetitive warnings; parameter descriptions are present but generic. Schemas use Zod with type info, but output schemas are not documented. Error handling is minimal, no recovery guidance or categorization. No tool annotations (readOnlyHint/destructiveHint). Security concern: tools accept 'cwd' parameter, risking path traversal if not validated server-side.
⚠️ OPUS ONLY — opus is expensive but very capable. Use for complex reasoning, architecture questions, and heavy autonomous work. Do NOT use for cheap exploration (grep, file listing, simple edits). Ask Opus a question — read-only analysis (architecture, code explanation, planning). Like claudecode({ prompt: "Explain the architecture" }). Does NOT modify files. Nested MCP delegation is blocked: this Opus session cannot call claude-mcp-bridge (or any MCP) again.
Compact progress report for a background Opus session started with fire. Returns status and session metadata. Much cheaper than resuming the full session. Set detailed=true to include last message text.
⚠️ OPUS ONLY — opus is expensive but very capable. Use for complex reasoning, architecture questions, and heavy autonomous work. Do NOT use for cheap exploration (grep, file listing, simple edits). Delegate a complete autonomous task to Opus (claude -p). Full tool access (read, edit, shell) in cwd, max 20 agentic turns. Use for refactors, multi-file implementation, running/fixing tests. For read-only questions use ask instead. Nested MCP delegation is blocked: this Opus session cannot call claude-mcp-bridge (or any MCP) again.
⚠️ OPUS ONLY — opus is expensive but very capable. Use for complex reasoning, architecture questions, and heavy autonomous work. Do NOT use for cheap exploration (grep, file listing, simple edits). Fire-and-forget: dispatch an autonomous Opus task in the background (claude --bg). Returns session_id immediately — keep working and poll with check. Max 20 turns. Example: fire({ prompt: "Refactor the auth module to use JWT" }). Nested MCP delegation is blocked: this Opus session cannot call claude-mcp-bridge (or any MCP) again.
Output schemas not documented. Tools return text responses but LLMs cannot infer structure (session_id location, status field format, pagination). Downstream tools cannot reliably extract session_id from ask/delegate/follow_up responses.
No tool annotations. 'ask' and 'check' are read-only; 'delegate', 'follow_up', 'fire' are destructive (spawn background processes, modify state). Missing readOnlyHint and destructiveHint annotations prevent LLMs from reasoning about safety and retry semantics.
'cwd' parameter accepted in all tools without validation. Path traversal risk if LLM passes '../../../etc/passwd' or absolute paths outside intended project root. No documented constraints (e.g. 'must be within /projects/*').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
⚠️ OPUS ONLY — opus is expensive but very capable. Use for complex reasoning, architecture questions, and heavy autonomous work. Do NOT use for cheap exploration (grep, file listing, simple edits). Continue a previous Opus session by session_id (from ask, delegate, or fire). Prior context lives on Claude's side — do not resend it. Nested MCP delegation is blocked: this Opus session cannot call claude-mcp-bridge (or any MCP) again.
Error handling absent. No recovery guidance. If 'claude' binary not found or session_id invalid, LLM receives raw error with no actionable next step. No categorization (retryable vs fatal).
Naming inconsistency. 'ask' and 'delegate' are strong verbs; 'follow_up', 'fire', 'check' are colloquial. 'fire' especially ambiguous, does it mean 'launch', 'dismiss', or 'terminate'? Recommend: 'start_background_task' or 'dispatch_task' for clarity.