npm package: @striderlabs/mcp-peloton
Description: MCP server connector for Peloton fitness equipment and classes
Author: StriderLabs
Latest version: 1.0.0

# @striderlabs/mcp-peloton

An MCP (Model Context Protocol) server connector for Peloton fitness equipment and classes. Uses Playwright browser automation to interact with the Peloton platform.

## Installation

```bash
npm install -g @striderlabs/mcp-peloton
npx playwright install chromium
```

## Usage with Claude Desktop

Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "peloton": {
      "command": "striderlabs-mcp-peloton"
    }
  }
}
```

Or run directly:

```bash
striderlabs-mcp-peloton
```

## Tools

### `peloton_login`
Log in to your Peloton account. Must be called before any other tool.

**Parameters:**
- `email` (string, required): Peloton account email
- `password` (string, required): Peloton account password

---

### `peloton_get_profile`
Get the current user's Peloton profile information including username, stats, and settings.

---

### `peloton_search_classes`
Search for Peloton classes with optional filters.

**Parameters:**
- `class_type` (string, optional): Fitness discipline — `cycling`, `running`, `strength`, `yoga`, `meditation`, `stretching`, `cardio`, `walking`, `bike_bootcamp`
- `instructor` (string, optional): Instructor ID or name
- `duration` (number, optional): Class duration in minutes (e.g., `20`, `30`, `45`, `60`)
- `difficulty` (string, optional): `beginner`, `intermediate`, or `advanced`
- `limit` (number, optional): Max results to return (default: 20)

---

### `peloton_get_class_details`
Get detailed information about a specific class.

**Parameters:**
- `class_id` (string, required): The unique class identifier

---

### `peloton_get_schedule`
Get scheduled live classes for a date range.

**Parameters:**
- `date_range` (object, optional):
  - `start` (string): Start datetime in ISO 8601 (e.g., `2024-01-15T00:00:00Z`)
  - `end` (string): End datetime in ISO 8601 (e.g., `2024-01-16T23:59:59Z`)

---

### `peloton_book_live_class`
Reserve a spot in a scheduled live class.

**Parameters:**
- `class_id` (string, required): The live class identifier to book

---

### `peloton_get_workout_history`
Retrieve the user's past workout history.

**Parameters:**
- `limit` (number, optional): Number of workouts to fetch (default: 20, max: 100)

---

### `peloton_get_achievements`
Get the user's Peloton achievements and badges.

---

### `peloton_get_challenges`
List active Peloton challenges available to join.

---

### `peloton_join_challenge`
Join a Peloton challenge.

**Parameters:**
- `challenge_id` (string, required): The challenge identifier to join

---

### `peloton_get_instructors`
Get a list of all Peloton instructors with their bios and specialties.

---

### `peloton_get_bookmarks`
Get the user's bookmarked/favorited classes.

---

### `peloton_add_bookmark`
Add a class to the user's bookmarks/favorites.

**Parameters:**
- `class_id` (string, required): The class identifier to bookmark

## Example Workflow

```
1. peloton_login(email="you@example.com", password="secret")
2. peloton_get_profile()
3. peloton_search_classes(class_type="cycling", duration=30, difficulty="intermediate")
4. peloton_get_class_details(class_id="<id from search>")
5. peloton_add_bookmark(class_id="<id>")
6. peloton_get_workout_history(limit=10)
7. peloton_get_achievements()
8. peloton_get_challenges()
9. peloton_join_challenge(challenge_id="<id>")
```

## Development

```bash
git clone https://github.com/markswendsen-code/mcp-peloton
cd mcp-peloton
npm install
npm run build
```

## Requirements

- Node.js 18+
- Chromium (installed via `npx playwright install chromium`)
- A valid Peloton account

## License

MIT