drio
Open app

puzzlebox

Source

An MCP server that hosts finite state machines as dynamic resources that multiple clients can subscribe to and be updated when their state changes.

Catalog onlyCatalog onlySTDIO

Overview

Puzzlebox is an MCP server that hosts dynamically configurable finite state machines (FSMs) for managing agent and team process states, allowing clients to subscribe and receive updates when their state changes.

To use Puzzlebox, clients connect to the server, register puzzles, and perform actions on these puzzles to change their states. Clients can subscribe to receive notifications about state changes.

  • Manages multiple finite state machines as dynamic resources. - Allows clients to subscribe/unsubscribe to individual puzzle states. - Provides tools for adding puzzles, getting snapshots of their states, and performing actions that trigger state transitions.
  1. Coordinating complex workflows among multiple agents.
  2. Managing project states in software development.
  3. Enabling real-time updates for collaborative tasks.

Add to your AI client

Use these steps to connect puzzlebox in Cursor, Claude, VS Code, and other MCP-compatible apps. The same JSON appears in the Use with menu above for one-click copy.

Cursor

Add this to your .cursor/mcp.json file in your project root, then restart Cursor.

.cursor/mcp.json

{
  "mcpServers": {
    "puzzlebox-cliffhall": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-puzzlebox-cliffhall"
      ]
    }
  }
}

Claude Desktop

Add this server entry to the mcpServers object in your Claude Desktop config, then restart the app.

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)

{
  "mcpServers": {
    "puzzlebox-cliffhall": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-puzzlebox-cliffhall"
      ]
    }
  }
}

Claude Code

Add this to your project's .mcp.json file. Claude Code will detect it automatically.

.mcp.json (project root)

{
  "mcpServers": {
    "puzzlebox-cliffhall": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-puzzlebox-cliffhall"
      ]
    }
  }
}

VS Code (Copilot)

Add this to your .vscode/mcp.json file. Requires the GitHub Copilot extension with MCP support enabled.

.vscode/mcp.json

{
  "servers": {
    "puzzlebox-cliffhall": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-puzzlebox-cliffhall"
      ]
    }
  }
}

Windsurf

Add this to your Windsurf MCP config file, then restart Windsurf.

~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "puzzlebox-cliffhall": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-puzzlebox-cliffhall"
      ]
    }
  }
}

Cline

Open Cline settings, navigate to MCP Servers, and add this server configuration.

Cline MCP Settings (via UI)

{
  "mcpServers": {
    "puzzlebox-cliffhall": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-puzzlebox-cliffhall"
      ]
    }
  }
}

FAQ

What is a finite state machine?

A finite state machine is a computational model that can be in one of a finite number of states and can change states based on inputs.

How do I add a new puzzle?

You can use the `add_puzzle` tool to create a new instance of a puzzle.

Can I get a snapshot of a puzzle's current state?

Yes, you can use the `get_puzzle_snapshot` tool to retrieve the current state and available actions for a puzzle.7:["$","div",null,{"className":"container mx-auto flex flex-col gap-4","children":["$L26","$L27",["$","$L28",null,{"currentProject":{"id":1813,"uuid":"6156289c-1275-4688-b94f-aacda1d9aa44","name":"puzzlebox","title":"puzzlebox","description":"An MCP server that hosts finite state machines as dynamic resources that multiple clients can subscribe to and be updated when their state changes.","avatar_url":"https://avatars.githubusercontent.com/u/871933?v=4","created_at":"2025-03-05T05:28:41.486Z","updated_at":"2025-03-12T10:20:52.104Z","status":"created","author_name":"cliffhall","author_avatar_url":"https://avatars.githubusercontent.com/u/871933?v=4","tags":"[]","category":"developer-tools","is_featured":false,"sort":1,"url":"https://github.com/cliffhall/puzzlebox","target":"_self","content":"$29","summary":"$2a","img_url":"https://github.com/cliffhall/puzzlebox/raw/main/images/puzzlebox.png","type":null,"metadata":"{\"star\":\"9\",\"license\":\"\",\"language\":\"TypeScript\",\"is_official\":false,\"latest_commit_time\":\"2025-04-10 18:43:56\"}","user_uuid":null,"tools":null,"sse_url":null,"sse_provider":null,"sse_params":null,"is_official":false,"server_command":null,"server_params":null,"server_config":null,"allow_call":false,"is_innovation":false,"is_dxt":false,"dxt_manifest":null,"dxt_file_url":null,"is_audit":false},"randomProjects":[],"currentServerKey":"$undefined"}]]}]