An MCP server for recording, transcribing, analyzing, and generating Obsidian notes from class lectures using a hybrid transcription pipeline with whisper-amd primary engine and OpenAI Whisper fallback.
Class Notes MCP exhibits significant gaps across naming, descriptions, schema completeness, and error handling. While the tool names follow verb-noun conventions (select_audio_source, start_recording, transcribe_audio_file), descriptions are inconsistent in detail and depth. Most critically, input schemas are incomplete or missing entirely for several tools, and output schemas are not documented. The server lacks error handling guidance, recovery paths, and actionable error messages that LLMs need to self-correct.
Performs NLP analysis on transcribed text to extract key concepts, named entities, cybersecurity terms, and action items.
Generates a structured Markdown note for Obsidian using a Jinja2 template populated with processed class data.
Returns performance statistics for the transcription agent including AMD success rate and fallback usage.
Records a chunk of audio from the input stream.
Selects the appropriate audio input device based on class type. Can be overridden by a preferred_device_name (e.g., 'HD-Audio Generic').
Starts recording audio from the selected input device.
Multiple tools have empty or missing input schemas (record_chunk, stop_recording, get_performance_stats).
No output schemas documented for any tool. LLMs cannot plan downstream operations or extract the right response fields. Agents do not know what to expect.
Enum constraints missing for categorical parameters. class_type should be enum('presencial'|'online'), language should be enum('es'|'en'), force_engine should be enum(None|'amd'|'openai'), template_name should list valid template names. Free-form strings invite hallucinated values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Stops recording and saves the audio to a WAV file.
Transcribes an audio file using hybrid engine: whisper-amd primary with OpenAI Whisper fallback.
No error handling or recovery guidance documented. Tools do not explain what to do on failure. E.g., transcribe_audio_file: what if both engines fail? What errors are retryable? How should the agent recover?
Parameter descriptions insufficient for some tools. record_chunk, stop_recording, get_performance_stats have minimal or missing descriptions. Descriptions under 20 characters cannot guide LLM decisions.
generate_note 'data' parameter is under-specified. Type 'object' with no nested schema forces LLM to guess structure. Should document required fields (class_name, date, instructor_name, transcript, analysis, etc.) with types.
No numeric bounds documented for input_device_index (start_recording). Should specify min=0, max depends on system; undocumented ranges allow LLM to pass invalid indices.
Tool naming clarity: get_performance_stats is generic. Semantically unclear, is it for the current session, all time, or a specific engine? Should be get_transcription_performance_stats or get_hybrid_engine_stats.