@reneturcios/thinkstep
v0.1.0
Published
thinkstep: a step-by-step thinking tool for MCP. Record a chain of thoughts, revise earlier steps, and branch into alternative lines of reasoning while the server tracks history and branches.
Readme
thinkstep
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 mcpMCP 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 --versionThe 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 sourceLicense
MIT — see LICENSE.
