action_check
Perform a check action in Texas Holdem poker games by specifying the player and table IDs using the MCP server interface.
Instructions
do action check
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes | ||
| table_id | Yes |
Implementation Reference
- src/mcpServer.ts:244-254 (handler)Handler for the 'action_check' MCP tool. Sends a 'performAction' request with action 'check' to the poker server via socket.io, updates view_text with action confirmation, and appends the formatted updated table state after polling until the player is active.else if (request.params.name === "action_check") { response = await sendPokerRequest('performAction', { playerId: args?.player_id, tableId: args?.table_id, action: 'check' }); view_text = `Player ${args?.player_id} action: Check\n Game state:\n`; // Get updated table state view_text += await pollUntilPlayerActive(args?.player_id, args?.table_id); }
- src/mcpServer.ts:78-90 (registration)Registration of the 'action_check' tool in the ListToolsRequestHandler response, including its description and input schema requiring player_id and table_id.{ name: "action_check", description: "do action check", inputSchema: { type: "object", properties: { player_id: { type: "string" }, table_id: { type: "string" }, }, required: ["player_id", "table_id"], }, }, {
- src/mcpServer.ts:174-195 (helper)Helper function used by action_check (and other tools) to send requests to the underlying poker server via socket.io.function sendPokerRequest(method: string, params: any): Promise<any> { return new Promise((resolve, reject) => { const request = { method, params, id: Date.now() }; //console.log(`[Client] Sending request: ${method}`, params); socket.emit('action', request, (response: any) => { //console.log(`[Client] Received response for ${method}:`, response); if (response.error) { console.error(`[Client] Error in ${method}:`, response.error); reject(response.error); } else { resolve(response.result); } }); }); }
- src/mcpServer.ts:148-173 (helper)Helper function used by action_check (and other action tools) to poll the table state until the current player is active, then formats and returns the table state.async function pollUntilPlayerActive(player_id:unknown, table_id:unknown) { let tableState = null; let counter = 0; while(true) { tableState = await sendPokerRequest('getTableState', { playerId: player_id, tableId: table_id }); counter ++; if (counter > 120) { break } const currentPlayer = tableState.players.find((p: any) => p.isActive); if (currentPlayer && currentPlayer.id === player_id) { break; } await sleep(1000); } if (tableState === null) { return ''; } return formatTableState(tableState); }
- src/mcpServer.ts:331-369 (helper)Helper function to format the table state into a readable string, used in the response after action_check.function formatTableState(tableState: any): string { if (!tableState) return "No table state available."; let result = `Table: ${tableState.name} (ID: ${tableState.id})\n`; result += `Stage: ${tableState.stage}\n`; result += `Pot: $${tableState.pot}\n`; result += `Current Bet: $${tableState.currentBet}\n`; // Find the current active player const currentPlayer = tableState.players.find((p: any) => p.isActive); if (currentPlayer) { result += `Current Player: ${currentPlayer.name} (ID: ${currentPlayer.id})\n`; } // Community cards result += `Community Cards: ${tableState.communityCards.join(', ') || 'None'}\n\n`; // Players result += "Players:\n"; tableState.players.forEach((player: any) => { result += `- ${player.name}: $${player.chips} chips`; if (player.isDealer) result += " (Dealer)"; if (player.isSmallBlind) result += " (Small Blind)"; if (player.isBigBlind) result += " (Big Blind)"; if (player.isActive) result += " (Active)"; if (player.folded) result += " (Folded)"; if (player.isAllIn) result += " (All-In)"; result += ` - Bet: $${player.bet}\n`; // Show hand if available if (player.hand && player.hand.length > 0) { result += ` Hand: ${player.hand.join(', ')}\n`; } }); return result; }