Skip to main content
Glama
0xAndoroid

poker-bankroll-tracker-mcp

by 0xAndoroid
README.md
# Poker Bankroll Tracker MCP + CLI

Low-context command-line interface and MCP (Model Context Protocol) server for the [Poker Bankroll Tracker](https://www.pokerbankrolltracker.net/) API.

The CLI is the preferred agent surface: it exposes the same sessions and stats capabilities without loading MCP tool schemas into context. The MCP server remains available for MCP clients.

## Install

```bash
npm install -g poker-bankroll-tracker-mcp
```

Or run directly with npx:

```bash
PBT_API_KEY="your-api-key" npx poker-bankroll-tracker-mcp
```

After global install, both binaries are available:

```bash
poker-bankroll-tracker --help
poker-bankroll-tracker-mcp
```

## Configuration

### Environment Variable

Both the CLI and MCP server require `PBT_API_KEY` with your Poker Bankroll Tracker API key. The API uses Bearer auth and is rate-limited to 20 requests per 15 minutes.

```bash
export PBT_API_KEY="your-api-key"
```

## CLI

Command name: `poker-bankroll-tracker`

The CLI rejects unknown flags/arguments and validates every filter. Errors go to stderr with non-zero exit codes. `--json` emits strict JSON to stdout and no extra output.

### `sessions`

Fetch poker sessions with calculated profit/loss.

```bash
poker-bankroll-tracker sessions [--start YYYY-MM-DD] [--end YYYY-MM-DD] [--currency USD,EUR] [--type cashgame,tournament,...] [--staking] [--json]
```

Flags:

| Flag | Type / Format | Description |
|------|---------------|-------------|
| `--start` | `YYYY-MM-DD` | Start date filter, example `2026-01-01` |
| `--end` | `YYYY-MM-DD` | End date filter, example `2026-03-31` |
| `--currency` | comma-separated 3-letter ISO codes | Currency filter, example `USD,EUR` |
| `--type` | comma-separated enum values | One or more of `cashgame`, `tournament`, `payout`, `costs`, `casinogame`, `jackpot` |
| `--staking` | boolean flag | Filter to staking sessions |
| `--json` | boolean flag | Emit machine-parseable JSON |

Examples:

```bash
poker-bankroll-tracker sessions --start 2026-03-01 --end 2026-03-31
poker-bankroll-tracker sessions --type cashgame,tournament --currency USD,EUR
poker-bankroll-tracker sessions --staking --json
```

### `stats`

Compute aggregate statistics: total profit, win rate, average session profit, total sessions, breakdowns by location/stakes/month.

```bash
poker-bankroll-tracker stats [--start YYYY-MM-DD] [--end YYYY-MM-DD] [--currency USD,EUR] [--type cashgame,tournament,...] [--staking] [--json]
```

Flags are identical to `sessions`.

Examples:

```bash
poker-bankroll-tracker stats --start 2026-01-01
poker-bankroll-tracker stats --type cashgame --currency USD
poker-bankroll-tracker stats --staking --json
```

### CLI JSON Output

`sessions --json` returns the same formatted session objects as the MCP `get_sessions` tool, including computed `profit` and cash-game `stakes` when available.

`stats --json` returns the same aggregate object as the MCP `get_stats` tool:

- `totalSessions`
- `totalProfit`
- `winRate`
- `avgSessionProfit`
- `currencies`
- `byLocation`
- `byStakes`
- `byMonth`

## MCP Configuration

### Claude Desktop

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

```json
{
  "mcpServers": {
    "poker-bankroll-tracker": {
      "command": "npx",
      "args": ["-y", "poker-bankroll-tracker-mcp"],
      "env": {
        "PBT_API_KEY": "your-api-key-here"
      }
    }
  }
}
```

### Claude Code

Add to `~/.claude/settings.json`:

```json
{
  "mcpServers": {
    "poker-bankroll-tracker": {
      "command": "npx",
      "args": ["-y", "poker-bankroll-tracker-mcp"],
      "env": {
        "PBT_API_KEY": "your-api-key-here"
      }
    }
  }
}
```

### Other MCP Clients

Run the server over stdio:

```bash
PBT_API_KEY="your-api-key" poker-bankroll-tracker-mcp
```

## Available MCP Tools

### `get_sessions`

Fetch poker sessions with optional filters. Returns session data with calculated profit/loss.

> Broad date ranges may return many sessions and consume significant tokens. Use narrow date ranges when possible.

Parameters:

| Name | Type | Description |
|------|------|-------------|
| `start` | string | Start date (`YYYY-MM-DD`) |
| `end` | string | End date (`YYYY-MM-DD`) |
| `type` | string | Session type: `cashgame`, `tournament`, `payout`, `costs`, `casinogame`, `jackpot` (comma-separated) |
| `currency` | string | ISO currency codes (comma-separated) |
| `staking` | boolean | Filter by staking sessions |

All parameters are optional.

Example:

```text
get_sessions({ start: "2026-03-01", end: "2026-03-31", type: "cashgame" })
```

### `get_stats`

Compute aggregate statistics: total profit, win rate, average session profit, total sessions, breakdowns by location/stakes/month.

Takes the same filter parameters as `get_sessions`.

Example:

```text
get_stats({ start: "2026-01-01", type: "cashgame" })
```

## API Notes

- Rate limit: 20 requests per 15 minutes.
- Base URL: `https://api.pokerbankrolltracker.net/v1`
- Auth: Bearer token via `PBT_API_KEY`
- Client cache: responses cached for 10 seconds to reduce API usage.

## Development

```bash
git clone https://github.com/0xAndoroid/poker-bankroll-tracker-mcp.git
cd poker-bankroll-tracker-mcp
npm install
npm run build
```

```bash
npm run dev        # Watch mode
npm test           # Run tests
npm run lint       # Lint with oxlint
npm run format     # Format with oxfmt
```

## License

MIT

TDQS

A4/5.0

Scored across 2 tools

Disambiguation5/5

get_sessions retrieves individual session records with filters, while get_stats computes aggregate metrics. Their purposes are clearly distinct and unlikely to be confused.

Naming Consistency5/5

Both tools follow a consistent get_<plural> pattern, which is predictable and easy to understand. There's no mixing of styles or vague verbs.

Tool Count3/5

With only 2 tools, the server feels thin for a tracker. While the two tools are well-focused, the small number suggests the surface may be underdeveloped for broader use.

Completeness2/5

The tool surface only supports reading and analysis of sessions. There are no tools to create, update, or delete sessions, which are core to managing a bankroll. This is a significant gap that prevents agents from maintaining data.

Maintenance

ActivityMaintained
ResponsivenessNo issues