MCP server that provides information about Nerdearla events, speakers, and sessions. Uses FastMCP with streamable HTTP in stateless mode with JSON.
The server provides 5 READ_ONLY tools with clear naming (all start with action verbs: get_*). Descriptions are present and adequate (range 54-89 chars, averaging 72 chars). Input schemas are fully defined with proper JSON Schema types and descriptions for all parameters. However, output schemas are NOT documented anywhere, callers cannot see what fields to expect. Error handling exists but lacks recovery guidance. The tool descriptions are functional but brief and do not specify WHEN to use each tool vs. alternatives (e.g., when to call get_speakers vs get_speaker_details). Parameter descriptions are adequate but some could be more prescriptive about constraints (e.g., event_id 'defaults to nearest event' is vague about format/length). Overall: solid B-range server with good foundations but missing output documentation and LLM-optimized guidance.
Get all Nerdearla events (historical, present, and future).
Get detailed information about a specific Nerdearla session.
Get information about Nerdearla sessions.
Get detailed information about a specific Nerdearla speaker.
Get information about Nerdearla speakers.
Output schemas are completely undocumented. LLMs cannot see what fields get_events, get_speakers, get_sessions, etc. return. This forces them to infer structure and makes downstream tool chaining impossible to verify.
Error handling lacks recovery guidance. The code catches exceptions and returns schedule_unavailable_msg for missing sessions, but does not provide actionable next steps for LLMs (e.g., 'Try get_events() to check if the event exists' or 'Check back later').
Tool descriptions lack WHEN-to-use context. 'Get information about Nerdearla speakers' does not explain why an LLM should call get_speakers (list all) vs get_speaker_details (single speaker). Ambiguity increases tool selection errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Parameter 'event_id' defaults to nearest event, but the description does not explain what format is expected or how to discover valid IDs. LLMs cannot infer that '703n9ws8' is valid without seeing get_events() output.
No pagination support. If get_speakers or get_sessions returns hundreds of items, the response can overwhelm context windows. Descriptions do not mention result limits or how to filter results.