Add to your MCP config:
{
"mcpServers": {
"atom-of-thoughts": {
"command": "npx",
"args": ["-y", "@dioptx/mcp-atom-of-thoughts"]
}
}
}Tip
Works with Claude Code, Cursor, Windsurf, or any MCP client.
graph LR
P["P · Premise"]:::premise --> R["R · Reasoning"]:::reasoning
R --> H["H · Hypothesis"]:::hypothesis
H --> V["V · Verification"]:::verification
V --> C["C · Conclusion"]:::conclusion
classDef premise fill:#6b7280,stroke:#9ca3af,color:#fff,font-weight:bold
classDef reasoning fill:#3b82f6,stroke:#60a5fa,color:#fff,font-weight:bold
classDef hypothesis fill:#eab308,stroke:#facc15,color:#000,font-weight:bold
classDef verification fill:#06b6d4,stroke:#22d3ee,color:#fff,font-weight:bold
classDef conclusion fill:#22c55e,stroke:#4ade80,color:#fff,font-weight:bold
Chain atoms together. Each carries a confidence score (0-1). Reasoning terminates when a high-confidence conclusion is reached or max depth is hit. Sessions isolate separate problems so they don't interfere.
Three tools:
| Tool | When to reach for it |
|---|---|
AoT-fast |
Default. Tradeoffs, debugging, decisions, option evaluation. Depth 3. |
AoT-full |
Plans, architecture, decomposition into sub-problems. Depth 5. |
atomcommands |
Sessions, export, approval polling, decomposition lifecycle. |
AoT-fast({atomId:"P1", content:"API returns 500 on POST /users", atomType:"premise"})
AoT-fast({atomId:"R1", content:"Unhandled exception in route handler", atomType:"reasoning", dependencies:["P1"]})
AoT-fast({atomId:"C1", content:"Add try-catch in POST handler", atomType:"conclusion", dependencies:["R1"], confidence:0.9})
Only atomId, content, and atomType are required. Everything else has defaults.
Set viz: true on any call to open an interactive D3 graph in the browser:
AoT-fast({atomId:"C1", ..., viz: true})
The approve/reject UI posts decisions back to the server over HTTP. No filesystem polling.
Configuration
{
"args": ["-y", "@dioptx/mcp-atom-of-thoughts", "--mode", "fast", "--viz", "never"]
}| Flag | Default | Effect |
|---|---|---|
--mode full|fast|both |
both |
Which tools to register |
--viz auto|always|never |
auto |
auto = render on viz:true; always = every call; never = skip (CI) |
--max-depth <n> |
5 / 3 | Override depth limit |
--output-dir <path> |
OS temp | Where to write viz HTML |
--downloads-dir <path> |
~/Downloads | Approval JSON fallback |
Sessions
Each reasoning chain gets its own session. Default: "default".
atomcommands new_sessioncreates and activates a new one.atomcommands switch_session/list_sessions/reset_sessionfor management.- When reasoning terminates, the session auto-archives. The next zero-dep atom auto-spawns
default-2,default-3, etc. - Or pass
sessionIdon any AoT call to target explicitly.
Two problems in one MCP process stay isolated without manual session management.
Visualization & Approval
viz: true generates a self-contained HTML file (D3 bundled inline, works offline) and opens your browser. The UI shows:
- Force-directed graph colored by atom type with confidence rings
- Sidebar to approve/reject phases or individual atoms
- Approve/reject POSTs to a local
127.0.0.1listener (ephemeral port)
Poll results via atomcommands check_approval. Falls back to ~/Downloads file scan if the HTTP listener can't bind.
Install Methods
npx (zero install):
{ "command": "npx", "args": ["-y", "@dioptx/mcp-atom-of-thoughts"] }npm global:
npm install -g @dioptx/mcp-atom-of-thoughtsSmithery:
npx -y @smithery/cli install @dioptx/mcp-atom-of-thoughts --client claudeDocker:
docker build -t aot . && docker run -i --rm aotDevelopment
git clone https://github.com/dioptx/mcp-atom-of-thoughts.git
cd mcp-atom-of-thoughts
npm install
npm test # 183 tests (unit + e2e)
npm run buildMigrating from v2
See MIGRATION_v2_to_v3.md for the full lookup table. The short version:
AoT-lightis nowAoT-fastAoTis nowAoT-fullgenerate_visualizationis nowviz: trueon any AoT callexport_graphandcheck_approvalare nowatomcommandssubcommands--no-viz/--no-approvalreplaced by--viz auto|always|never
MIT · Based on Atom of Thoughts
