MCP server wrapping opencode CLI (opencode serve) for AI agent orchestration
Server exposes 10 tools with basic schemas and descriptions, but significant quality gaps limit production readiness. Tool naming mixes action verbs with generic terms (opencode_runs, opencode_sessions). Descriptions are present but brief (avg ~60 chars, below 194-char baseline). Parameter descriptions exist but lack constraint details (enums, ranges, formats). No documented output schemas. Error handling and recovery guidance absent. Legacy aliases (tools 6-9) duplicate functionality without clear deprecation path. Tool composition issues: opencode_runs bundles start/status/list/cancel into one tool via action parameter; opencode_sessions combines 8 operations (list/get/messages/send/diff/rename/delete/export) into a single tool, violating single-responsibility principle.
Legacy alias for opencode_runs(action=status)
Legacy alias for opencode_sessions(action=get)
Legacy alias for opencode_sessions(action=list)
List all MCP tools available in the opencode-cli-mcp server. Use this to discover what capabilities the MCP server exposes.
db + config backups: status/create/list/prune/restore (rotation + disk guard)
eternal memory: list/archive/unarchive/rename/delete/search/stats via SQLite (works offline)
start / status / list / cancel agent runs
list / get / messages / send / diff sessions, rename/delete (live API)
Tool composition violation: opencode_sessions bundles 8 distinct operations (list, get, messages, send, diff, rename, delete, export) into one tool via action parameter. Should split into separate tools (get_session, list_sessions, send_session_message, etc.) so LLM can compose them independently.
Missing output schemas: No documented return types for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., session_id, job_id) without knowing response structure. Document all response fields with types.
Parameter constraints missing: 'action' parameters accept free-form strings (start, status, list, cancel) without enum constraints. LLMs will hallucinate invalid actions. Replace with enum: {"enum": ["start", "status", "list", "cancel"]}.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
status / providers / project / launch_ui / mcp_pulse / config_drift
Legacy alias for opencode_runs(action=start)
Legacy tool aliases (run_agent, get_run_status, list_sessions, get_session) duplicate core functionality without deprecation guidance. Removes clarity on canonical tool names. Either remove aliases or mark as deprecated with migration path.
No error handling guidance: Tools lack recovery hints. E.g., if opencode_runs(action=status) fails with 'job not found', should LLM retry, call list_runs, or ask user? Add error classification and recovery suggestions.