MCP server providing a persistent Python sandbox for token-efficient codebase exploration across MCP clients
Three tools with complete schemas and descriptions, but significant gaps in error handling, output documentation, and parameter clarity. Tool names follow verb_noun convention (rlm_start, rlm_execute, rlm_end). Descriptions are present (100-200 chars) and explain purpose. Input schemas are well-formed with types, descriptions, and constraints (min/max for integers, enums for detail_level). However, output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal: no recovery guidance, no categorization of retryable vs fatal errors. Parameter descriptions lack actionable constraints (e.g., 'path' should specify 'absolute path required' more clearly). No tool annotations (readOnlyHint, destructiveHint). Session-based design (rlm_start → rlm_execute → rlm_end) introduces statefulness that complicates agent reasoning.
End an exploration session and clean up resources
Execute Python code in the persistent sandbox for the given session
Start a new exploration session for a directory with configurable limits and optional LLM integration
Output schemas not documented. LLMs cannot predict response structure for rlm_start (returns session_id, metadata, limits, available_functions, optional strategy/example) or rlm_execute (returns execution result, but format unclear). Agents must guess field names and types.
Error handling lacks recovery guidance. rlm_start returns JSON with 'error' field on failure (e.g., 'Directory not found'), but does not guide the LLM on next steps. No categorization of retryable vs fatal errors. Pattern: 'Directory not found: /path' should suggest 'Verify the path exists or call list_directories() to discover valid paths.'
Session-based statefulness violates stateless request handling. rlm_execute requires session_id from rlm_start, creating implicit ordering dependency. If rlm_start fails or times out, rlm_execute cannot proceed. Agents must track session_id across turns, increasing context overhead. Modern MCP favors stateless per-request handling.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
No tool annotations. All three tools are marked READ_ONLY in risk field, but MCP tool annotations (readOnlyHint, destructiveHint, idempotentHint) are not present in schema. Agents cannot programmatically detect safety properties.
Parameter 'path' in rlm_start lacks clarity on format. Description says 'Absolute path to the directory' but does not specify: must it exist? Can it be relative (will be resolved)? What happens if it contains symlinks? Code shows pathlib.Path(path).resolve(), but LLM cannot infer this from description.