Real-time audio-to-text with semantic cleanup.
This MCP server has severe definition quality issues. The single tool 'process' violates multiple critical patterns. The tool name is generic and lacks an action verb (should be 'transcribe_audio' per verb_noun convention). The input schema is minimalist with only a 'file' parameter, lacking comprehensive documentation. No output schema is documented, making it impossible for LLMs to predict what the tool returns. The implementation uses console.log() for output, which is not structured for agent consumption. The tool description is only 44 characters ('Transcribe an audio file locally'), too brief to guide LLM selection or explain when to use it vs. similar tools. No error handling guidance, no parameter constraints, and no documentation of return types. The codebase is a CLI wrapper around Whisper, not a proper MCP server implementation.
Transcribe an audio file locally
Tool name 'process' is generic and lacks action verb. Should be 'transcribe_audio' to match verb_noun convention and be self-documenting.
No output schema documented. LLMs cannot predict return structure, making it impossible to chain this tool with others or parse results reliably.
Tool description is only 44 characters ('Transcribe an audio file locally'), below the 100-character minimum for LLM actionability. Lacks WHAT, WHEN, and any prerequisites.
Input parameter 'file' lacks format constraints. Description should specify: accepted formats (.mp3, .wav, .m4a), maximum file size, expected bit rate, mono vs. stereo. Currently invites invalid input.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 21 | 2026-07-28+ | v2 |
No error handling guidance. If file is missing, corrupt, or unsupported, the tool should return a clear recovery hint (e.g., 'Call list_supported_formats() to see valid audio formats'). Current implementation calls process.exit(1), which crashes the agent.
Output is rendered via console.log(), not returned as structured JSON. Tools must return typed objects with fields, not free-text console output. LLMs cannot parse or act on unstructured logging.
No input validation. Tool does not verify file exists until runtime (fs.existsSync check happens in transcribeAudio). Should validate early and return actionable error messages.
Transcription uses mocked data ('This is a transcribed voice note...') with hardcoded content. Tool is not functional for real use, it simulates behavior instead of performing actual transcription.