PokerData

by @hft-studio · io.github.hft-studio/pokerdata

GTO poker solver data: NLHE/PLO preflop ranges, postflop strategy, EV. 6-max NL preflop free.

OnlineRemote + local
Category
Developer tools
Connection
Remote (HTTP)
Tools
32 reported
Status
Online

Connect it to your AI

Claude Code

claude mcp add --transport http pokerdata https://pokerdata.io/api/mcp

Claude, ChatGPT, Cursor and other apps

Add it as a custom connector with this URL (Streamable HTTP):

https://pokerdata.io/api/mcp

This server expects extra headers, usually an API key from its maker.

Or run it locally (npm)

claude mcp add pokerdata -- npx -y pokerdata-mcp@1.0.4

Cursor, VS Code and other apps (mcp.json)

{
  "mcpServers": {
    "pokerdata": {
      "url": "https://pokerdata.io/api/mcp"
    }
  }
}

Tools it offers

32 tools, as the server itself reported during our check on Oct 31, 2026.

  • get_startedStart here with a new user. Returns the short set of questions to ask them (game, format, stakes, goal), a menu of what PokerData can do with the tools for each, what is free without a key, and how to file a feature or d
  • submit_requestFile a feature request or data request for the user, after telling them their question isn't covered and they agree. kind "data" is missing coverage (a game, format, stack depth, spot, or solve); kind "feature" is a miss
  • list_my_requestsList the feature and data requests this account has filed, newest first, with their status. Free with any key.
  • list_gamesDiscover covered stack depths and positions. Call this before low-level preflop queries. "nl" = no-limit hold'em 6-max cash (169-grid hands, per-hand EV in small blinds), "nl9" = no-limit hold'em 9-max cash, "nlmtt8" = n
  • get_rangeThe GTO range for one spot. `spot` is an action path of POSITION_ACTION pairs ending in the action whose range you want, e.g. NLHE cash "UTG_60%_HJ_Call", nlmtt8 "UTG_Open", or PLO "UTG_Open_HJ_3B". Add `hand` for one ex
  • get_nodeActions available at a decision node. `history` is an action path ending in the position about to act, e.g. "UTG_60%_HJ". sizeBb is the raise-to in big blinds and sizePctPot is the percent of the pot after calling (nlmtt
  • get_configTable for one preflop game and stack, in big blinds: seats, stacks, blinds (sb 0.5, bb 1), ante, antePostedBy, stackIncludesAnte, openSizes (first-in raise-to), evUnit, evBaseline. Convergence is not published. stackIncl
  • list_spotsSearch valid decision nodes for a stack depth, tagged by depth (1 = RFI, 2 = vs open, 3 = 3-bet pots, …). Compact mode is paginated; use depth, contains, and offset to narrow results without loading thousands of paths. p
  • list_postflop_packsEvery solved postflop pack: preflop line, positions (OOP vs IP), stack, pot, the bet-size trees it is solved under, and the solved boards. Boards use the spaced form ("3h 3d 2s"). NLHE packs list `sizingTrees`: "75" (75%
  • get_postflop_nodeOne postflop solver node: the acting player's strategy for every hand class, the legal next segments, board, reach and the reach-weighted action split. Walk deeper by appending a returned childSegment (an action like "Be
  • explain_comboPreferred tool for exact NLHE postflop hand questions. Returns a canonical context, exact action mix, action EV/loss when available, made-hand and draw classification, blocker facts, and same-rank-class suit comparisons.
  • get_board_reportPreferred tool for board-texture heuristics. Aggregates action frequencies and range/action composition across solved boards in one postflop pack. Results explicitly report sample breadth and use equal weight per board.
  • compare_strategiesPreferred tool for differences between two preflop or postflop contexts. The server fetches both strategies and returns action-frequency/EV deltas plus the largest postflop combo changes, avoiding two large node payloads
  • list_datasetsList preflop datasets in the shipped tree documentation (stacks, positions, whether each bundle was analyzed). Preflop exploitability is not available.
  • get_tree_docsTree documentation for one dataset: coverage note from the shipped README and per-stack bundle or node counts from the shipped index. Does not read or modify range bytes.
  • get_range_metadataIndex metadata for one preflop game, stack, and path: bundle stats for hold'em/PLO bundles, or the matching node row for plo5 and plo6hu. Does not return a strategy and does not invent exploitability.
  • get_exploitabilityPreflop exploitability for a game. No preflop dataset publishes exploitability, convergence, or iteration counts. The answer is not available; this tool never fills in a number.
  • get_postflop_rangeThe range a player takes one flop action with, from a solved pack: hand-class weights ("AA:1,AKs:0.42,...", same format as the preflop ranges) after every earlier flop action on the path. `path` ends in the action whose
  • find_handsFind hands the account has uploaded. Returns hand_id, session_id, handAt, position, cards, game, board, potType, street lines, and netBb. Solver grade buckets are not filled. If this account has no hands, offer the hoste
  • get_hand_resultsPer-hand cumulative results for a winnings curve. `points` is [{ hand, bb }], oldest to newest, downsampled. Pass session_id for one session. If this account has no hands, offer the hosted upload page from get_upload_lin
  • get_session_summaryOne uploaded session's headline numbers: hero, game type, start and end times, hands played, net result in big blinds, and HUD rates (VPIP, PFR, 3-bet, open limp) as percentages with the sample size. Use it after list_my
  • list_my_sessionsRecent uploaded sessions, newest first: id, hero, game type, dates, hands, and net result. game_type matches hole-card count. If this account has no hands, offer the hosted upload page from get_upload_link (https://poker
  • get_tournament_resultsMTT results imported from tournament summary files. Money is in cents. Hand histories are not a source of buy-ins or prizes. If this account has no hands, offer the hosted upload page from get_upload_link (https://pokerd
  • list_my_opponentsTracked opponents from uploaded hands. Each row has handCount, handsVsHero, and heroBb100Vs. Pass name to find one villain.
  • get_opponent_notesLeak notes computed from uploaded hands for one opponent, with the sample size on each line.
  • get_opponent_limp_rangeShown-hand first-in limp range: 169-class counts of hole cards villains showed after an open limp. Pass position for one seat. Sample is showdown-only. This is not a solver range.
  • enqueue_solveRecord a heads-up postflop solve request. Required: title, board, pot (bb), effective_stack (bb). The job stays pending: solver dispatch and billing are not configured, so this does not start a solve.
  • get_queued_solveLook up one queued solve for this account. status is pending, running, done, or failed. solution_id is null until a worker exists.
  • list_queued_solvesList this account's solver-queue jobs, newest first. Jobs are not dispatched.
  • list_library_solutionsFinished postflop solutions saved for this account. None are marked done while dispatch is disabled.
  • get_upload_linkPrimary hand-upload path. Returns https://pokerdata.io/upload on this origin, with a short-lived signed token for the caller's account when signing is configured. Hand the URL to the user. Pasting histories into chat is
  • upload_hand_historySecondary upload path for a small paste. Prefer get_upload_link and the hosted /upload page. Runs the same ingestion pipeline and returns hands parsed, tournaments parsed, and errors. Does not grade solver frequencies.

Questions

What is the PokerData MCP server?

GTO poker solver data: NLHE/PLO preflop ranges, postflop strategy, EV. 6-max NL preflop free. It is made by @hft-studio and listed in the official MCP Registry as io.github.hft-studio/pokerdata. MCP (Model Context Protocol) is the open standard that lets AI apps like Claude, ChatGPT and Cursor use outside tools.

How do I add PokerData to Claude?

In the Claude app or claude.ai, open Settings, then Connectors, choose "Add custom connector" and paste https://pokerdata.io/api/mcp. In Claude Code, run: claude mcp add --transport http pokerdata https://pokerdata.io/api/mcp

How do I add PokerData to ChatGPT?

ChatGPT can use remote MCP servers as connectors. In ChatGPT settings, under Apps and Connectors, turn on developer mode if asked, create a new connector and paste https://pokerdata.io/api/mcp.

How do I add PokerData to Cursor?

Open Cursor settings, go to MCP, choose "Add new MCP server" (or edit ~/.cursor/mcp.json) and add: { "mcpServers": { "pokerdata": { "url": "https://pokerdata.io/api/mcp" } } }

Does PokerData work right now?

Yes. It responded when we last checked on 31 Oct 2026. We check remote MCP servers every day.

What can PokerData do?

It gives your AI 32 tools, including get_started, submit_request, list_my_requests, list_games, get_range. The full list is on this page.

Is this your server? Get the badge for your README
chen.media/mcp badge

Markdown (GitHub README)

[![Listed on chen.media/mcp](https://chen.media/mcp/badge/github-hft-studio-pokerdata.svg)](https://chen.media/mcp/github-hft-studio-pokerdata)

HTML (switches to dark mode on its own)

<a href="https://chen.media/mcp/github-hft-studio-pokerdata"><picture><source media="(prefers-color-scheme: dark)" srcset="https://chen.media/mcp/badge/github-hft-studio-pokerdata.svg?theme=dark"><img src="https://chen.media/mcp/badge/github-hft-studio-pokerdata.svg" alt="Listed on chen.media/mcp" height="40"></picture></a>

More in Developer tools

See all