io.github.harshitAgr/codabench-mcp
MCP server for the Codabench REST API — drives a full ML-benchmark participant workflow.
Open source Open in the app JSON README (API)
About
MCP server for the Codabench REST API — drives a full ML-benchmark participant workflow.
Details
- Kind
- MCP servers
- Topic
- Developer tools
- Publisher
- harshitagr
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 0.1.1
- Open pull requests
- 2
- Last push
- 2026-06-01T20:07:27Z
- Repository state
- ativo
- Language
- Python
- License
- MIT
- Added
- 2026-08-29 03:02:56
- Updated
- 2026-08-29 03:02:56
- Origin id
io.github.harshitAgr/codabench-mcp
README
# codabench-mcp
MCP server for the [Codabench](https://www.codabench.org) REST API. Lets an
AI agent drive a full participant ML-benchmark workflow: discover
competitions, read rules, download data, submit, poll, read leaderboards.
## Features
Curated tools for the participant path:
- `search_competitions`, `get_competition`, `list_competition_phases`,
`get_phase`, `get_competition_rules`, `list_competition_tasks`, `get_task`
- `download_dataset` (streaming + SHA-256)
- `list_my_submissions`, `get_submission`, `get_submission_logs`
- `submit_to_phase` (handles Codabench's 3-step upload flow)
- `poll_submission` (backoff + timeout + non-error "still_running")
- `get_leaderboard`, `get_my_profile`
- `codabench_request` — generic REST escape hatch (GET-only by default)
## Authentication
You need a Codabench API token. Two ways to get one:
### 1. Swagger UI (recommended)
1. Visit https://www.codabench.org/api/docs/
2. Find the `api-token-auth` endpoint → **Try it out**
3. POST your username/password
4. Copy the `token` value from the response
### 2. curl
```bash
curl -X POST https://www.codabench.org/api/api-token-auth/ \
-H "Content-Type: application/json" \
-d '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}'
```
The response is `{"token": "..."}`.
## Install
```bash
uvx codabench-mcp
```
To run the bleeding-edge `main` branch instead of the last release:
```bash
uvx --from git+https://github.com/harshitAgr/codabench-mcp codabench-mcp
```
Or for development:
```bash
git clone https://github.com/harshitAgr/codabench-mcp.git
cd codabench-mcp
uv sync
uv run codabench-mcp # requires CODABENCH_API_TOKEN
```
## Configure an MCP client
### Claude Desktop (`claude_desktop_config.json`)
```json
{
"mcpServers": {
"codabench": {
"command": "uvx",
"args": ["codabench-mcp"],
"env": {
"CODABENCH_API_TOKEN": "paste-your-token-here"
}
}
}
}
```
### Claude Code (plugin marketplace)
```shell
/plugin marketplace add harshitAgr/codabench-mcp
/plugin install codabench-mcp@codabench-mcp
```
Then export your token in the shell where you launch Claude Code:
```bash
export CODABENCH_API_TOKEN=paste-your-token-here
```
### Claude Code (manual)
If you'd rather skip the plugin layer:
```bash
claude mcp add codabench \
--env CODABENCH_API_TOKEN=paste-your-token-here \
-- uvx codabench-mcp
```
## Environment variables
| Variable | Required | Default | Purpose |
|---|---|---|---|
| `CODABENCH_API_TOKEN` | yes | — | DRF token, sent as `Authorization: Token <token>` |
| `CODABENCH_BASE_URL` | no | `https://www.codabench.org` | Override for tests |
| `CODABENCH_ALLOW_WRITE_RAW` | no | `0` | Set to `1` to allow non-GET methods through `codabench_request` |
| `CODABENCH_MAX_DOWNLOAD_BYTES` | no | `5368709120` (5 GB) | Cap for `download_dataset` |
## Development
```bash
uv sync
uv run pytest # unit tests, no network
uv run ruff check . # lint
uv run ruff format --check . # format check
```
## License
MIT — see [LICENSE](LICENSE).
<sub>`mcp-name: io.github.harshitAgr/codabench-mcp`</sub>