A Model Context Protocol (MCP) server for Google Calendar integration in Claude Desktop with auto authentication support. This server enables AI assistants to manage Google Calendar through natural language interactions.
Create a Google Cloud Project and obtain credentials:
a. Create a Google Cloud Project:
b. Create OAuth 2.0 Credentials:
http://localhost:3000/oauth2callback
to the authorized redirect URIsgcp-oauth.keys.json
Run Authentication:
You can authenticate in two ways:
a. Global Authentication (Recommended):
# First time: Place gcp-oauth.keys.json in your home directory's .calendar-mcp folder
mkdir -p ~/.calendar-mcp
mv gcp-oauth.keys.json ~/.calendar-mcp/
# Run authentication from anywhere
npx @nchufa/calendar auth
b. Local Authentication:
# Place gcp-oauth.keys.json in your current directory
# The file will be automatically copied to global config
npx @nchufa/calendar auth
The authentication process will:
gcp-oauth.keys.json
in the current directory or ~/.calendar-mcp/
~/.calendar-mcp/
~/.calendar-mcp/credentials.json
Note:
- After successful authentication, credentials are stored globally in
~/.calendar-mcp/
and can be used from any directory- Both Desktop app and Web application credentials are supported
- For Web application credentials, make sure to add
http://localhost:3000/oauth2callback
to your authorized redirect URIs
Configure in Claude Desktop:
Add the following to your Claude Desktop configuration file:
{
"mcpServers": {
"calendar": {
"command": "npx",
"args": [
"@nchufa/calendar"
]
}
}
}
The server provides the following tools that can be used through Claude Desktop:
create_event
)Creates a new calendar event.
{
"summary": "Team Meeting",
"description": "Weekly team sync to discuss project progress",
"location": "Conference Room A",
"start": "2025-04-01T14:00:00",
"end": "2025-04-01T15:00:00",
"attendees": ["colleague@example.com", "manager@example.com"],
"reminders": {
"useDefault": false,
"overrides": [
{
"method": "email",
"minutes": 30
},
{
"method": "popup",
"minutes": 10
}
]
}
}
Natural language date/time is also supported:
{
"summary": "Coffee with John",
"location": "Starbucks Downtown",
"start": "tomorrow at 2:30pm",
"end": "tomorrow at 3:30pm"
}
get_event
)Retrieves details of a specific calendar event.
{
"eventId": "abc123xyz456",
"calendarId": "primary"
}
update_event
)Updates an existing calendar event.
{
"eventId": "abc123xyz456",
"summary": "Updated Meeting Title",
"location": "New Location",
"start": "2025-04-01T15:00:00",
"end": "2025-04-01T16:00:00"
}
delete_event
)Deletes a calendar event.
{
"eventId": "abc123xyz456",
"calendarId": "primary"
}
list_events
)Lists calendar events within a specified time range.
{
"calendarId": "primary",
"timeMin": "2025-04-01T00:00:00",
"timeMax": "2025-04-07T23:59:59",
"maxResults": 10,
"orderBy": "startTime"
}
search_events
)Searches for events matching a query.
{
"query": "meeting",
"calendarId": "primary",
"timeMin": "2025-04-01T00:00:00",
"maxResults": 5
}
list_calendars
)Lists all available calendars.
{}
The server supports various natural language formats for dates and times:
This makes it easy to create and update events using natural language instructions.
~/.calendar-mcp/
)OAuth Keys Not Found
gcp-oauth.keys.json
is in either your current directory or ~/.calendar-mcp/
Invalid Credentials Format
web
or installed
credentialsPort Already in Use
Contributions are welcome! Please feel free to submit a Pull Request.
MIT
Special thanks to GongRzhe and his Calendar-Autoauth-MCP-Server project which served as a foundation for this implementation.
If you encounter any issues or have questions, please file an issue on the GitHub repository.
{
"mcpServers": {
"calendar": {
"env": {},
"args": [
"@nchufa/calendar"
],
"command": "npx"
}
}
}
Seamless access to top MCP servers powering the future of AI integration.