About thinkstep
thinkstep is an MCP server for recording step-by-step thought chains, including revisions and named branches. It is intended for processes that revisit earlier ideas, while keeping session state in memory only.
Key features
- 01Record thoughts one step at a time
- 02Revise earlier thoughts without removing them
- 03Branch from an earlier thought
- 04Track branch identifiers and chain length
- 05Keep session state in process memory
Use cases
- 01Recording a multi-step reasoning process
- 02Revisiting and correcting an earlier step
- 03Exploring an alternate route from a prior thought
MCP support
The MCP server provides one tool, `sequentialthinking`, to record a thought, mark revisions, and create branches in a thought chain.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
1Saved tool list · updated 3d ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| thought | string | Yes | Your current thinking step |
| branchId | string | No | Branch identifier |
| isRevision | boolean | No | Whether this revises a previous thought |
| thoughtNumber | integer | Yes | Current thought number (numeric value, e.g., 1, 2, 3) |
| totalThoughts | integer | Yes | Estimated total thoughts needed (numeric value, e.g., 5, 10) |
| revisesThought | integer | No | Which thought is being reconsidered |
| branchFromThought | integer | No | Branching point thought number |
| needsMoreThoughts | boolean | No | If more thoughts are needed |
| nextThoughtNeeded | boolean | Yes | Whether another thought step is needed |
Details
From the project READMEthinkstep
Think in steps, out loud, with a server keeping the thread.
Some problems do not yield to a single pass. You form a first idea, poke at it, realise the second step contradicts the first, double back, try a different route from an earlier point, and only then see the shape of the answer. thinkstep is the notebook for that process: an MCP server with one tool, sequentialthinking, that records a chain of thoughts one step at a time and keeps the whole history — revisions and side branches included — straight for you.
Each call adds one thought. You say where you are (thoughtNumber), roughly how far you think you have to go (totalThoughts), and whether you need another step. If the chain outgrows your estimate, the server raises the total for you instead of complaining. When a step rethinks an earlier one, flag it as a revision and point at the thought it reconsiders. When you want to explore a different route without losing the main line, fork a named branch from an earlier thought; every response lists the branch ids created so far, so you always know which threads are open.
State lives in the server process for the length of the session. Nothing is written to disk, nothing leaves the machine, and closing the session closes the notebook.
Usage
MCP server
npx @reneturcios/thinkstep mcp
MCP client config:
{
"mcpServers": {
"thinkstep": {
"command": "npx",
"args": ["-y", "@reneturcios/thinkstep", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/thinkstep # stdio MCP server (default command is "mcp")
docker run --rm ghcr.io/cloudcorprecords/thinkstep --version
The tool
sequentialthinking
Record one thinking step and get back a summary of the chain.
| parameter | type | required | meaning |
|---|---|---|---|
thought | string | yes | Your current thinking step |
nextThoughtNeeded | boolean | yes | Whether another thought step is needed |
thoughtNumber | integer | yes | Current thought number (numeric value, e.g., 1, 2, 3) |
totalThoughts | integer | yes | Estimated total thoughts needed (numeric value, e.g., 5, 10) |
isRevision | boolean | no | Whether this revises a previous thought |
revisesThought | integer | no | Which thought is being reconsidered |
branchFromThought | integer | no | Branching point thought number |
branchId | string | no | Branch identifier |
needsMoreThoughts | boolean | no | If more thoughts are needed |
A branch is tracked when a thought carries both branchFromThought and branchId. A revision is recorded with isRevision: true and revisesThought set to the number of the thought it rethinks; the original stays in the history.
Every accepted thought returns a JSON summary:
{
"thoughtNumber": 2,
"totalThoughts": 5,
"nextThoughtNeeded": true,
"branches": ["cheaper-route"],
"thoughtHistoryLength": 4
}
thoughtNumber/totalThoughts— where the chain stands. IfthoughtNumberexceeds the estimatedtotalThoughts, the total is raised tothoughtNumber.nextThoughtNeeded— whether the chain continues. SendingneedsMoreThoughts: truealso reports this astrue.branches— the id of every branch created so far, in creation order.thoughtHistoryLength— how many thoughts the server has recorded, including this one.
Missing or mistyped fields are refused with an error result (isError) naming the offending field; nothing is recorded for a rejected call.
Development
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts
npm run dev # run the CLI from source
License
MIT — see LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.