Skip to main content
Glama
Valerio357

bet-mcp

by Valerio357
README.md
# bet-mcp

MCP server (FastMCP + TypeScript) that focuses on Serie A pre-match analysis:

- `fixtures_list` – next fixtures in a configurable window
- `match_snapshot` – last 5 results, standings, GF/GA averages
- `odds_prematch` – normalized odds for 1X2 / OU 2.5 / BTTS across bookmakers
- `fair_compute` – Poisson-lite probabilities + fair odds
- `value_detect` – top value picks by comparing best odds vs fair model

## Getting started

1. Install dependencies (Node 20+ recommended):

   ```bash
   npm install
   ```

2. Copy `.env.example` to `.env` and provide your keys:

   ```bash
   cp .env.example .env
   # edit the file with FOOTBALL_DATA_TOKEN and ODDS_API_KEY
   ```

3. Run locally:

   ```bash
   # stdio (Claude Desktop / terminal)
   npm run dev

   # or HTTP transport for remote testing
   MCP_TRANSPORT=http PORT=8080 npm run dev
   ```

4. Build for production:

   ```bash
   npm run build
   npm start
   ```

5. Deploy on [glama.ai](https://glama.ai):

Glama uses the included `glama.yaml`/`glama.json` files to run `npm install && npm run build`, then starts the server with `MCP_TRANSPORT=http` on port `8080`. Configure `FOOTBALL_DATA_TOKEN` and `ODDS_API_KEY` (others optional) in the Glama dashboard so inspections and tool detection can succeed.

## Implementation notes

- **Stack** – FastMCP + Axios + Zod, TypeScript strict mode.
- **API clients** – Football-Data.org for fixtures/stats; The Odds API for consolidated odds.
- **Modeling** – Poisson using GF/GA averages + configurable home advantage, derived OU/BTTS probs.
- **Caching** – In-memory TTL cache to reduce API calls (configurable via `CACHE_TTL_SECONDS`).
- **Value picks** – Filters by `edge >= 5%` and `odds >= 1.50`, returns rationale referencing λ/form.

## Environment variables

| key | description |
| --- | --- |
| `FOOTBALL_DATA_TOKEN` | Football-Data.org API token |
| `FOOTBALL_DATA_COMPETITION` | Defaults to `SA` |
| `FOOTBALL_DATA_SEASON` | Defaults to current year |
| `ODDS_API_KEY` | The Odds API key |
| `ODDS_API_REGION` | Regions filter (default `eu`) |
| `ODDS_API_MARKETS` | Markets request list (default `h2h,totals,btts`) |
| `ODDS_API_SPORT` | Sport key (`soccer_italy_serie_a`) |
| `HOME_ADVANTAGE_FACTOR` | Poisson λ multiplier for home team |
| `CACHE_TTL_SECONDS` | Cache TTL (default 120) |
| `MCP_TRANSPORT` | `stdio` (default) or `http` |
| `PORT` | HTTP port when `MCP_TRANSPORT=http` |

## Testing

Use `npx fastmcp dev src/index.ts` or `npx fastmcp inspect src/index.ts` after installing dependencies to interactively test the tools.

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: fair.compute calculates fair odds, fixtures.list shows upcoming matches, match.snapshot provides team form and stats, odds.prematch lists market odds, and value.detect identifies value bets. The descriptions are specific and unambiguous, making it easy for an agent to select the right tool.

Naming Consistency5/5

All tool names follow a consistent dot-separated pattern (e.g., fair.compute, fixtures.list) with a clear category.action structure. This predictable naming convention enhances readability and usability across the tool set.

Tool Count5/5

With 5 tools, the server is well-scoped for its betting/soccer analysis domain. Each tool serves a unique and essential function, from data retrieval to analysis, without being overly sparse or bloated, making the count appropriate for the purpose.

Completeness4/5

The tool set covers core workflows for betting analysis: fetching fixtures, getting match stats, computing fair odds, retrieving market odds, and detecting value bets. A minor gap is the lack of tools for in-play odds or historical data, but agents can work around this with the provided tools.

Maintenance

ActivityInactive
ResponsivenessNo issues