Ambient environment management for Claude Code - manages Docker containers, sidecars, and sandboxes for development environments
Orbit MCP presents a functional but unpolished tool suite with moderate definition quality. All 6 tools have names, descriptions, and input schemas visible in the source code (orbit-mcp/src/index.ts). Naming follows verb-prefix conventions (orbit_status, orbit_switch_env, orbit_sidecars). However, descriptions lack depth, most are 80-150 chars, below the production baseline of 194 chars. Parameter descriptions are present but minimal (10-30 chars typically). Input schemas use proper JSON Schema with type declarations and enums, but output schemas are nowhere documented. Error handling exists but is generic (catch-all 'JSON.stringify({ error: message })'). No parameter validation constraints are documented (e.g., limits for 'limit' field). The tools bundle related concerns (e.g., orbit_sidecars handles list/start/stop with optional conditional params), which risks confusion. No indication of idempotency, confirmation steps for destructive operations, or rich error guidance.
Query raw state from Orbit database. Can retrieve: all projects, audit log, registry, or global config.
Manage Docker Sandbox (microVM) isolation. Actions: status (check capabilities + list sandboxes), create (new sandbox for project), reset (destroy + recreate), remove (delete sandbox), health (verify sandbox runtime works).
Manage sidecar services (databases, caches, etc.). Available sidecars: postgres, redis, mysql, mongodb, rabbitmq, aws
Get current environment status for a project. Shows project config, current environment, running sidecars, Docker status, and recent activity.
Stop all Orbit Docker containers and clear sidecar state.
Switch to a different environment (dev/test/staging). Manages Docker containers and sidecars automatically.
Output schemas not documented. No evidence of structured return types for any tool. LLMs cannot infer downstream field names or plan multi-step workflows.
Parameter descriptions are minimal (10-30 chars) and lack actionable detail. For example, 'Limit for audit query (default 20)' does not specify valid range (1-100?). 'Confirm stop all (default true)' does not explain the confirmation semantics.
orbit_sidecars bundles three actions (list/start/stop) with conditional parameters. 'sidecar' param is optional but required for start/stop. This conditional logic is not documented and invites misuse by LLMs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 49 | - | v1 |
orbit_stop_all is destructive (DESTRUCTIVE risk marker) but has no confirmation step, dry-run option, or guidance in the error handler about recovery. No confirmation_request pattern implementation.
Error responses are generic JSON dumps. No error categorization (retryable vs. fatal). No actionable recovery guidance (e.g., 'Project not found. Use orbit_status to list available projects.'). Aligns with pattern:recovery-guide gap.
Tool descriptions are 50-150 chars, below the production baseline of 194 chars. Descriptions lack WHEN/WHY guidance (e.g., orbit_get_state says 'Query raw state' but not when an agent should call it vs. orbit_status).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). orbit_stop_all, orbit_switch_env, and orbit_sidecars (start/stop) are stateful but lack annotations to signal this to the LLM.
Parameter 'project_path' defaults to cwd but this is not enforced in schemas (no default keyword). LLM behavior with absent parameters is unclear.