# Strava Mcp

> An MCP server to interact with Strava

- **Type:** MCP server
- **Install:** `agentstack add mcp-yorrickjansen-strava-mcp`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [yorrickjansen](https://agentstack.voostack.com/s/yorrickjansen)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [yorrickjansen](https://github.com/yorrickjansen)
- **Source:** https://github.com/yorrickjansen/strava-mcp

## Install

```sh
agentstack add mcp-yorrickjansen-strava-mcp
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Strava MCP Server

[](https://github.com/yorrickjansen/strava-mcp/actions/workflows/ci.yml)
[](https://codecov.io/gh/yorrickjansen/strava-mcp)

A Model Context Protocol (MCP) server for interacting with the Strava API.

  

## User Guide

### Installation

You can easily install Strava MCP with `uvx`:

```bash
uvx strava-mcp
```

### Setting Up Strava Credentials

1. **Create a Strava API Application**:
   - Go to [https://www.strava.com/settings/api](https://www.strava.com/settings/api)
   - Create a new application to obtain your Client ID and Client Secret
   - For "Authorization Callback Domain", enter `localhost`

2. **Configure Your Credentials**:
   Create a credentials file (e.g., `~/.ssh/strava.sh`):

   ```bash
   export STRAVA_CLIENT_ID=your_client_id
   export STRAVA_CLIENT_SECRET=your_client_secret
   ```

3. **Configure Claude Desktop**:
   Add the following to your Claude configuration (`/Users//Library/Application Support/Claude/claude_desktop_config.json`):

   ```json
   "strava": {
       "command": "bash",
       "args": [
           "-c",
           "source ~/.ssh/strava.sh && uvx strava-mcp"
       ]
   }
   ```

### Authentication

The first time you use the Strava MCP tools:

1. An authentication flow will automatically start
2. Your browser will open to the Strava authorization page
3. After authorizing, you'll be redirected back to a local page
4. Your refresh token will be saved automatically for future use

### Available Tools

#### Get User Activities
Retrieves activities for the authenticated user.

**Parameters:**
- `before` (optional): Epoch timestamp for filtering
- `after` (optional): Epoch timestamp for filtering
- `page` (optional): Page number (default: 1)
- `per_page` (optional): Number of items per page (default: 30)

#### Get Activity
Gets detailed information about a specific activity.

**Parameters:**
- `activity_id`: The ID of the activity
- `include_all_efforts` (optional): Include segment efforts (default: false)

#### Get Activity Segments
Retrieves segments from a specific activity.

**Parameters:**
- `activity_id`: The ID of the activity

#### Get Segment Leaderboard
Gets the leaderboard for a specific segment.

**Parameters:**
- `segment_id`: The ID of the segment
- Various optional filters (gender, age group, etc.)

## Developer Guide

### Project Setup

1. Clone the repository:
   ```bash
   git clone 
   cd strava
   ```

2. Install dependencies:
   ```bash
   uv install
   ```

3. Set up environment variables:
   ```bash
   export STRAVA_CLIENT_ID=your_client_id
   export STRAVA_CLIENT_SECRET=your_client_secret
   ```
   Alternatively, create a `.env` file with these variables.

### Running in Development Mode

Run the server with MCP CLI:
```bash
mcp dev strava_mcp/main.py
```

### Manual Authentication

You can get a refresh token manually by running:
```bash
python get_token.py
```

### Project Structure

- `strava_mcp/`: Main package directory
  - `__init__.py`: Package initialization
  - `config.py`: Configuration settings using pydantic-settings
  - `models.py`: Pydantic models for Strava API entities
  - `api.py`: Low-level API client for Strava
  - `auth.py`: Strava OAuth authentication implementation
  - `oauth_server.py`: Standalone OAuth server implementation
  - `service.py`: Service layer for business logic
  - `server.py`: MCP server implementation
- `tests/`: Unit tests
- `strava_mcp/main.py`: Main entry point to run the server
- `get_token.py`: Utility script to get a refresh token manually

### Running Tests

```bash
pytest
```

### Publishing to PyPI

#### Building the package
```bash
# Build both sdist and wheel
uv build
```

#### Publishing to PyPI
```bash
# Publish to Test PyPI first
uv publish --index testpypi

# Publish to PyPI
uv publish
```

## License

[MIT License](LICENSE)

## Acknowledgements

- [Strava API](https://developers.strava.com/)
- [Model Context Protocol (MCP)](https://modelcontextprotocol.io/)

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [yorrickjansen](https://github.com/yorrickjansen)
- **Source:** [yorrickjansen/strava-mcp](https://github.com/yorrickjansen/strava-mcp)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** yes
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-yorrickjansen-strava-mcp
- Seller: https://agentstack.voostack.com/s/yorrickjansen
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
