Model Context Protocol (MCP) Server + Strava OAuth
This is a Model Context Protocol (MCP) server that supports remote MCP connections, with Strava OAuth built-in. It allows users to connect to your MCP server by signing in with their Strava account.
Overview
The MCP server (powered by Cloudflare Workers) serves two roles:
- Acts as an OAuth Server for your MCP clients
- Acts as an OAuth Client for Strava's OAuth services
This project serves as a reference example for integrating OAuth providers with an MCP server deployed to Cloudflare, using the workers-oauth-provider
library.
Prerequisites
- A Strava account
- A Cloudflare account
- Node.js and npm installed
- Wrangler CLI installed (
npm install -g wrangler
)
Quick Start
- Clone the repository:
git clone https://github.com/kw510/strava-mcp.git
cd strava-mcp
npm install
Set up your Strava API credentials (see Setting Up Strava API Credentials)
Set up your Cloudflare KV namespace:
wrangler kv:namespace create "OAUTH_KV"
Update the wrangler.toml
file with the generated KV ID.
- Deploy to Cloudflare:
wrangler deploy
Setting Up Strava API Credentials
For Production
- Go to Strava's API Settings and create a new application
- Configure your application:
- Application Name: Choose a name for your application
- Category: Select an appropriate category
- Website: Your website URL
- Application Description: Brief description of your application
- Authorization Callback Domain:
mcp-strava-oauth.<your-subdomain>.workers.dev
- Authorization Callback URL:
https://mcp-strava-oauth.<your-subdomain>.workers.dev/callback
- Set your production environment variables:
wrangler secret put STRAVA_CLIENT_ID
wrangler secret put STRAVA_CLIENT_SECRET
For Development
- Create a separate Strava API application for development
- Configure your development application:
- Authorization Callback Domain:
localhost
- Authorization Callback URL:
http://localhost:8788/callback
- Create a
.dev.vars
file in your project root:
STRAVA_CLIENT_ID=your_development_strava_client_id
STRAVA_CLIENT_SECRET=your_development_strava_client_secret
Testing Your MCP Server
Using Inspector
- Install the Inspector tool:
npx @modelcontextprotocol/inspector@latest
- Connect to your server:
- For production:
https://mcp-strava-oauth.<your-subdomain>.workers.dev/sse
- For development:
http://localhost:8788/sse
Using Claude Desktop
- Open Claude Desktop and go to Settings -> Developer -> Edit Config
- Add your MCP server configuration:
{
"mcpServers": {
"strava": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp-strava-oauth.<your-subdomain>.workers.dev/sse"
]
}
}
}
- Restart Claude Desktop and complete the OAuth flow
Development
Local Development
- Start the development server:
wrangler dev
- The server will be available at
http://localhost:8788
API Rate Limits
The Strava API has the following rate limits:
- 200 requests every 15 minutes
- 2,000 requests per day
How It Works
OAuth Provider
The OAuth Provider library handles:
- OAuth 2.1 server implementation
- Token issuance and validation
- Secure token storage in KV
- Strava OAuth integration
Durable MCP
Provides:
- Persistent state management
- Secure authentication context storage
- User information access via
this.props
- Conditional tool availability
MCP Remote
Enables:
- Client-server communication
- Tool definition and management
- Request/response serialization
- SSE connection maintenance
Troubleshooting
- If you see error messages in Claude Desktop, verify the connection by hovering over the 🔨 icon
- For Cursor integration, use the "Command" type and combine command and args into one string
- Ensure your callback URLs match exactly with what's configured in your Strava application
Strava MCP
Project Details
- kw510/strava-mcp
- MIT License
Categories
Recomended MCP Servers
Monorepo providing 1) OpenAPI to MCP Tool generator 2) Exposing all of Twilio's API as MCP Tools
MCP Crew AI Server is a lightweight Python-based server designed to run, manage and create CrewAI workflows.
Expose llms-txt to IDEs for development
An MCP server to read MCP logs to debug directly inside the client
It's like v0 but in your Cursor/WindSurf/Cline. 21st dev Magic MCP server for working with your frontend like...

council of models for decision
A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with your Google Cloud...
✨ JMeter Meets AI Workflows: Introducing the JMeter MCP Server! 🤯
Connect your chat repl to wolfram alpha computational intelligence
A Ticketmaster MCP server that provides query capabilites from the Discovery API