Atomic Writer MCP Server - provides atomic file operations with integrity checking and journaling
Atomic Writer MCP has well-structured tool definitions with complete JSON Schema input specifications for all 20 tools. Naming follows verb_noun convention consistently (write-file, read-file, delete-file, etc.). However, descriptions vary significantly in quality and length. Many descriptions are under the 50-200 character LLM-optimized range. Parameter descriptions are present but often generic. No output schemas are documented, critical for composition and chaining. Error handling guidance is minimal. Tool design has composition issues: many tools operate on single files, but no batch/transaction support beyond write-files. The server requires BASE_DIR configuration, indicating stateful initialization (deprecated pattern). Security concerns exist: no documented permission checks or audit trails despite write-heavy operations.
Append content to the end of a file. File will be created if it doesn't exist.
Move a file to a timestamped location in the trash directory. File can be recovered later. Does not permanently delete the file.
Delete a specific line from a file. Line numbers are 1-based.
Force release a lock on a file. Use with caution - only when normal lock release fails. May cause data corruption if file is being written.
Retrieve complete operation history for a file including all modifications, reads, and integrity checks.
Check if a file is currently locked for writing and get details about the lock holder and duration.
No output schemas documented for any tool. LLMs cannot predict response structure, limiting composition and chaining. Critical for tools like write-files, recover-file, and get-file-history.
Many tool descriptions are generic and under 50 characters (e.g., get-status, recover-file, get-file-history). Descriptions lack detail on WHEN to use each tool vs. similar alternatives, inviting wrong tool selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 33 | - | v1 |
Get detailed status of the atomic writer system including active locks, journal entries, and transaction logs.
Insert content at a specific line number. Line numbers are 1-based. Existing content at that line shifts down.
Atomically move or rename a file to a new location. Creates parent directories if needed. Source file must exist.
Prepend content to the beginning of a file. File will be created if it doesn't exist.
Read lines containing specific text and surrounding context lines. Search is case-sensitive.
Read the entire contents of a file with integrity verification. Returns error if file does not exist or is corrupted.
Read specific line numbers from a file. Line numbers are 1-based. Returns error if any line number is out of bounds.
Recover a file from its latest valid journal entry. Used to restore files after failed operations or corruption.
Replace the entire content of a file with new content.
Find and replace text in a file. Replaces all occurrences. Search is case-sensitive.
Rollback a specific operation using its operation ID. Restores file to state before the operation using journal entries.
Verify file integrity by checking content against stored checksums. Returns error if file is corrupted or modified outside the system.
Create a new file or write to an empty file. Cannot modify files that already have content - use append-content, prepend-content, replace-content, or insert-content-at-line for existing files.
Atomically write multiple files as a single operation. All files must be new or empty. Operation fails if any file has existing content.
No error handling guidance or recovery instructions. Tools like force-release-lock and rollback-operation are destructive/risky but provide no recovery path or actionable error messages.
No input validation error messages documented. Parameter constraints (e.g., line numbers must be positive, paths must be valid) are not described in parameters. LLMs will pass invalid values without guidance on what went wrong.
No permission checks or scope declarations. Tools modify critical file system state (delete, move, write, rollback) without documented access control. No audit trail or logging of who executed what.
Stateful initialization pattern (deprecated). Server requires BASE_DIR environment variable or command-line argument, creating server-level state. Modern MCP should be stateless; configuration should be passed per-request or via _meta.
Parameter descriptions lack constraint details. Example: 'lineNumbers' accepts array but no description of valid ranges, max array size, or behavior for out-of-bounds indices. 'searchText' in read-around lacks case-sensitivity guidance in description (though mentioned briefly).
Tool composition gaps: read-file and read-lines both read files but serve overlapping purposes. No clear guidance on when to use read-file vs. read-lines vs. read-around. Similarly, replace-content and replace-all-content have unclear distinctions in descriptions.
No idempotency guarantees documented. Tools like write-file, move-file, and rollback-operation are likely idempotent (write-file checks for empty file) but this is not explicitly stated. Agents need idempotency to safely retry.
get-status parameter 'path' is optional but no description explains what happens when omitted (returns full system status? all active locks?). Ambiguous optional parameters cause LLMs to guess.