{
  "markdown": "# FutPicks MCP Server\n\nModel Context Protocol server for football data: **probable lineups with a per-player start\nprobability and expected fantasy points**, match analysis, model picks and a public track record —\nLaLiga, Premier League, Serie A, Bundesliga, Ligue 1 and Primeira Liga.\n\nEvery tool calls the public [futpicks.com](https://futpicks.com) REST API over HTTPS. No database\naccess, no shell, no local secrets beyond the API tokens you put in the environment. **The lineup,\nmatch and track-record tools need no key at all.**\n\nThe lineups are graded in public against the confirmed XI, so the accuracy the tools report is\nmeasured, not claimed. Same data as\n[futpicks.com/onces/la-liga](https://futpicks.com/onces/la-liga).\n\n## Quick start\n\nAdd it to any MCP client (Claude Code shown here) — no install step, `npx` fetches it:\n\n```json\n{\n  \"mcpServers\": {\n    \"futpicks\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"futpicks-mcp\"]\n    }\n  }\n}\n```\n\nThen ask for a probable lineup: `flab_teams` to find a club, `flab_matches_upcoming` for the\nfixtures, `flab_match_details` for the projected XI and the model's read of the match.\n\nTo unlock the Pro and admin tools, add the keys:\n\n```json\n{\n  \"mcpServers\": {\n    \"futpicks\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"futpicks-mcp\"],\n      \"env\": {\n        \"FUTPICKS_API_KEY\": \"flab_live_…\"\n      }\n    }\n  }\n}\n```\n\n## Building from source\n\n```bash\ngit clone https://github.com/Khavel/futpicks-mcp.git\ncd futpicks-mcp\nnpm install\nnpm run build      # compiles src/index.ts → dist/index.js\n```\n\nFor local development with hot reload: `npm run dev`.\n\n## Environment variables\n\n| Variable | Required for | Description |\n|----------|--------------|-------------|\n| `FUTPICKS_API_URL` | No | API base URL (default: `https://futpicks.com`) |\n| `FUTPICKS_API_KEY` | Data tools | Data-scope API key (ProTier policy) |\n| `FUTPICKS_OPS_TOKEN` | Ops tools | Ops-scope API key (Admin policy, admin only) |\n\nPublic tools work with no token at all.\n\n### Where to get the tokens\n\nMint API keys from the web app: **futpicks.com → Account → API Keys** (Cuenta → Claves de API).\n\n- `FUTPICKS_API_KEY` — create a **Data**-scope key. It looks like `flab_live_…` and satisfies the\n  Pro-tier (ProTier) endpoints. Pro and admin users can mint these.\n- `FUTPICKS_OPS_TOKEN` — create an **Ops**-scope key. It looks like `flab_ops_…` and satisfies the\n  admin (Ops) endpoints. Only admins can mint these.\n\nThe raw key is shown **once** at creation, so copy it into your environment immediately. Keys are\nstored only as SHA-256 hashes, support optional expiry, and can be revoked from the same screen;\nrevoked or expired keys are rejected with `401`.\n\n## Tools\n\n### Public (no auth)\n\n| Tool | Endpoint | Key params |\n|------|----------|------------|\n| `flab_picks_today` | `GET /api/picks/today` | `date?`, `rating?`, `market?` |\n| `flab_pick_details` | `GET /api/picks/{id}` | `id` |\n| `flab_picks_board` | `GET /api/picks/board` | `date?`, `league?`, `market?`, `rating?`, odds/edge ranges |\n| `flab_matches_today` | `GET /api/matches/today` | — |\n| `flab_match_details` | `GET /api/matches/{id}[/intelligence]` | `id`, `includeIntelligence?` |\n| `flab_matches_upcoming` | `GET /api/matches/upcoming` | `days?` (1–30) |\n| `flab_teams` | `GET /api/teams` | — |\n| `flab_track_record` | `GET /api/track-record/filtered` | `market?`, `league?`, `rating?`, `outcome?`, `from?`, `to?` |\n| `flab_health` | `GET /api/health` | — |\n\n### Data tools (require `FUTPICKS_API_KEY`)\n\n| Tool | Endpoint | Key params |\n|------|----------|------------|\n| `flab_picks_history` | `GET /api/picks/history` | `from?`, `to?`, `league?`, `market?`, `rating?`, `page?`, `pageSize?` |\n| `flab_evaluate_matches` | `GET /api/evaluate/matches` | — |\n| `flab_evaluate_match` | `GET /api/evaluate/{matchId}` | `matchId` |\n| `flab_backtest_run` | `POST /api/backtest/run` | `dateFrom`, `dateTo`, `rating?`, `market?`, `minEdge?`, `leagueId?` |\n| `flab_export_picks` | `GET /api/picks/export` | `from?`, `to?`, `market?`, `rating?` (returns CSV) |\n| `flab_data_catalog` | `GET /api/v1/data` | — |\n\n### Ops tools (require `FUTPICKS_OPS_TOKEN`, admin-only)\n\n| Tool | Endpoint | Key params |\n|------|----------|------------|\n| `flab_ops_run` | `POST /api/v1/ops/operations/{kind}` | `kind`, plus `date?`/`lastDays?`/`windowDays?`/`matchId?` |\n| `flab_ops_status` | `GET /api/v1/ops/operations/{id}[/result]` | `id`, `includeResult?` |\n\n`flab_ops_run` kinds: `ingestion-runs`, `scoring-runs`, `settlement-runs`, `calibration-runs`,\n`intelligence-refreshes`. The server auto-generates an `Idempotency-Key` per ops POST.\n\n## Claude Desktop configuration\n\nAdd to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"footballlab\": {\n      \"command\": \"node\",\n      \"args\": [\"C:/Users/ceja_/Desktop/Desarrollos/Furbov2/mcp-server/dist/index.js\"],\n      \"env\": {\n        \"FUTPICKS_API_URL\": \"https://futpicks.com\",\n        \"FUTPICKS_API_KEY\": \"your-pro-tier-token\",\n        \"FUTPICKS_OPS_TOKEN\": \"your-admin-token\"\n      }\n    }\n  }\n}\n```\n\n## Verify locally\n\n```bash\nnpx @modelcontextprotocol/inspector node dist/index.js\n```\n\nThen call `flab_health` (no token needed) — it should return live system status.\n\n## Security\n\n- No tool reads DB connection strings, appsettings secrets, or shells into the VPS.\n- All inputs are validated with zod; page sizes and ranges are capped server-side.\n- Tokens are read from environment variables only and never logged.\n- Data/ops tools fail with a clear message when their token is missing — they never fall back to an\n  unauthenticated call.\n- Ops mutations send a fresh `Idempotency-Key` so retries are deduplicated by the API.\n",
  "bytes": 5678,
  "sha": "76c4c4bed603a79ae3ad6e408fc7d1c89cb11bf661679c8f564aa156420aeea6",
  "repo_slug": "khavel/futpicks-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_khavel_futpicks_bb06013f/readme"
}