ttt-mcp — Tic-Tac-Toe MCP Server
A minimal MCP server exposing a tic-tac-toe game as tools, intended to be played by Claude (via Claude Desktop) against a human via chat.
Tools exposed
new_game— reset to empty board, X to moveget_state— return current board + statusmake_move(row, col)— place the current player's mark; server alternates turns
Setup
cd ttt-mcp
npm install
npm run build
Wire it into Claude Desktop
Edit your claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add (or merge into) this:
{
"mcpServers": {
"tic-tac-toe": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/ttt-mcp/dist/index.js"]
}
}
}
Replace the path with your actual absolute path. Then fully quit and restart Claude Desktop.
Verify it loaded
In Claude Desktop, open a new chat and look for the MCP tools indicator (slider/plug icon near the input). You should see tic-tac-toe listed with three tools.
If it's missing, check Claude Desktop's MCP logs:
- macOS:
~/Library/Logs/Claude/mcp*.log
Test outside Claude Desktop
You can poke the server directly with the official inspector:
npm run inspect
This launches a web UI that lets you call the tools manually — handy for debugging.
Playing
In Claude Desktop chat, just say: "Let's play tic-tac-toe. You start."
I'll call new_game, make a move, and we go from there. When it's your turn, tell me your move ("row 1 column 2") and I'll call make_move on your behalf, then take my own turn.
What to add next
- Per-conversation game state (currently single global state)
- AI difficulty levels (right now I just decide moves myself in chat)
- Replay history / undo
- Multiple game rooms
- Web frontend that subscribes to state changes