An MCP server for playing Bingo with interactive UI widget, supporting game state management, number drawing, and board synchronization
Four tools with Japanese descriptions and basic schemas. All tools have input schemas and descriptions present, but descriptions are terse (avg ~60 chars, well below the 194-char baseline). Parameter descriptions are minimal or absent. No error handling guidance, no recovery paths, and no output schema documentation visible. Tools lack English descriptions, limiting accessibility. Schemas use Zod but lack detailed type constraints and validation rules in descriptions. No tool annotations (readOnlyHint/destructiveHint/idempotent). Naming is verb-based but generic (start_, sync_, reset_, draw_) without clear domain context.
番号を抽選。次の番号を1つ抽選する(チャットからの「次引いて」用)。引いた番号はカードにあれば自動でマークされる。ユーザーにタップを促さず、戻り文(カードにあったか・リーチ/ビンゴ)をそのまま伝えること。
リセット。ゲームを初期化する。
ビンゴを開始。ビンゴ盤面を開く。既存があれば再開、無ければ新規。
状態同期。ウィジェットからゲーム状態を保存する(抽選/マークの度に呼ばれる)。
Descriptions are terse (25 - 40 chars) and lack WHEN/WHY context. 'リセット。ゲームを初期化する。' (Reset. Initialize game.) does not explain when to call it vs start_bingo or when it's safe to retry. LLMs cannot distinguish intent.
No output schema documentation. Tools return GameState but the response structure is not formally documented in the tool definition. LLMs cannot plan downstream calls or extract fields reliably.
Parameter descriptions are missing or trivial. 'mode' in start_bingo has a description ('Game mode: resume existing game or start fresh') but 'state' in sync_state lacks detail on what fields are required, constraints, or validation rules.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2025-06-18+ | v2 |
No error handling or recovery guidance. If draw_number is called when remain.length === 0, it returns a text message but does not guide the LLM on what to do next (retry, reset, or ask user). No error classification (retryable vs fatal).
No tool annotations. All four tools modify state (WRITE risk) but lack destructiveHint or idempotentHint annotations. LLMs cannot determine retry safety or whether operations are reversible.