A transparent MCP wrapper that logs all requests/responses while proxying to a wrapped MCP server.
Wrap-MCP is a STDIO-only meta-server that wraps another MCP server for logging and control. It defines 3 tools with clear action verbs and reasonable descriptions. All tools have input schemas with typed parameters and descriptions. However, descriptions are somewhat terse (averaging ~80 chars, below the 194-char baseline for A+ tools), parameter constraints are loose (no enums for entry_type filtering), and output schemas are not documented. The tools are well-composed for their logging/control domain, but lack the depth and precision expected of production-grade tools. Tool naming follows verb_noun pattern (restart_wrapped_server, show_log, clear_log), which is good. Error handling and recovery guidance are absent. No tool annotations (readOnlyHint/destructiveHint) despite clear READ_ONLY vs WRITE semantics.
Clear all logs, optionally filtered by tool name or entry type
Restart the wrapped MCP server
Show logs with optional filtering by tool name, entry type, timestamp range, or keyword pattern
Loose parameter constraints on enum-like fields. 'entry_type' parameter accepts string but should declare enum: ["request", "response", "error", "stderr"]. This invites hallucinated values from LLMs.
Output schemas not documented. Tools like show_log and clear_log return structured data (likely log entries with fields like timestamp, tool_name, message), but the response schema is not visible in the provided code. LLMs cannot plan downstream operations without knowing return structure.
Tool descriptions are terse (50-65 chars), below the 194-char baseline. E.g., 'restart_wrapped_server' description 'Restart the wrapped MCP server' lacks context on why/when to call it, what happens during restart, whether it's safe to call repeatedly, or what the impact is on active operations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 35 | 2025-03-26+ | v1 |
Missing tool annotations. 'restart_wrapped_server' and 'clear_log' are destructive/write operations, and 'show_log' is read-only. These should be declared via readOnlyHint and destructiveHint in the tool definition (MCP 2026-07-28 feature) to help LLM planning and safety.
No error recovery guidance. If 'show_log' fails (e.g., malformed timestamp filter, regex error in keyword), the tool should return actionable error messages like 'Invalid timestamp: got "2024-13-01", use ISO 8601 format YYYY-MM-DD'. Currently not visible in code.
Parameter descriptions lack format constraints. 'after' and 'before' parameters accept ISO 8601 strings but the description does not specify the exact format or what happens if malformed. Similarly, 'keyword' accepts regex but no guidance on syntax or error behavior.
Missing pagination guidance. 'show_log' accepts a 'limit' parameter (good), but no mention of offset/cursor for retrieving subsequent pages. If logs are large, the response could exceed context window. The description should clarify pagination strategy.