Use Strava's official MCP from Codex and other local stdio clients without a developer app.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Use Strava's official MCP from Codex, OpenCode, and other local stdio MCP clients without creating your own Strava developer app.
The bridge runs locally on Apple Silicon macOS. Its OAuth credential is kept in macOS Keychain, large activity streams stay in local files, and GPS/location data is blocked before it can enter the AI context.

Once connected, a local coding agent can use Strava data as part of a real project workflow instead of working from copied summaries or synthetic data.
Other example tasks:
The bridge supplies the safe Strava connection. Your agent can then combine the result with local scripts, notebooks, dashboards, or training-analysis code.
Strava publishes an official MCP connector, but its documented first-time authorization flow currently targets Claude clients. Codex supports MCP, yet it cannot currently complete this Strava OAuth bootstrap directly.
strava-mcp-bridge fills that gap:
strava-mcp-bridge bootstrap.https://mcp.strava.com/mcp.This is not a Strava REST API wrapper and does not provide shared credentials or bypass user authorization.
| Path | Create your own Strava app? | Credential custody | Strava interface | Main tradeoff |
|---|---|---|---|---|
| Official connector in Claude | No | Official client | Official Strava MCP | Simplest if Claude already fits your workflow |
| Community self-hosted Strava MCP | Usually yes | Local | Strava REST API | Broad client support, but you own the app and OAuth plumbing |
| Managed connector | Usually no | Third-party service | Provider-managed API/MCP | Easy setup, but credentials and activity data pass through another service |
| strava-mcp-bridge | No | Local macOS Keychain | Official Strava MCP | One-time Claude Code bootstrap; Apple Silicon macOS only |
Managed connector behavior varies by provider. Review its data path and terms before connecting fitness data.
Use this bridge when all of these are true:
Use another path when any of these are true:
darwin arm64)xcode-select --install)A paid Claude subscription is not required by this bridge. The authorization has also been validated with Claude Code launched through Ollama; the important component is the Claude Code OAuth client, not the model backend.
Install the bundled Codex skill explicitly at user scope:
This writes only to $HOME/.agents/skills/strava-mcp-bridge; it does not edit
Codex or MCP configuration. To keep the skill inside one project instead:
Start a new Codex task after installation, then invoke
$strava-mcp-bridge. Existing different skill content is never overwritten
unless you review the target and pass --force explicitly.
Add the official endpoint to Claude Code:
Inside Claude Code, run /mcp, select strava, and complete the Strava browser
authorization. This is the only step that needs Claude Code.
bootstrap:
Add the generated snippet to the target project's .codex/config.toml, restart
Codex (or start a new task), then call health before enabling activity tools.
For a training sync configuration:
The generated profile exposes:
healtheligibilitylist_activitiesget_activity_streamsget_activity_performanceThe bundled Codex skill guides the
agent through doctor, bootstrap, project-level configuration, and safe
failure handling. A source checkout exposes it as a repository skill; the
skill install command makes it discoverable from other projects.
The bridge is both a transport adapter and a local policy boundary:
tools/call is denied unless its tool name is explicitly allowlisted;tools/list is filtered to the local allowlist;get_activity_streams requires an explicit stream list. The accepted streams
are:
Location/GPS/polyline-like streams are rejected before forwarding. Other structured tool responses are recursively redacted for common location keys, coordinate text, coordinate arrays, polylines, maps, and token-like fields. Opaque non-JSON text and non-text content blocks fail closed.
Full stream arrays are never returned to the MCP client context. They are
written atomically to a current-user-owned directory (0700) as regular files
with mode 0600. The tool result contains only the path, stream names, point
counts, and omitted_from_context=true.
Default location:
Retention cleanup is a dry run unless --yes is supplied:
See SECURITY.md and THREAT_MODEL.md for the complete controls and residual risks.
The bridge-owned Keychain item is:
The explicit import is a credential ownership migration, not a passive copy. Strava refresh tokens rotate, so claiming the chain for bridge-owned operation can make Claude Code's previous copied refresh token stale. Claude Code can reauthorize later if it needs its own connection again.
Normal MCP startup reads only the bridge-owned Keychain item. It does not import from Claude Code or modify Claude Code configuration.
During bootstrap, macOS may show two different prompts:
/usr/bin/security reading Claude Code-credentials: choose Allow, not
Always Allow. This is the explicit one-time import.strava-keychain-helper reading the bridge-owned item: Allow is the
least-privilege choice. Always Allow avoids repeat prompts but accepts the
documented same-user helper risk.A rebuilt helper may trigger a new prompt after an upgrade.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/strava-mcp-bridge)<a href="https://allmcps.com/mcp/strava-mcp-bridge"><img src="https://allmcps.com/api/badge/strava-mcp-bridge?style=directory" alt="Strava MCP Bridge on AllMCPs" /></a>