AddCal MCP Server
A remote MCP server for AddCal that manages published calendars, events, subscribers, RSVPs, invites, and analytics through natural language.
README
AddCal MCP Server
A remote Model Context Protocol server for AddCal. Connect Claude, ChatGPT, Cursor or any MCP client and manage the calendars other people subscribe to.
https://addcal.co/mcp
No install, no API key. It is a hosted streamable HTTP server and authentication is OAuth.
This is not a Google Calendar MCP
Almost every calendar MCP server does the same job: it reads and writes your own schedule. Useful, and well covered already.
AddCal is the other side of the calendar. It manages the events you publish for an audience: a class timetable, a fixture list, a release schedule, a conference programme. The people receiving those events never get an invite. They subscribe to a feed, or they click an add-to-calendar link, and the event lands in whichever calendar app they already use.
That difference shows up in the tools. There is no accept-invite, because nobody is invited. There is list-subscribers, get-analytics and create-calendar-collection, because the questions you ask about a published calendar are how many people follow it and whether anyone actually added the event.
Use a Google Calendar MCP to run your day. Use this one to run a calendar other people follow.
Quick start
Pick your client. Cursor and VS Code install in one click.
Claude Code
claude mcp add --transport http addcal https://addcal.co/mcp
Then run /mcp inside Claude Code to sign in.
Claude Desktop and claude.ai
Settings, Connectors, Add custom connector, then paste https://addcal.co/mcp. Custom connectors need a paid plan.
ChatGPT
Settings, Apps & Connectors, Advanced, turn on Developer mode, then add https://addcal.co/mcp as a connector. Requires a paid plan on the web app.
Anything else
Any client that speaks streamable HTTP with OAuth. Windsurf, Goose, Zed and the JetBrains AI Assistant all take a remote MCP URL.
{
"mcpServers": {
"addcal": {
"type": "http",
"url": "https://addcal.co/mcp"
}
}
}
Authentication
OAuth 2.1 with PKCE and dynamic client registration. There is no API key to copy and paste.
Your client registers itself, you approve it in a browser, and it receives a token scoped to your team. It can reach exactly what you can reach, no more. Revoke any connected client from Settings, API.
What you can ask for
What have I got on next week?
Create a team standup every weekday at 9am and show me the dates first.
Who has RSVPed yes to the launch party?
Duplicate last month's workshop into March.
Which of my events got the most add-to-calendar clicks?
Tools
19 tools. RO is read only. Required parameters are marked *.
Search
| Tool | Parameters | |
|---|---|---|
search |
RO | query*, limit, team_id |
One call across calendars, collections, events and RSVPs, returning the ids every other tool needs. Start here whenever something is named rather than identified.
Calendars
| Tool | Parameters | |
|---|---|---|
list-calendars |
RO | search, limit, team_id |
create-calendar |
name*, description, timezone, team_id |
Collections
A collection bundles several calendars behind one public page and subscribe link.
| Tool | Parameters | |
|---|---|---|
list-calendar-collections |
RO | team_id |
create-calendar-collection |
name*, calendar_ids*, description, allow_subscriber_selection, team_id |
Subscribers
| Tool | Parameters | |
|---|---|---|
list-subscribers |
RO | calendar_id*, status, search, limit |
Returns personal data. Names and emails exist only for calendars that ask subscribers for details, so many rows are anonymous.
Events
| Tool | Parameters | |
|---|---|---|
list-events |
RO | calendar_id, search, range, start_date, end_date, limit, team_id |
get-event |
RO | event_id* |
create-event |
calendar_id*, title*, date_start*, date_end*, timezone, description, location, is_all_day, is_draft, has_rsvp, recurrence_rule, series_title, reminder_before |
|
update-event |
event_id*, title, description, location, date_start, date_end, timezone, is_all_day, is_draft, has_rsvp, recurrence_rule, reminder_before |
|
duplicate-event |
event_id*, target_calendar_id, title, date_start, date_end |
|
delete-event |
destructive | event_id*, confirm*, notify_invitees |
preview-recurring-dates |
RO | recurrence_rule*, date_start*, date_end*, timezone, is_all_day, count |
Recurrence uses RFC 5545 rules without the RRULE: prefix, such as FREQ=WEEKLY;BYDAY=MO;COUNT=10. Run preview-recurring-dates before creating a series to check the dates land where you expect.
RSVPs
| Tool | Parameters | |
|---|---|---|
list-rsvps |
RO | event_id*, response_type, search, limit |
create-rsvp |
destructive | event_id*, name*, email*, response_type*, confirm*, custom_fields, send_confirmation |
create-rsvp emails the attendee by default. Set send_confirmation to false to record an RSVP silently.
Invites
| Tool | Parameters | |
|---|---|---|
list-invites |
RO | event_id*, status, search, limit |
send-event-invite |
destructive | event_id*, email*, confirm* |
Account
| Tool | Parameters | |
|---|---|---|
get-analytics |
RO | calendar_id, event_id, start_date, end_date, timezone, unique_only, include_series, team_id |
get-team-usage |
RO | team_id |
Destructive tools
Three tools are annotated destructive, and all three require an explicit confirm parameter:
send-event-inviteandcreate-rsvpemail a real person. That cannot be recalled.delete-eventis permanent, and deleting a recurring event removes every instance in the series.
A well-behaved client surfaces these for approval before running them. Check the name and address when your assistant asks.
Plans and limits
The server is included on every plan, and the tools respect whatever your plan already allows. Collections, calendar invites and analytics stay gated to the plans that include them. When a tool hits a limit it explains why rather than retrying.
Links
- MCP server guide
- Full tool reference
- REST API reference
- Smithery listing
- Official MCP registry entry
About this repository
AddCal's MCP server is hosted, so there is nothing here to install or run. This repository holds the published server.json manifest and the documentation for the remote endpoint. The implementation lives in the main AddCal application.
Found a problem with a tool, or want one that does not exist yet? Open an issue.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.