MCP server for Contree container management system. Exposes sandboxed code execution as stateless tool calls with image lineage tracking and immutable container images.
Contree MCP demonstrates solid tool coverage (19 tools) with mostly consistent naming conventions and present descriptions. All tools start with action verbs (list_, get_, set_, run_, import_, registry_, upload_, download_, rsync_, cancel_, wait_, grep_). Input schemas are explicitly visible in the code with proper type definitions. However, there are significant gaps: (1) Many descriptions are terse (10-30 chars), falling below the 50-200 char LLM-optimized baseline. (2) Parameter descriptions exist but are often minimal, 'Image UUID or tag' repeats across multiple tools without clarifying when to use each. (3) Output schemas are NOT documented anywhere in the provided code, there is no indication of what fields tools return. (4) Error handling guidance is absent, no recovery hints, no categorization of retryable vs fatal errors. (5) Some parameter relationships are undocumented (e.g., the relationship between 'disposable' and 'wait' in the 'run' tool). (6) The tool 'get_guide' appears to be a meta-tool that returns documentation sections rather than operational data, which is unusual and may confuse agent planning. These gaps place the server in the 'Fair' to 'Good' range, competent but not production-grade.
Cancel an operation
Pull a file out of an image
Read a section of the built-in guide
Read image metadata
Get operation status by ID
Search for patterns in files without spawning a microVM
Pull an OCI image from a registry
List files in an image without spawning a microVM
Output schemas not documented. No evidence of documented return types for any of the 19 tools. LLMs cannot plan downstream tool calls or extract fields without knowing what each tool returns. This violates the 100% baseline for A-grade tools.
Terse descriptions fall below LLM-optimized baseline (50-200 chars). Many descriptions are 10-45 chars: 'One-time private-registry setup', 'Pull an OCI image from a registry', 'Read image metadata', 'Add or remove a tag'. These lack context for when/why to use the tool.
Parameter descriptions are minimal and repetitive. 'Image UUID or tag' appears 3+ times without clarifying when to use UUID vs tag. 'Local file path', 'Local directory path', 'Directory path in container', 'File path in image' do not explain the relationship between source/destination or what paths are resolved relative to.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 52 | - | v1 |
List images; filter by tag_prefix
List operations; filter by status
Read file contents from an image without spawning a microVM
One-time private-registry setup
One-time private-registry setup
Stage a local directory tree
Execute a command in an isolated microVM
Add or remove a tag
Stage a single local file
Async operation management - wait for completion
Token introspection - retrieve permissions, limits, and MCP version info
No error handling guidance. Tools like 'run' (irreversible, WRITE+IRREVERSIBLE) and 'import_image' (WRITE) lack recovery hints, retryability classifications, or dry-run options. An agent has no way to know if a failed 'run' can be retried or if it already partially executed.
Undocumented parameter relationships. 'run' has 'disposable' (discard changes) and 'wait' (wait for completion) without explaining: Are they independent? Does 'disposable=false' imply 'wait=true'? Does 'wait=false' with 'disposable=false' mean changes are persisted asynchronously?
'get_guide' is a meta-tool that returns documentation sections (guide section names: 'workflow', 'reference', 'quickstart', 'state', 'async', 'tagging', 'errors'). This blurs the line between tooling and documentation and may confuse agent planning, agents call tools to change state or retrieve data, not to retrieve help text.
No pagination or result limits documented for list_* tools. 'list_images', 'list_operations', 'list_files' lack offset/limit parameters and do not document max results. Large result sets can exhaust context windows.
Missing natural-language identifier acceptance. Tools accept 'Image UUID or tag' but documentation does not clarify resolution behavior, if the agent passes a partial tag, does it match by prefix? Exact match only? Does it fail if ambiguous?