MCP server that dispatches tool calls through a Repl CLI pipeline, converting MCP tool invocations into CLI commands with JSON output
This server demonstrates severe definition quality issues across multiple dimensions. Tool definitions are sourced from test files rather than production code, schemas lack completeness, and descriptions are often generic or test-focused. The server appears to be a testing/compatibility shim rather than a production-grade MCP implementation. 7 tools identified, but definitions are inferred from test contexts rather than explicit production registration.
Compatibility shim for calling tools through a standardized interface (only available in DiscoverAndCallShim compatibility mode)
Bootstrap tool that exposes the real tool list before refresh (only available in DiscoverAndCallShim compatibility mode)
Echo tool that returns the input message with prefix
Reads and displays client workspace roots (for root-aware commands)
Reads client workspace roots without explicit async call (for testing IMcpClientRoots.Current)
Initializes soft roots for MCP-only commands when native roots are unavailable
Displays the current soft roots workspace
Tool definitions sourced from test files (Given_McpRootsAndDynamicTools.cs, Given_TestingToolkit.cs) rather than production code. Definitions are inferred from test context, not explicitly registered.
No output/return schemas documented for any tool. LLMs cannot infer what fields to expect from responses. Rubric requires: 'Document the output schema. LLMs need to know what fields to expect.' Only input schemas are visible; response schemas are absent or invisible in provided source.
Conflicting/confusing tool names: roots_info vs roots_peek operate on same resource but distinction is unclear. Per naming rubric: 'When multiple tools operate on the same resource, their names must make the distinction obvious.' No guidance on when to call which.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2025-06-18+ | v2 |
Tools marked as test-scoped or compatibility shims (discover_tools, call_tool, roots_peek explicitly mention 'testing' or 'compatibility mode'). These should not be exposed as production tools. Reduces confidence in tool set purpose.
Parameter descriptions lack required detail. Rubric: 'Write descriptions as if prompt-engineering. State WHAT the tool does, WHEN to use it, and any prerequisites.' Example: softroots_init 'path' param shows type but lacks format ('file URI path' is mentioned in tool description, not param description) and constraints. Echo 'msg' param has no constraint on length or content.
No error handling guidance in any tool description. Rubric: 'Error responses must tell the LLM what to do next.' None of the tools document failure modes, recoverable vs fatal errors, or retry guidance.
call_tool is a meta/wrapper tool (calls other tools indirectly). Per composition rubric: 'Each tool should do exactly one thing.' This tool abstracts away the actual operation, making it harder for LLMs to reason about side effects and idempotency.
No idempotency declarations. Rubric: 'Make tools produce the same result on repeated calls with the same input.' softroots_init may error if called twice; not stated. No toolAnnotations like idempotentHint are present.