Skip to main content
Glama
aaronarnold2

concept2-mcp-server

by aaronarnold2
README.md
# concept2-mcp-server

MCP server for the [Concept2 Logbook API](https://log.concept2.com/developers/documentation/).

## Setup

### 1. Get an Access Token

Use the Concept2 OAuth2 flow to obtain an access token:
- Authorize: `GET https://log.concept2.com/oauth/authorize`
- Token exchange: `POST https://log.concept2.com/oauth/access_token`

Required scopes: `user:read user:write results:read results:write`

### 2. Configure Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "concept2": {
      "command": "node",
      "args": ["/path/to/concept2-mcp-server/dist/index.js"],
      "env": {
        "CONCEPT2_ACCESS_TOKEN": "your_access_token_here"
      }
    }
  }
}
```

### 3. Build

```bash
npm install
npm run build
```

## Tools

| Tool | Description |
|------|-------------|
| `concept2_get_user` | Get a user profile ("me" or by ID) |
| `concept2_update_user` | Update the authenticated user's profile |
| `concept2_list_results` | List workout results with pagination and filters |
| `concept2_get_result` | Get a single workout result by ID |
| `concept2_create_result` | Log a new workout result |
| `concept2_create_results_bulk` | Log multiple workouts at once |
| `concept2_update_result` | Update an existing workout result |
| `concept2_delete_result` | Delete a workout result (irreversible) |
| `concept2_get_result_strokes` | Get per-stroke data for a workout |
| `concept2_export_result` | Export a workout as TCX, FIT, or CSV |
| `concept2_list_challenges` | List all Concept2 challenges |
| `concept2_get_current_challenges` | Get currently active challenges |
| `concept2_get_upcoming_challenges` | Get challenges starting within N days |
| `concept2_get_season_challenges` | Get challenges for a specific season year |
| `concept2_get_event_challenges` | Get event challenges for a specific year |

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `CONCEPT2_ACCESS_TOKEN` | Yes | OAuth2 bearer token from Concept2 |

TDQS

A3.9/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have clear distinct purposes: user profile, result operations, and challenge queries. The challenge-related tools (list, current, upcoming, season, event) have some overlap but are differentiated by time/type filters in their descriptions.

Naming Consistency4/5

All tools follow the concept2_verb_noun pattern. There is a minor inconsistency between 'list' and 'get' for challenge collections (e.g., list_challenges vs get_current_challenges), but the pattern is otherwise predictable.

Tool Count5/5

14 tools is well-scoped for a Concept2 Logbook server covering user profiles, workout results, and challenges. Each tool earns its place with no redundancy.

Completeness4/5

The surface covers user profile get/update, results CRUD (except delete), bulk create, strokes, and export, plus multiple challenge views. Missing a delete result operation is a minor gap, but the core workflows are covered.

Maintenance

ActivityInactive
ResponsivenessNo issues