MCP server exposing zefer encryption/decryption capabilities (AES-256-GCM file and text encryption) as Model Context Protocol tools over stdio
zefer-cli presents a well-structured encryption-focused tool suite with strong cryptographic backing and detailed parameter schemas. Tool naming is action-verb based and clear (encrypt, decrypt, keygen, analyze_password, inspect). All 5 tools have descriptions ranging from 90-300+ characters, exceeding the 10-character minimum. Input schemas are comprehensive with proper JSON Schema type definitions for all parameters. However, output schemas are NOT documented in the source, the code lacks explicit schema definitions for what each tool returns, forcing LLMs to infer structure from response handling logic. Error handling is present but minimal; no recovery guidance or error classification patterns. Tool descriptions focus on technical capability but lack explicit "WHEN to use" guidance. One tool (zefer_encrypt) accepts dual passphrases and secondary authorization features that introduce parameter interdependency not documented. Overall, the security-focused domain and parameter completeness elevate this above average, but missing output documentation and recovery guidance prevent a higher score.
Full security report for a password: effective entropy, crack time across 4 attack scenarios (10^2-10^15 guesses/s), NIST SP 800-63B / OWASP / AES-128 / post-quantum (Grover) compliance, keyspace, weaknesses and comparison vs an average human password. Example: { password: 'Tr0ub4dor&3' }
Decrypt a .zefer file. Text content is returned directly; file content is written to outputPath (or the original name). Example: { inputPath: 'secret.zefer', passphrase: 'my-strong-pass' }
Encrypt text or a file into a password-protected .zefer file (AES-256-GCM, PBKDF2-SHA256). Provide either `text` or `inputPath`. Example: { text: 'api_key=123', passphrase: 'my-strong-pass', outputPath: 'secret.zefer', ttlMinutes: 1440, compression: 'gzip' }
Deep security analysis of a .zefer file WITHOUT the passphrase: public header (format, KDF level, compression, hint/note), structural integrity, chunk count, ciphertext randomness (Shannon entropy), salt/IV, SHA-256 fingerprint, KDF resistance table and severity-tagged observations. Example: { inputPath: 'secret.zefer' }
Generate cryptographically secure keys (CSPRNG + rejection sampling, zero modulo bias) with per-key strength analysis. Modes: unicode|secure|alpha|hex|base58|pin|uuid. Example: { mode: 'base58', length: 24, count: 3, groupSize: 6 }
No output schemas documented for any tool. LLMs cannot predict response structure; forced to infer from examples or request documentation. Breaks pattern:tool and pattern:response-shaper. All 5 tools lack explicit 'returns' or 'output' schema definitions visible in the source code.
Parameter interdependencies not documented. zefer_encrypt accepts passphrase + secondPassphrase + revealKey + questionAnswer/question combinations, but tool description does not explain mutual exclusivity, required pairs, or validation logic. LLMs cannot determine which combinations are valid.
Error handling absent. No evidence in source of recovery guidance, error classification, or actionable error messages. If decryption fails (wrong passphrase, corrupt file, max attempts exceeded), LLM receives no guidance on what to do next or whether the error is retryable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | 2026-07-28+ | v2 |
Descriptions lack 'WHEN to use' context. Tool descriptions explain WHAT happens but not WHEN an LLM should select this tool vs alternatives, or what user intents it serves. E.g., zefer_analyze_password vs zefer_keygen, when should an agent call each?
File path sanitization mentioned in code but not exposed in tool descriptions. zefer_encrypt/decrypt accept inputPath and outputPath parameters, but descriptions do not clarify path traversal protection, absolute vs relative path handling, or what happens if paths are invalid. Security implications buried in code, not in user-facing docs.