Skip to main content
Glama
README.md
# gymtracker-plugin

Universal MCP server + Claude Code plugin for [Gymtracker](https://gitlab.com/ia-apps/codin/gymtracker).
Lets AI coding agents (Claude Code, Codex, Cursor, …) read and write your training data.

## What you need

- Your Gymtracker instance URL (`GYMTRACKER_URL`)
- An API token from your Gymtracker **/api/tokens** page (`GYMTRACKER_TOKEN`)

## Modes

| Env | Read | Write | Delete |
| --- | --- | --- | --- |
| (default) | ✅ | ✅ | ❌ |
| `GYMTRACKER_ALLOW_DELETE=1` | ✅ | ✅ | ✅ |
| `GYMTRACKER_READONLY=1` | ✅ | ❌ | ❌ |

`READONLY` overrides `ALLOW_DELETE`.

## Install

### Claude Code (plugin)
```
/plugin marketplace add https://gitlab.com/codin-public/gymtracker-plugin.git
/plugin install gym@gymtracker
```
You'll be prompted for your URL and token. Adds `/gym:log`, `/gym:summary`, `/gym:coach`.

### Codex CLI
See [`examples/codex.md`](examples/codex.md).

### Cursor / Claude Desktop / other MCP clients
See [`examples/cursor.md`](examples/cursor.md) and [`examples/generic-mcp.json`](examples/generic-mcp.json).

## Gotchas
- **Env is not inherited.** stdio MCP servers don't see your shell env — put the vars in the
  client's `env` block (or Cursor's `${env:...}`).
- **`npx` on PATH.** GUI clients launched from the Dock may not find `npx` (nvm/Homebrew).
  Use an absolute path to `npx`/`node` in `command` if startup fails.
- **First run downloads.** `npx -y` fetches the package once; bump Codex's
  `startup_timeout_sec` if it times out.

## Development
```
npm install
npm test
npm run build
```

## License
MIT