strava-mcp
Strava MCP Server
An open-source Model Context Protocol (MCP) server that connects AI agents to your Strava data.
Features
Headless Adapter: No UI, just pure MCP tools and resources.
Privacy First: Tokens stored locally (
~/.config/strava-mcp/), never sent to 3rd parties.Resilient: Built-in rate limiting (handles 429s) and SQLite caching.
Educational: Clean, readable Python 3.11+ code with type hints.
Prerequisites
Python 3.11 or higher
Strava Account (for API credentials)
Quick Start (Dry Run)
You can test the server immediately without Strava credentials using the mock data mode.
# Install dependencies
python3 -m pip install -e .
# Run the smoke test (verifies MCP protocol via stdio)
python3 scripts/smoke_test.pySetup (Real Data)
1. Get Strava Credentials
Go to Strava API Settings.
Create an application.
Callback Domain:
localhost
2. Authorization
Run the local helper script to perform the OAuth handshake. This will open your browser.
export STRAVA_CLIENT_ID=your_client_id
export STRAVA_CLIENT_SECRET=your_client_secret
python3 scripts/strava_auth.pyTokens are saved to ~/.config/strava-mcp/credentials.json.
3. Usage with Claude Code
Configure claude to use this server.
File: ~/.config/claude/config.json (or equivalent MCP manager config)
{
"mcpServers": {
"strava": {
"command": "python3",
"args": ["-m", "strava_mcp.server"],
"env": {
"PYTHONPATH": "/path/to/strava-mcp/src"
}
}
}
}Or run directly if installed in your environment:
{
"mcpServers": {
"strava": {
"command": "uv",
"args": ["run", "python", "-m", "strava_mcp.server"]
}
}
}Tools Available
Tool | Description |
| Returns your profile stats. |
| Fetch recent activities (supports date filtering). |
| Detailed view of a single activity. |
| Aggregated stats (distance, elevation) for a given week. |
Resources
strava://athlete/profile: Direct read of profile.strava://activities/recent: Most recent 10 activities.
Architecture
Tech Stack: Python, FastMCP, Httpx, SQLite, Pydantic.
Caching: GET requests are cached in SQLite with a TTL (default 5 mins for lists).
Rate Limiting: Respects
X-RateLimit-*headers to prevent API bans.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tayden-b/strava-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server