About AddCal
AddCal's MCP server manages calendars and events published for subscribers, rather than a person's own schedule. It is intended for publishing class timetables, fixture lists, release schedules, or conference programmes, with tools for RSVPs and engagement data.
Key features
- 01Create and manage public calendars and events
- 02Group calendars and manage subscribers
- 03Create recurring events and preview dates
- 04Review RSVPs, invites, and calendar analytics
- 05Connect to the remote MCP server with OAuth
Use cases
- 01Publish class timetables or fixture lists for subscribers
- 02Maintain conference programmes or release calendars
- 03Review event RSVPs and calendar-add activity
- 04Duplicate events and schedule recurring dates
MCP support
This hosted Streamable HTTP MCP server is available at `https://addcal.co/mcp` and uses OAuth for MCP clients to manage public calendars, events, subscribers, and related data.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://addcal.co/mcpclaude mcp add --transport http co-addcal-addcal https://addcal.co/mcp{"mcpServers":{"co-addcal-addcal":{"type":"http","url":"https://addcal.co/mcp"}}}Open in Cursor{"servers":{"co-addcal-addcal":{"type":"http","url":"https://addcal.co/mcp"}}}Open in VS Code{"mcpServers":{"co-addcal-addcal":{"type":"http","url":"https://addcal.co/mcp"}}}{"mcpServers":{"co-addcal-addcal":{"serverUrl":"https://addcal.co/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
Details
From the project READMEAddCal 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.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.