Local MCP server that rings a bell through the speakers (beep / ding / ding-ding / warning).
bell-mcp defines 2 tools with clear, action-verb names (ring_bell, list_bells) and reasonable descriptions (100 - 150 chars). Both tools have documented input schemas with type info and parameter descriptions. However, output schemas are not formally documented, responses are plain strings rather than structured objects. Parameter descriptions are adequate but lack explicit constraints (e.g., sound enum values are listed in prose, not as a formal enum constraint). Error handling is minimal: ring_bell validates the sound parameter and raises ValueError with a recovery hint, but list_bells has no error path. No tool annotations (readOnlyHint, idempotentHint) are present. Overall, the server is above-average for a small utility tool but lacks the polish of production-grade servers.
List the available bell sounds (id, name, description) and the default.
Ring a bell through the speakers to alert the human. Call this when a task is complete or when you need the human's attention.
Output schemas not formally documented. Both tools return plain strings; LLMs cannot parse structured fields or plan downstream calls. Responses should be JSON objects with typed fields (e.g., {"status": "success", "sound": "ding", "message": "..."})
Parameter constraints expressed in prose, not as formal enums. The 'sound' parameter lists valid values in the description but lacks a JSON Schema enum constraint. LLMs may hallucinate invalid values; formal enums are self-documenting and machine-parseable.
No tool annotations. Neither tool declares readOnlyHint or idempotentHint. ring_bell is idempotent (same sound, same result) and list_bells is read-only; explicit annotations help agents reason about safety and retry logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Minimal error handling. list_bells has no documented error path. ring_bell validates input and raises ValueError, but the error message is not structured for LLM recovery. No guidance on retryability or next steps.
STDIO transport only. Server is not remotely accessible and cannot be used by hosted MCP clients. Limits deployment to local/CLI-only scenarios.