MCP Server for creating unified diff patches from code and applying patches with fuzzy line drift tolerance
Two tools with basic schemas and minimal descriptions. create_patch has a 67-char description (below baseline 194 chars); apply_patch_fuzzy has 65 chars. No error handling guidance, no output schema documentation, no parameter constraints (e.g., max_drift range). Naming is verb-forward (create_, apply_) but descriptions do not explain WHEN to use each tool or what they return. Parameter 'max_drift' lacks bounds or rationale. No mention of idempotency, side effects, or recovery paths.
Apply patch to code with line drift tolerance.
Create unified diff patch from original and modified code.
Parameter descriptions missing entirely. 'original_text', 'modified_text', 'filename', 'patch_text', 'max_drift' have no descriptions in the schema. LLMs cannot infer parameter meaning or constraints.
Tool descriptions are too short (35 - 67 chars vs. baseline 194 chars). 'Create unified diff patch from original and modified code' does not explain WHEN to use this tool, what it returns, or how it differs from apply_patch_fuzzy. Descriptions must answer: What? When? Why?
No output schema documented. Callers cannot know what fields to expect from create_patch (returns string) or apply_patch_fuzzy (returns dict with 'status', 'applied_hunks', 'conflicts', 'patched_text'). LLMs must guess structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
Parameter 'max_drift' (integer) has no bounds, description, or rationale. LLMs may pass absurd values (0, 1000000). Should specify range (e.g., 1 - 50) and explain its purpose (line offset tolerance).
No error handling guidance. apply_patch_fuzzy returns 'conflicted' status with a 'conflicts' array, but the tool description does not explain what the LLM should do if conflicts occur or how to interpret the conflict structure.