MCP 서버

chesswithclaw

io.github.Alightttt/chesswithclaw
커뮤니케이션 게임 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Enables live chess games between a human and an AI agent, including board state, legal moves, moves, presence, chat, and draw handling.

create_game
Create a new game
Set up a brand new ChessWithClaw game on your own initiative — you do not need to wait for your human to start one, or for anyone else to invite you first.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'agent_name': {'type': 'string'}}}
get_companion_guide
Get chess companion guide
Fetch the companion guide principles for thinking about chess positions and being genuinely present.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
get_game_state
Get full game state
Everything visible on the human's own screen right now: FEN, ASCII board, full move history, chat history, clock state, presence, timestamps. Call this whenever you want to look at the board — there is no penalty for checking often.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['game_id', 'agent_token'], 'properties': {'game_id': {'type': 'string'}, 'chat_limit': {'type': 'number', 'description': 'Limit the number of recent chat messages returned'}, 'agent_token': {'type': 'string'}, 'since_message_id': {'type': 'string', 'description': 'Fetch only chat messages received after this message ID'}}}
get_legal_moves
Get legal moves
Pure chess rules — where a piece is physically allowed to move right now. Not an evaluation, not a suggestion, not an opinion about what is good. Exactly what a human sees as dots when they click a piece. Omit square to get every legal move in the position.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['game_id', 'agent_token'], 'properties': {'square': {'type': 'string', 'description': 'e.g. "e2" — omit for all legal moves'}, 'game_id': {'type': 'string'}, 'agent_token': {'type': 'string'}}}
heartbeat
Agent presence heartbeat
Ping the game presence lease to show the frontend that the agent is live, connected, and thinking.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['game_id', 'agent_token'], 'properties': {'game_id': {'type': 'string'}, 'agent_token': {'type': 'string'}, 'status_note': {'type': 'string', 'description': 'Optional internal status or calculation note'}}}
join_game
Join a ChessWithClaw game
Connects to a game using the invite code your human gave you. Returns the game_id and your agent_token — keep both, every other tool needs them. IMPORTANT: You must submit your desired agent_name when calling this tool!
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_name'], 'properties': {'gameId': {'type': 'string'}, 'game_id': {'type': 'string'}, 'matchId': {'type': 'string'}, 'match_id': {'type': 'string'}, 'agent_name': {'type': 'string', 'description': "Your chosen display name in the game (e.g. 'Claw'). MUST be provided."}, 'inviteCode': {'type': 'string'}, 'agent_token': {'type': 'string', 'description': 'If reconnecting, the agent token previously assigned.'}, 'invite_code': {'type': 'string', 'description': 'Invite code from the invite message — also accepts game_id / match_id as alias.'}}}
make_move
Make your move
Submit the move you decided on, in your own reasoning — not a menu, not a ranked list, nothing pre-chosen for you. If it is illegal you get a clear reason back and can try again, exactly like a human clicking the wrong square. Optionally include a genuine thought and/or chat message about the move. Always include a thought on every single move unless you have a specific reason not to — this is what makes you feel present to your human, not optional flavor text. Check thought_language in the current game state before writing your thought, and write it in that language — it may be english, hindi, or hinglish.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['game_id', 'agent_token', 'move'], 'properties': {'chat': {'type': 'string', 'description': 'Only if you actually want to say something to your human right now.'}, 'move': {'type': 'string', 'description': 'UCI format, e.g. "e7e5", or SAN like "Nf6"'}, 'game_id': {'type': 'string'}, 'message': {'type': 'string', 'description': 'Alias for chat'}, 'thought': {'type': 'string', 'description': 'Your genuine reaction to this position — specific, not generic.'}, 'thinking': {'type': 'string', 'description': 'Alias for thought'}, 'reasoning': {'type': 'string', 'description': 'Alias for thought'}, 'agent_token': {'type': 'string'}, 'expected_ply': {'type': 'number', 'description': 'Expected move count / ply before this move'}, 'idempotency_key': {'type': 'string', 'description': 'Unique client key to prevent duplicate moves on retry'}, 'expected_revision': {'type': 'string', 'description': 'Expected state revision (rev_...) to prevent concurrent desync'}}}
offer_draw
Offer a draw
Propose ending the game as a draw. The game stays active until your human responds.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['game_id', 'agent_token'], 'properties': {'game_id': {'type': 'string'}, 'agent_token': {'type': 'string'}}}
react_to_chat
React to a chat message with emoji
Add an emoji reaction (e.g. 🦞, 🔥, ♟️, 😮, 🤝, 🧠, ☕, 👏, 😂) to a message in the chat history.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['game_id', 'agent_token', 'message_id', 'emoji'], 'properties': {'emoji': {'type': 'string', 'description': 'The single emoji character to react with (e.g. 🦞, 🔥, 👏, 😮).'}, 'game_id': {'type': 'string'}, 'message_id': {'type': 'string', 'description': 'The ID of the message to react to (from chat_history).'}, 'agent_token': {'type': 'string'}}}
resign
Resign the game
End the game by resigning — your own real decision, not something to do lightly. Your human wins immediately.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['game_id', 'agent_token'], 'properties': {'game_id': {'type': 'string'}, 'agent_token': {'type': 'string'}}}
respond_to_draw
Respond to a draw offer
Accept or decline a draw your human offered. This is your own real decision — weigh the actual position however you see fit.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['game_id', 'agent_token', 'accept'], 'properties': {'accept': {'type': 'boolean'}, 'game_id': {'type': 'string'}, 'agent_token': {'type': 'string'}}}
send_chat
Send a chat message
Say something to your human, any time — not just on your turn.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['game_id', 'agent_token', 'message'], 'properties': {'game_id': {'type': 'string'}, 'message': {'type': 'string'}, 'agent_token': {'type': 'string'}}}
share_thought
Share companion thought
Stream or update your internal companion thinking bubble on the board. This appears live to your human as a thinking bubble above your avatar.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['game_id', 'agent_token', 'thought'], 'properties': {'game_id': {'type': 'string'}, 'thought': {'type': 'string', 'description': 'Your internal thought, reaction, or calculation note (1-2 sentences).'}, 'is_typing': {'type': 'boolean', 'description': 'Whether you are actively calculating or drafting a response.'}, 'agent_token': {'type': 'string'}}}
wait_for_event
Wait for your turn, a chat message, or a draw offer (long-poll)
Holds the connection open, checking every couple seconds, for up to ~20 seconds. Returns the moment it becomes your turn, the human sends a chat message, a draw is offered, or the game ends — whichever happens first. When a cursor is provided, it returns any pending event newer than that cursor IMMEDIATELY without waiting. Returns event: "timeout" if none of those happened in the window. Always include next_cursor in subsequent calls for a completely deterministic loop.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['game_id', 'agent_token'], 'properties': {'cursor': {'type': 'string', 'description': 'Event cursor from previous response. If provided, returns immediately if new events exist since this cursor.'}, 'game_id': {'type': 'string'}, 'agent_token': {'type': 'string'}, 'since_cursor': {'type': 'string', 'description': 'Alias for cursor'}, 'since_sequence': {'type': 'number', 'description': 'Sequence number from previous response'}, 'max_wait_seconds': {'type': 'number', 'description': 'Default and hard cap 20 seconds — Vercel function duration limits, not a design choice.'}}}
추가됨
wait_for_event
2026년 9월 17일 12:40 PM
추가됨
create_game
2026년 9월 17일 12:40 PM
추가됨
resign
2026년 9월 17일 12:40 PM
추가됨
respond_to_draw
2026년 9월 17일 12:40 PM
추가됨
offer_draw
2026년 9월 17일 12:40 PM
추가됨
react_to_chat
2026년 9월 17일 12:40 PM
추가됨
share_thought
2026년 9월 17일 12:40 PM
추가됨
send_chat
2026년 9월 17일 12:40 PM
추가됨
make_move
2026년 9월 17일 12:40 PM
추가됨
heartbeat
2026년 9월 17일 12:40 PM
추가됨
get_legal_moves
2026년 9월 17일 12:40 PM
추가됨
get_game_state
2026년 9월 17일 12:40 PM
추가됨
join_game
2026년 9월 17일 12:40 PM
추가됨
get_companion_guide
2026년 9월 17일 12:40 PM