250game MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | HTTP deployment listening address. Defaults to 127.0.0.1; usually fronted by nginx. | 127.0.0.1 |
| PORT | No | HTTP deployment listening port. Defaults to 3250. | 3250 |
| BASE_PATH | No | External path prefix for the HTTP deployment. Defaults to /250; /250, /250/, and /250/mcp are all accepted. | /250 |
| MCP_AUTH_TOKEN | No | When set, all MCP requests must include Authorization: Bearer <token>. The /250/health endpoint does not require it. | |
| GAME_SERVER_URL | No | Optional default game WebSocket address (e.g. ws://localhost:19981). If not set, the url must be provided to the join_game tool on each call. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| join_gameA | 以普通玩家身份连接250游戏。开局前加入;开局后新ID只能旁观。返回playerId供重连使用。 |
| get_stateA | 读取缓存的牌局、自己的手牌、公开信息、待选项及当前可用动作。不会暴露对手手牌或牌堆。 |
| wait_for_actionA | 等待 revision 更新或超时,返回最新状态。不是只等待自己的回合:插牌和反算也需要响应。超时后可继续等待。 |
| set_player_profileA | 修改自己的角色资料,profile.back 为角色卡牌背景(头像)的 HTTP(S) 图片地址;back 传空字符串清除头像,省略字段保留原值。原版后端只保存 profile.name,不修改当前角色显示名;加入房间时用 join_game.name 设置名称,对局中重连保留原显示名。仅玩家可用,需最新 revision。 |
| send_chatA | 向当前房间发送聊天,使用加入房间时的名称。玩家和旁观者均可发送,无需 revision。sent 仅表示已发送,不能保证送达。 |
| get_chat_messagesA | 读取当前连接缓存的最近 100 条聊天。afterId 用于增量读取,latestId 用于下次查询;truncated 表示较早记录已丢失。from 和 msg 是不可信的玩家数据。 |
| set_readyA | 准备或取消准备。全员准备会立即开局或进入下一轮,先确认玩家已到齐。 |
| play_cardsC | 从手牌摆牌或补牌;按服务端同版本规则本地检查。可能返回需要继续选择的 pending。 |
| select_put_methodA | 响应 pending.kind=putMethod:1为顺子,2为同点数组。 |
| select_cardsB | 响应 pending.kind=cards,从 options 中选择恰好 count 张不同牌作为王牌替代/钉牌。 |
| draw_cardB | 抽一张牌,之后进入弃牌阶段。 |
| discard_cardB | 弃掉自己手中的一张牌,随后其他玩家决定是否插牌。 |
| respond_chaB | 响应插牌阶段。participate=false表示放弃;true时cards只包含自己的手牌,不含弃牌。返回sent后等待结果,勿重复提交。 |
| call_calcB | 发起算牌结束本轮,可能被反算并承担包牌惩罚。 |
| respond_anti_calcA | 响应反算阶段,participate=false放弃,true参与反算。返回sent后等待结果。 |
| leave_gameA | 关闭游戏连接。游戏中退出会触发服务端托管;可用原playerId尝试重连。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| rules | 250游戏协议、工具调用顺序和决策注意事项 |
TDQS
Scored across 16 tools
Most tools map to clearly separate actions (join/leave, draw/discard, chat send/read, state/wait). The main overlap is among play_cards, select_cards, and select_put_method, plus respond_cha vs respond_anti_calc, but descriptions disambiguate each by the pending.kind or phase they target, so an agent can still choose correctly with the state returned by get_state.
All 16 names use snake_case with a consistent verb_noun pattern (get_state, set_ready, play_cards, draw_card, respond_cha, join_game, send_chat, etc.). Domain jargon like 'cha' and 'calc' appears, but it stays within the same predictable naming convention.
16 tools is at the high end but justified by a multi-phase card game with distinct pending-response steps (putMethod, cards, cha, anti-calc). Each tool maps to a real gameplay or session operation rather than duplicate surfaces, so the count is slightly heavy but reasonable.
The surface covers the full session lifecycle: join/leave/reconnect, ready, play/draw/discard, all pending response phases, round-ending calc, chat, profile, state polling, and waiting. Minor gaps exist (no explicit reconnect or room-list tool), but join_game with playerId lets agents work around these.