A specialized MCP server for iCalendar feed management and event queries
Calendar MCP has 10 tools with consistent naming (all start with action verbs like get_, search_, refresh_), but quality is uneven. Descriptions are present and reasonably detailed (ranging 50-300+ chars), meeting the 10-1024 char baseline. However, parameter descriptions are sparse or missing in several tools, and output schemas are not documented in the visible code. All tools are read-only (low-risk), which simplifies error handling but limits capabilities. The tool set has some design issues: multiple tools query events (get_events_today, get_events_for_date, get_upcoming_events, get_events_by_date_range) with overlapping functionality, violating the single-responsibility principle. Schema definitions are present for most parameters (feed_id, days, query, date range) but lack constraints like enums, min/max bounds, or format specifications. No tool descriptions include output schema documentation. Error handling is not visible in provided code, no error recovery guidance, categorization, or actionable messages.
List all configured calendar feeds with their details.
Get the current date and time in the configured timezone. ## Returns • Current date (YYYY-MM-DD format) • Current time (HH:MM:SS format) • Current datetime (ISO 8601 format) • Configured timezone name • UTC offset ## Use Cases • Reference current date/time for calendar queries • Understand timezone context for events • Schedule relative to current time ## Related Tools • Use `get_events_today` for today's calendar events • Use `get_upcoming_events` for future events ⚠️ **Note**: The timezone is configured via the TIMEZONE environment variable (default: UTC)
Get calendar events within a specific date range.
Get all calendar events for a specific date.
Get all calendar events for today.
Get the current server configuration including timezone and feed settings.
Output schemas not documented. No tool provides a formal JSON Schema description of return values. LLMs cannot plan downstream tool calls or extract specific fields without guessing at response structure.
Overlapping tools with unclear distinction. get_events_today, get_events_for_date, get_upcoming_events, and get_events_by_date_range all query events by time range. LLMs waste reasoning cycles choosing between them. Consolidate into single parameterized tool or clearly document when to use each.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get the current status of the calendar service. ## Returns • Service status for iCalendar integration • Active feeds and refresh interval • Overall server version ## Use Cases • Health check • Service monitoring • Troubleshooting connections ## Related Tools • Use `get_server_config` for configuration details
Get upcoming calendar events from today onwards.
Manually refresh calendar feeds from the configured sources.
Search for calendar events by title, description, or other criteria.
Parameter constraints missing. feed_id, query, days, and date parameters lack enums, min/max, length limits, regex patterns, or format specs. Agents can pass invalid values (e.g., days=999999, query='', start_date='tomorrow') without runtime validation feedback.
Pagination not addressed. Tools returning event lists (get_upcoming_events, search_events, get_events_by_date_range, get_events_for_date) have no limit, offset, or cursor parameters. Large result sets blow context windows; agents cannot retrieve paginated results.
Error handling not visible or incomplete. No tool documentation describes what errors can occur (network timeout, invalid feed_id, date parsing error) or how the LLM should recover. No guidance on retryable vs fatal errors.
Relationship between similar tools unclear. get_server_status returns 'active feeds and refresh interval'; get_server_config returns 'timezone and feed settings'; get_calendar_feeds lists feeds. LLMs cannot distinguish when to call which. Docs must clarify (e.g., 'For current sync status, use get_server_status; for configuration details, use get_server_config').
Sparse descriptions on some tools. get_calendar_feeds description is 17 words (below 50-char baseline). Missing details on what 'configured calendar feeds' means, what fields are returned, and use cases.
State-modifying tool (refresh_calendars) lacks dry-run, confirmation, or explicit side-effect documentation. Agents may call it repeatedly without realizing it triggers external API fetches, rate limiting, or timing side effects.