Connect an MCP client
Edit your events from Claude, ChatGPT, Cursor, or another MCP client.
The Strave MCP server lets an AI client read and change your events in natural language. You connect Claude, ChatGPT, Cursor, or another client that supports remote MCP servers. Then you sign in with your Strave account. The client can read an event's structure, plan a change, show you what it does, and apply it.
You don't need an Application or a developer account. The connection belongs to you, not to an organisation.
Server URL
Every client uses the same remote MCP server:
https://strave.gg/api/v2/mcpThe server uses the Streamable HTTP transport. It supports the 2026-07-28 MCP protocol and also accepts clients that use a 2025 protocol version.
Add the server to your client
Each client has its own place for remote MCP servers. In all of them, add a remote MCP server with the URL above. The first time the client uses the server, it opens the Strave sign-in page in your browser.
-
Claude: Add a custom connector with the server URL.
-
ChatGPT: Add a connector with the server URL. Depending on your plan and workspace, this can require developer mode.
-
Claude Code: Run this command, then run
/mcpin Claude Code to sign in:claude mcp add --transport http strave https://strave.gg/api/v2/mcp -
Cursor: Add the server to your
mcp.jsonfile:{ "mcpServers": { "strave": { "url": "https://strave.gg/api/v2/mcp" } } }
For other clients, see the client's documentation for remote MCP servers.
Sign in and consent
Strave uses OAuth to connect the client to your account. The client registers itself with Strave the first time it connects. You don't copy a client ID or a secret.
To connect a client, follow these steps:
- Start the connection in your client. Your browser opens the Strave consent page.
- Sign in with your Strave account if you aren't signed in.
- Read the list of requested permissions and the name of the client.
- Select Allow to connect, or deny the request.
The consent page shows Not verified by Strave for a client that registered itself. Strave hasn't reviewed these clients. Allow access only if you started the connection yourself and you trust the client.
Scopes
The client asks for scopes. Each scope permits a group of tools:
| Scope | What the client can do |
|---|---|
event:read | Find your events, read their structure, settings, and history, and preview changes. |
event:create | Create new draft events in your organisations. |
event:manage | Change event settings and group schedules. |
event.structure:manage | Change stages, groups, and routes. |
organisation:read | Read the organisations that you belong to. No current tool needs it. |
offline_access | Stay connected without a new sign-in every time the access token expires. |
Access tokens expire after 15 minutes. With offline_access, the client
refreshes the token itself. If the client asks you to sign in again, repeat
the consent steps.
What the client can do
The client acts as you. It has your organisation role in each organisation, and it can only do what you can do in Strave:
- To read an event and its structure, you need the Events: View permission.
- To read settings and history, preview a change, or apply a change, you need the Events: Configure permission.
- To create an event, you need the Events: Create permission.
If you lose a permission in Strave, the client loses it too.
Tools
The server offers these tools:
| Tool | Kind | What it does |
|---|---|---|
list_events | Read | Lists the events that you can configure, newest first. |
get_event | Read | Returns the name, state, start time, signup counts, and stages of an event. |
get_structure | Read | Returns the stages, groups with their state, routes, and current issues. |
get_settings | Read | Returns the values of one settings area. |
simulate_structure | Read | Plays the structure with random results and reports problems. |
list_templates | Read | Lists the Strave event templates. |
list_revisions | Read | Lists the version history of an event, newest first. |
preview_change | Read | Checks a change without writing it and shows its result. |
apply_change | Write | Applies a change. |
preview_restore | Read | Shows what restoring an earlier version changes. |
restore_revision | Write | Restores an earlier version. |
create_event | Write | Creates a draft event, optionally from a template. |
A change can contain these operations:
- Create, update, delete, or reorder stages, including their groups.
- Create, update, or delete routes between stages.
- Turn the advanced format on or off.
- Update one settings area, for example registration, map pool, match format, branding, or prizes.
- Schedule a group.
The tools don't change teams, results, or match schedules. Use the event management area or Public API v2 for those.
create_event takes only the event name. Strave adds the organisation name,
so the event appears as Nordic Siege League | Spring Cup. The new event
stays a draft until you publish it.
Preview before you apply
The client must call preview_change before apply_change. The preview
writes nothing. It returns the changes, the issues, the impact on teams and
matches, a simulation of the new structure, and the items that block the
change. A good client shows you this result and asks you before it applies
the change.
Some changes affect teams that are already placed. When a change clears a
seeded group, its teams lose their seeds and its unplayed matches are removed.
In this case, apply_change fails with impact_confirm_required and writes
nothing. The client must show you the impact. Only after you accept it can the
client repeat the call with confirmImpact: true. restore_revision uses the
same rule.
Read the impact before you accept it. A confirmed change removes the seeds and unplayed matches of the affected groups.
A group is locked when one of its matches has started. A change that touches a
locked group fails with blocked, and confirmImpact doesn't override it.
These are the same rules that apply when you edit the event in Strave.
History and undo
A change applies in full or not at all. If one operation fails, Strave writes none of them.
Each applied change becomes one version in the event's Version history.
The entry shows your name and the label "via" followed by the client name, for
example "via Claude". To undo a change, restore an earlier version. You can
ask the client to do this with preview_restore and restore_revision, or
select Restore this version in Version history.
Limits and pricing
The MCP server is free on all plans. Your client pays for its own AI usage.
Each user has these rate limits:
- 60 tool calls per minute.
- 20 write tool calls per minute, counted inside the 60 calls.
When you reach a limit, tools fail with rate_limited until the limit resets.
Errors
A failed tool call returns a JSON result with a code and an English
message. Most clients pass the message to the model, which can fix the call:
| Code | Meaning and what to do |
|---|---|
blocked | A locked group or a restore rule stops the change. Leave the locked groups out of the change. |
impact_confirm_required | The change clears seeded groups. Review the impact, then repeat the call with confirmImpact: true. |
invalid_change | The change isn't valid. Fix it with the issues in the result. |
permission_denied | Your role or the granted scopes don't permit the tool. Ask for the permission, or reconnect with the scope. |
not_found | The event or the tool doesn't exist, or you can't access it. Check the eventId with list_events. |
rate_limited | You reached a rate limit. Wait and try again. |
event_ended | The event is completed or cancelled. You can't change it. |
internal | The call failed on the Strave side. Try again later. If it keeps failing, contact support. |
Next steps
- Read how the Strave agent edits events inside Strave.
- Learn what each settings area controls in Event settings and modes.