Google Calendar MCP Server
Provides tools for searching, listing, creating, updating, and deleting events, as well as generating daily agendas, weekly summaries, and checking free/busy availability.
Integrates with Home Assistant through REST API and SSE endpoints, allowing for the creation of calendar sensors and the display of event information within a smart home dashboard.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Calendar MCP ServerWhat's on my schedule for today?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Calendar MCP Server
A Model Context Protocol (MCP) server for Google Calendar integration, designed for personal calendar management with Home Assistant support.
Features
MCP Tools: Search events, list upcoming events, create/update/delete events
Daily Agenda: Get formatted daily agenda summaries
Calendar Categories: Organize calendars by type (work, personal, family, etc.)
REST API: Endpoints for Home Assistant integration
SSE Transport: Connect from Claude Desktop via mcp-remote
Docker Support: Easy deployment with Docker Compose
Related MCP server: Google Calendar MCP Server
Quick Start
1. Google Cloud Setup
Go to Google Cloud Console
Create a new project or select existing
Enable the Google Calendar API
Create OAuth 2.0 credentials (Desktop App type)
Download the credentials
2. Configuration
# Copy example environment file
cp .env.example .env
# Edit with your credentials
# GOOGLE_CLIENT_ID=your-client-id
# GOOGLE_CLIENT_SECRET=your-client-secret3. Initial OAuth Setup
# Run OAuth setup (opens browser for consent)
docker compose --profile setup run --rm calendar-auth4. Start the Server
docker compose up -d5. Claude Desktop Configuration
Add to your claude_desktop_config.json:
{
"mcpServers": {
"calendar": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://YOUR_SERVER_IP:8002/mcp/sse", "--allow-http"]
}
}
}Home Assistant MCP Integration
The server exposes SSE endpoints for MCP connections:
/mcp/sse- Primary MCP SSE endpoint/sse- Alias endpoint for Home Assistant compatibility
Each connection gets a fresh server instance for proper session isolation.
MCP Tools
Tool | Description |
| Get current date/time with reference dates for queries |
| List upcoming events with optional filters |
| Search events by text query |
| Get details of a specific event |
| Create a new calendar event |
| Update an existing event |
| Delete an event |
| Get agenda for a specific day |
| Get 7-day overview |
| List all available calendars |
| Check availability for a time range |
Tool Schema Notes
All tools use Gemini-compatible schemas with explicit types:
Array parameters use comma-separated strings (e.g.,
attendees: "user1@example.com,user2@example.com")Calendar IDs use comma-separated strings (e.g.,
calendar_ids: "primary,work@group.calendar.google.com")Dates use ISO 8601 format (
YYYY-MM-DDorYYYY-MM-DDTHH:MM:SS)
REST API Endpoints
Endpoint | Description |
| Health check with auth status |
| List all calendars |
| Today's events |
| Upcoming events |
| Search events |
| Daily summary |
| Weekly summary |
| Find free time slots |
Home Assistant Integration
REST Sensor Example
sensor:
- platform: rest
name: "Next Calendar Event"
resource: http://YOUR_SERVER_IP:8002/events/upcoming?days=1
value_template: "{{ value_json[0].summary if value_json else 'No events' }}"
scan_interval: 300
- platform: rest
name: "Today's Events Count"
resource: http://YOUR_SERVER_IP:8002/events/today
value_template: "{{ value_json | length }}"
scan_interval: 300MCP Integration
Home Assistant can connect via the MCP SSE endpoints:
http://YOUR_SERVER_IP:8002/mcp/ssehttp://YOUR_SERVER_IP:8002/sse(alias)
Project Structure
mcp_google_calendar/
├── src/mcp_google_calendar/
│ ├── __init__.py
│ ├── auth.py # OAuth2 authentication
│ ├── calendar_client.py # Google Calendar API wrapper
│ ├── config.py # Settings and configuration
│ ├── models.py # Pydantic models
│ ├── server.py # MCP stdio server
│ ├── sse_server.py # MCP SSE server
│ ├── combined_server.py # REST + SSE combined server
│ └── api.py # REST API for Home Assistant
├── config/
│ └── calendars.yaml # Calendar categorization
├── credentials/
│ ├── client_secrets.json # OAuth credentials
│ └── token.json # Stored tokens
├── docker-compose.yml
├── Dockerfile
└── README.mdLicense
MIT
Available Tools
11 toolscalendar_create_eventA
Create a new calendar event.
Creates an event with the specified details. At minimum, requires a title and start time. End time defaults to one hour after start if not provided.
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | The event title/summary. This is what appears on the calendar. | |
| start_time | Yes | Start time in ISO 8601 format (e.g., '2024-12-15T14:00:00' or '2024-12-15T14:00:00-05:00'). | |
| end_time | No | End time in ISO 8601 format. If not provided, defaults to start time plus one hour. | |
| description | No | Detailed description or notes for the event. | |
| location | No | Physical address or location name for the event. | |
| attendees | No | Comma-separated list of attendee email addresses (e.g., 'user1@example.com,user2@example.com'). | |
| all_day | No | Set to true for all-day events. When true, only the date portion of start_time is used. | |
| calendar_id | No | The calendar ID to create the event in. Use 'primary' for the main calendar. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the creation action and default behavior for end time, but lacks details on permissions, error handling, rate limits, or what happens with invalid inputs. It adds some context but is incomplete for a mutation tool without annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the core purpose in the first sentence and essential details in the second. Every sentence earns its place by providing critical information without redundancy or fluff, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with 8 parameters and no annotations or output schema, the description is adequate but has clear gaps. It covers the basic purpose and some defaults, but lacks information on permissions, error responses, or behavioral nuances, which are important for safe and effective use in an AI agent context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all 8 parameters thoroughly. The description adds minimal value beyond the schema by mentioning minimum requirements and default end time behavior, but does not provide additional syntax, format details, or usage examples. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a new calendar event') and resource ('calendar event'), distinguishing it from siblings like calendar_update_event, calendar_delete_event, or calendar_list_events. It specifies the minimum requirements (title and start time), which helps differentiate it from other creation or modification tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating minimum requirements (title and start time) and default behavior (end time defaults to one hour after start), but it does not explicitly guide when to use this tool versus alternatives like calendar_update_event or calendar_search. No exclusions or prerequisites are mentioned, leaving gaps in contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_daily_agendaA
Get the agenda for a specific day with all events.
Returns a formatted summary of all events for the specified date, organized by all-day events and timed events. Useful for daily briefings.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date in YYYY-MM-DD format (e.g., '2024-12-15'). If not provided, uses today's date. | |
| calendar_ids | No | Comma-separated list of calendar IDs to include (e.g., 'primary,work@group.calendar.google.com'). If not provided, includes all calendars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the tool's behavior by describing the output format ('formatted summary... organized by all-day events and timed events') and its utility ('Useful for daily briefings'), which adds value beyond the schema. However, it lacks details on permissions, rate limits, or error handling, which are important for a read operation with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by details on the return format and utility. Every sentence earns its place by adding value—no redundant or vague statements. It's efficiently structured in three concise sentences, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (a read operation with 2 optional parameters), no annotations, and no output schema, the description is fairly complete. It covers the purpose, output format, and use case, but could improve by mentioning potential limitations (e.g., default behavior if parameters are omitted) or linking to sibling tools for broader context. It's adequate but has minor gaps in full contextual coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters (date and calendar_ids). The description does not add any parameter-specific information beyond what the schema provides, such as examples or constraints. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get the agenda') and resource ('for a specific day with all events'), distinguishing it from siblings like calendar_list_events (which lists events generally) or calendar_weekly_summary (which covers a week). It explicitly mentions the output format ('formatted summary... organized by all-day events and timed events'), making the purpose distinct and well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Useful for daily briefings'), but it does not explicitly state when not to use it or name alternatives. For example, it doesn't contrast with calendar_list_events for broader event queries or calendar_weekly_summary for weekly overviews, leaving some ambiguity in tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_delete_eventB
Delete a calendar event.
Permanently removes an event from the calendar. Optionally notifies attendees about the cancellation.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | The unique event ID to delete. | |
| calendar_id | No | The calendar ID where the event exists. Use 'primary' for the main calendar. | |
| notify_attendees | No | Set to true to send cancellation emails to attendees, false to delete silently. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the permanent nature ('Permanently removes') and optional attendee notification, but lacks critical behavioral details like required permissions, error conditions (e.g., if event doesn't exist), whether deletion is reversible, or rate limits. For a destructive operation with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with just two sentences that are front-loaded with the core purpose. Every word earns its place - first sentence states the action, second adds critical behavioral context about permanence and notification. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive deletion tool with no annotations and no output schema, the description is incomplete. It should address more behavioral aspects like permissions needed, error handling, confirmation requirements, or what happens to recurring events. The presence of sibling tools like calendar_update_event suggests this deletion might be irreversible compared to cancellation, but this isn't clarified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds minimal value beyond what's in the schema - it mentions the optional attendee notification feature but doesn't elaborate on semantics beyond what the parameter description states. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Delete'), target resource ('a calendar event'), and distinguishes it from siblings like calendar_update_event (which modifies) or calendar_get_event (which reads). It goes beyond just restating the tool name by specifying the permanence of the action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like calendar_update_event (to cancel rather than delete) or calendar_get_event (to check details first). The description mentions optional attendee notification but doesn't provide context for when that should be used versus silent deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_free_busyB
Check free/busy status for a time range.
Returns busy time slots within the specified range for one or more calendars. Useful for finding available meeting times.
| Name | Required | Description | Default |
|---|---|---|---|
| start_time | Yes | Start of the time range in ISO 8601 format. | |
| end_time | Yes | End of the time range in ISO 8601 format. | |
| calendar_ids | No | Comma-separated list of calendar IDs to check. If not provided, checks 'primary'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions what the tool returns ('Returns busy time slots') but doesn't cover important aspects like authentication requirements, rate limits, error conditions, or whether this is a read-only operation (though implied by 'Check'). The behavioral context is incomplete for a tool that queries calendar data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with three sentences that each add value: states the core function, specifies the return value, and provides usage context. No wasted words, and the information is front-loaded with the primary purpose first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, 100% schema coverage, but no annotations and no output schema, the description provides basic functional context but lacks details about return format, error handling, or operational constraints. It's minimally adequate but leaves gaps that could hinder effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all three parameters. The description adds no additional parameter information beyond what's in the schema. The baseline score of 3 reflects adequate parameter documentation through the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Check free/busy status') and resources ('for one or more calendars'), and distinguishes it from siblings by focusing on availability rather than event management. However, it doesn't explicitly differentiate from all siblings like 'calendar_list_events' which also deals with calendar data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage context ('Useful for finding available meeting times') which suggests when to use it, but lacks explicit guidance on when to choose this tool over alternatives like 'calendar_list_events' or 'calendar_search'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_get_current_timeA
Get the current date and time in the user's timezone.
Use this tool to understand what 'today', 'tomorrow', 'this week' means before making calendar queries. Returns current time, date, and reference dates for the week.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it returns current time, date, and reference dates for the week, which helps the agent understand the output format and utility. However, it doesn't mention potential limitations like timezone accuracy or update frequency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by usage guidance and output details in two concise sentences, with zero wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is nearly complete by covering purpose, usage, and return values. A minor gap is the lack of explicit mention of any error conditions or timezone source, but it's sufficient for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately focuses on output semantics, adding value by explaining what the tool returns beyond just the schema's absence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get the current date and time') and resource ('in the user's timezone'), distinguishing it from siblings like calendar_list_events or calendar_create_event that handle calendar data manipulation rather than time reference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool ('before making calendar queries') and provides context for interpreting relative terms like 'today' or 'this week', offering clear guidance on its role versus other calendar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_get_eventA
Get detailed information about a specific calendar event.
Returns full event details including title, description, start/end times, location, attendees, and meeting links. Requires the event ID.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | The unique event ID. Obtain this from calendar_list_events or calendar_search. | |
| calendar_id | No | The calendar ID where the event exists. Use 'primary' for the main calendar. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool 'Returns full event details' and 'Requires the event ID', which are useful behavioral traits. However, it lacks information about permissions, rate limits, error handling, or whether it's a read-only operation (though implied by 'Get').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by supporting details in a concise list format. Every sentence adds value: the first states the action, the second elaborates on returns, and the third specifies prerequisites. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (retrieve operation with 2 parameters), no annotations, and no output schema, the description is reasonably complete. It covers purpose, return details, and prerequisites. However, it could improve by mentioning authentication needs or response format, but the lack of output schema is partially compensated by listing return attributes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds marginal value by mentioning 'Requires the event ID' (implied required parameter) but does not provide additional semantics beyond what the schema descriptions state for event_id and calendar_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'Get' and resource 'detailed information about a specific calendar event', clearly distinguishing it from siblings like calendar_list_events (list multiple events) or calendar_update_event (modify events). It specifies the scope as 'full event details' including specific attributes like title and attendees.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: to retrieve detailed information for a specific event identified by its ID. It implicitly suggests alternatives like calendar_list_events for listing events or calendar_search for finding events, but does not explicitly state when NOT to use it or name specific alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_list_calendarsB
List all available calendars.
Returns a list of all calendars accessible to the authenticated user, including their IDs, names, and whether they are the primary calendar.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds some context by specifying the return format (list with IDs, names, primary status) and authentication scope, but it does not cover potential limitations like rate limits, pagination, or error conditions, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by additional details in a second sentence. It is efficiently structured with zero waste, making it easy to understand quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, no output schema) and lack of annotations, the description is minimally adequate. It covers the basic functionality and return format but does not address potential behavioral aspects like error handling or performance, which could be relevant for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter details are needed. The description appropriately focuses on output semantics without redundant parameter information, earning a high score as it adds value where schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('List') and resource ('all available calendars'), and it distinguishes the scope by specifying 'accessible to the authenticated user'. However, it does not explicitly differentiate from sibling tools like 'calendar_list_events', which might cause confusion, preventing a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'calendar_list_events' or 'calendar_search'. It lacks explicit instructions on context or exclusions, offering only a basic functional statement without comparative usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_list_eventsA
List upcoming calendar events within a date range.
Returns events from a specific calendar with details including title, time, location, and meeting links. Use days_ahead to control how far into the future to search.
| Name | Required | Description | Default |
|---|---|---|---|
| days_ahead | No | Number of days ahead to look for events. Use 7 for one week, 30 for one month. | |
| calendar_id | No | The calendar ID to query. Use 'primary' for the main calendar. | |
| max_results | No | Maximum number of events to return. Recommended: 10-50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the tool returns events with details (title, time, location, meeting links) but doesn't disclose behavioral aspects like pagination, error conditions, authentication requirements, or rate limits. For a read operation with no annotation coverage, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by details on returns and parameter guidance. Every sentence adds value with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose and hints at returns, but lacks details on output format, error handling, or behavioral constraints that would help an agent use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds minimal value beyond the schema by mentioning days_ahead controls how far to search, but doesn't provide additional syntax, format, or semantic context beyond what's in the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('List upcoming calendar events') and resource ('calendar events'), distinguishing it from siblings like calendar_daily_agenda or calendar_weekly_summary by specifying date range filtering rather than time-specific summaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('within a date range') but doesn't explicitly state when to use this tool versus alternatives like calendar_search or calendar_daily_agenda. No guidance on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_searchB
Search calendar events by text query.
Searches event titles, descriptions, and locations for matching text. Can search both past and future events by specifying days_back and days_ahead.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search text to find in events. Searches titles, descriptions, and locations. | |
| days_ahead | No | Number of days ahead to search. Use 30 for one month forward. | |
| days_back | No | Number of days back to search. Use 0 for future only, 30 for one month back. | |
| max_results | No | Maximum number of events to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the search scope (titles, descriptions, locations) and time range parameters, but lacks critical behavioral details such as permission requirements, rate limits, pagination behavior, or what happens if no results are found. For a search tool with no annotation coverage, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by two concise sentences that add necessary context without waste. Every sentence earns its place by clarifying search scope and time parameters efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is moderately complete for a search tool. It covers the basic purpose and parameters but lacks details on behavioral aspects like error handling, result format, or integration with sibling tools. It's adequate but has clear gaps that could hinder effective agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by reiterating the search fields and time range context, but doesn't provide additional syntax, format, or usage nuances. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search calendar events by text query' with specific details about what fields are searched (titles, descriptions, locations). It distinguishes from siblings like calendar_list_events by emphasizing text-based search rather than simple listing, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'Can search both past and future events by specifying days_back and days_ahead,' which suggests when to use this tool over simpler listing tools. However, it doesn't provide explicit guidance on when to choose this versus siblings like calendar_list_events or calendar_daily_agenda, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_update_eventB
Update an existing calendar event.
Modifies one or more fields of an existing event. Only provide the fields you want to change; unspecified fields remain unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | The unique event ID to update. Obtain this from calendar_list_events or calendar_search. | |
| summary | No | New event title/summary. | |
| start_time | No | New start time in ISO 8601 format. | |
| end_time | No | New end time in ISO 8601 format. | |
| description | No | New event description. | |
| location | No | New event location. | |
| calendar_id | No | The calendar ID where the event exists. Use 'primary' for the main calendar. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that unspecified fields remain unchanged, which is useful context. However, it lacks critical details such as required permissions, whether the operation is idempotent, error handling for invalid inputs, or what the response looks like. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and well-structured with two sentences that directly convey the tool's function and usage. Every sentence earns its place by providing essential information without redundancy. It is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits like authentication needs, error conditions, and return values. While the schema covers parameters well, the overall context for safe and effective use is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds minimal value beyond the schema by implying partial updates ('Only provide the fields you want to change'), but doesn't provide additional syntax or format details. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Update') and resource ('existing calendar event'), making the purpose immediately understandable. It distinguishes from siblings like calendar_create_event (create) and calendar_delete_event (delete), though it doesn't explicitly contrast with calendar_get_event (read). The description is specific but could be slightly more distinctive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating it modifies fields of an existing event, suggesting it should be used when changes are needed. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like calendar_create_event for new events or calendar_delete_event for removal. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_weekly_summaryA
Get a summary of events for the upcoming 7 days.
Returns a week overview with events organized by day, total event count, and busiest day indicator. Useful for weekly planning.
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | Start date in YYYY-MM-DD format. If not provided, starts from today. | |
| calendar_ids | No | Comma-separated list of calendar IDs to include. If not provided, includes all calendars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses behavioral traits like returning 'a week overview with events organized by day, total event count, and busiest day indicator,' which adds value beyond the input schema. However, it doesn't cover aspects like authentication needs, rate limits, error handling, or whether it's read-only (implied by 'Get' but not stated). The description doesn't contradict any annotations, as there are none.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by details on the return format and usage context. Every sentence earns its place by adding value—no redundancy or waste. It's concise yet informative, making it easy for an AI agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is somewhat complete but has gaps. It explains what the tool does and the return format, which is helpful since there's no output schema. However, it lacks details on behavioral aspects like error cases or performance, and it doesn't fully address usage compared to siblings. This makes it adequate but not fully comprehensive for the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents the two parameters (start_date and calendar_ids). The description doesn't add any parameter-specific information beyond what's in the schema, such as examples or constraints. According to the rules, with high schema coverage (>80%), the baseline is 3 even with no param info in the description, which applies here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get a summary of events for the upcoming 7 days.' It specifies the verb ('Get a summary') and resource ('events'), and distinguishes it from siblings like calendar_daily_agenda (daily vs weekly) and calendar_list_events (list vs summary). However, it doesn't explicitly contrast with all siblings (e.g., calendar_search), keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context with 'Useful for weekly planning,' which suggests when to use this tool. It doesn't explicitly state when not to use it or name alternatives among siblings, such as using calendar_daily_agenda for daily details or calendar_list_events for raw event lists. This provides some guidance but lacks explicit exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
11 tool updates
- First observed
calendar_create_event - First observed
calendar_daily_agenda - First observed
calendar_delete_event - First observed
calendar_free_busy - First observed
calendar_get_current_time - First observed
calendar_get_event - First observed
calendar_list_calendars - First observed
calendar_list_events - First observed
calendar_search - First observed
calendar_update_event - First observed
calendar_weekly_summary
TDQS
Every tool has a clearly distinct purpose with no ambiguity. For example, calendar_create_event, calendar_get_event, calendar_update_event, and calendar_delete_event form a complete CRUD set for events, while calendar_daily_agenda, calendar_weekly_summary, calendar_list_events, and calendar_search provide different querying perspectives. Tools like calendar_free_busy and calendar_get_current_time serve unique utility functions that don't overlap with others.
All tool names follow a consistent verb_noun pattern with the 'calendar_' prefix, such as calendar_create_event, calendar_list_events, and calendar_update_event. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions across all 11 tools.
With 11 tools, the server is well-scoped for Google Calendar operations. Each tool earns its place by covering essential aspects like event management (create, get, update, delete), querying (list, search, agenda, summary), and utilities (free/busy, current time, list calendars), avoiding both bloat and gaps.
The tool surface provides complete coverage for the Google Calendar domain. It includes full CRUD operations for events, comprehensive querying tools (daily agenda, weekly summary, list events, search), and supporting utilities (free/busy checks, current time reference, calendar listing). There are no obvious gaps, ensuring agents can handle all common calendar workflows without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
GDPR-compliant calendar access for AI assistants. Google, Microsoft 365, Apple & more. EU-hosted.
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Connects ChatGPT to your Apple Calendar via a local Mac agent + Vercel relay
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAllows interaction with Google Calendar through Claude Desktop using the Model Context Protocol, enabling calendar event management and schedule analysis.2-
- AlicenseAqualityAmaintenanceA Model Context Protocol server that integrates Google Calendar with Claude Desktop, enabling users to manage calendar events (view, create, update, delete) through natural language.511458MIT
- AlicenseNot gradedqualityFmaintenanceIntegrates Google Calendar with AI assistants through the Model Context Protocol, allowing users to view and manage calendar events through natural language interaction.19712MIT
- FlicenseNot gradedqualityDmaintenanceEnables natural language interaction with Google Calendar via the Model Context Protocol, allowing LLMs like Claude to read and manage calendar events through the Google Calendar v3 API.2-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/murphy360/mcp_google_calendar'
If you have feedback or need assistance with the MCP directory API, please join our Discord server