mcp-sequentialthinking-tools
It is a lightweight MCP server for recording, managing, and validating sequential reasoning steps.
Record one thought at a time with session history (
sequentialthinking_tools)Store thought metadata: revisions, branches, next steps, tool recommendations, remaining steps, and more
Validate model-authored recommended tools against an available tool list; invalid recommendations return an error and are not stored
Retrieve stored thinking history by session or branch, with a limit (
get_thinking_history)Clear one session or all sessions (
clear_thinking_history)Provide a guidance prompt for scratchpad/validator use (
sequential-thinking-guidance)Redact prompt-injection-like text and return security warnings
Support per-session
MAX_HISTORY_SIZEand dual stdio transports
The server provides examples of how it can be used to gather information about Svelte 5's universal reactivity as part of its problem-solving approach
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-sequentialthinking-toolshelp me plan how to research and implement a new authentication system"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-sequentialthinking-tools
A lightweight MCP server for recording sequential reasoning steps. It is a scratchpad with history, branching, revision metadata, and optional validation for model-authored tool plans.
It does not discover your other MCP tools and it does not
choose tools for the model. If you pass available_tools and
recommended_tools, the server validates that the recommended names
exist and stores the step.
Why use it?
Use this when a task benefits from explicit, inspectable reasoning:
breaking a messy problem into steps;
revising or branching a plan;
keeping a small reasoning history by session;
validating tool-plan names against a supplied tool list;
clearing or inspecting reasoning history during a long agent run.
Do not use it for trivial requests. It adds overhead.
Related MCP server: Sequential-Thinking
Tools
sequentialthinking_tools
Records one thought.
Required parameters:
thought— current reasoning stepthought_number— current step numbertotal_thoughts— current estimate; automatically raised if lower thanthought_numbernext_thought_needed— whether another thought is needed
Optional parameters:
session_id— history bucket; defaults todefaultis_revision,revises_thoughtbranch_from_thought,branch_idneeds_more_thoughtsavailable_tools— array of tool names or{ name, description }objectsrecommended_tools— model-authored recommendations to validate/storeremaining_steps— short list of upcoming steps
Example:
{
"session_id": "svelte-debug",
"thought": "First inspect the route files, then run the failing check.",
"thought_number": 1,
"total_thoughts": 3,
"next_thought_needed": true,
"available_tools": ["read", "bash"],
"recommended_tools": [
{
"tool_name": "read",
"confidence": 0.9,
"rationale": "Need to inspect the relevant files before editing.",
"priority": 1
}
]
}If recommended_tools contains a name not present in
available_tools, the call returns isError: true and does not store
the thought.
Security posture
The server treats thought text, tool descriptions, rationales, and
remaining-step text as untrusted input. Prompt-injection-like text is
scanned and redacted before it is stored or returned in history. Calls
with redactions include security_warnings showing which fields
matched.
This is defensive filtering, not a guarantee that arbitrary adversarial text is safe. Do not put secrets in thoughts or tool descriptions.
get_thinking_history
Returns stored thoughts for a session.
Parameters:
session_id— defaults todefaultbranch_id— optional branch filterlimit— max records to return; default50, max500
clear_thinking_history
Clears one session or every session.
Parameters:
session_id— defaults todefaultall_sessions— clear all history buckets
Prompt
sequential-thinking-guidance
A short prompt that tells the model how to use this server honestly: as a scratchpad and validator, not as an external reasoning engine.
Configuration
Claude Desktop / compatible MCP clients
{
"mcpServers": {
"mcp-sequentialthinking-tools": {
"command": "npx",
"args": ["-y", "mcp-sequentialthinking-tools"],
"env": {
"MAX_HISTORY_SIZE": "1000"
}
}
}
}MAX_HISTORY_SIZE is per session and defaults to 1000.
The server uses tmcp and includes a small stdio transport that
accepts both standard Content-Length framed MCP messages and
newline-delimited JSON used by older tmcp tooling.
Development
pnpm install
pnpm test
pnpm build
pnpm checkThis project uses vite-plus for build, test, format, and lint
orchestration.
Publishing
pnpm changeset
pnpm changeset version
pnpm releaseLicense
MIT License — see LICENSE.
Acknowledgments
Built on the Model Context Protocol
Adapted from the MCP Sequential Thinking Server
Available Tools
3 toolsclear_thinking_historyClear recorded sequential-thinking history for one session or all sessions.C
Clear recorded sequential-thinking history for one session or all sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | History bucket to clear | |
| all_sessions | No | Clear every history bucket |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for what is clearly a destructive operation. It never states that clearing is irreversible, whether an in-progress thinking session is affected, or whether confirmation/permissions are required — only the verb 'Clear' implies data loss.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the scope qualifier comes at the end but the core action leads. It is efficient, though it duplicates the title almost verbatim, so brevity comes at the cost of added information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations, no output schema, and zero required parameters, the description is too thin. It omits irreversibility, default behavior when neither parameter is supplied, and any return/confirmation semantics an agent needs to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents 'session_id' and 'all_sessions'; baseline is 3. The description's 'one session or all sessions' loosely mirrors the two parameters but adds no format, default, or interaction details (e.g., behavior when both are omitted).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no mention of prerequisites, and no pointer to the sibling get_thinking_history or sequentialthinking_tools. The phrase 'one session or all sessions' hints at the parameter choice but does not tell the agent which situation calls for which scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_thinking_historyReturn recorded thoughts for a session. Use this to inspect or resume prior reasoning.C
Return recorded thoughts for a session. Use this to inspect or resume prior reasoning.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum records to return; default 50 | |
| branch_id | No | Optional branch filter | |
| session_id | No | History bucket to inspect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It implies a read operation ('Return', 'inspect') but says nothing about ordering, truncation, default limits, or what a returned thought record looks like — for a history-retrieval tool with zero annotation coverage this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short front-loaded sentences with no padding. The first sentence duplicates the title verbatim, which is mildly redundant rather than wasteful, so it stays efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter read tool whose schema is fully documented, the description is adequate but thin. With no output schema, it never describes the shape or content of returned thought records, leaving the agent to discover the return format empirically.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, documenting limit, branch_id, and session_id, so the baseline is 3. The description adds no meaning beyond the schema — it does not explain how branch_id interacts with session_id or what the limit default means in practice.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to inspect or resume prior reasoning' gives implied usage context, but there is no explicit when-not guidance and no mention of the alternative clear_thinking_history or sequentialthinking_tools. The agent must infer which tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sequentialthinking_toolsRecord one step of sequential reasoning. Optionally include available_tools and recommended_tools; recommendations are validated, not generated, by this server.C
Record one step of sequential reasoning. Optionally include available_tools and recommended_tools; recommendations are validated, not generated, by this server.
| Name | Required | Description | Default |
|---|---|---|---|
| thought | Yes | Current thinking step | |
| branch_id | No | Branch identifier | |
| session_id | No | Optional history bucket. Defaults to "default". | |
| is_revision | No | Whether this revises a thought | |
| thought_number | Yes | Current thought number | |
| total_thoughts | Yes | Current estimate of total thoughts needed | |
| available_tools | No | Optional tool names/descriptions used only to validate recommendations | |
| remaining_steps | No | Optional high-level remaining steps | |
| revises_thought | No | Thought revised | |
| recommended_tools | No | Optional tool plan authored by the model; validated if available_tools is supplied | |
| branch_from_thought | No | Thought number this branch starts from | |
| needs_more_thoughts | No | Set when the estimate was too low | |
| next_thought_needed | Yes | Whether another thought is needed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose one genuinely non-obvious trait: recommendations are validated, not generated, by this server. However, it omits persistence behavior, whether steps accumulate in a session, and what the recorded step does for subsequent calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact and front-loaded: the core action leads, and the optional-input/validation caveat follows in one clause. No filler sentences, though the text largely mirrors the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter tool with no annotations and no output schema, the description covers purpose and one behavioral trait but says nothing about session persistence, iterative invocation, or return behavior. The rich schema compensates for the parameter gaps, keeping this at a minimum-viable level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 13 parameters, making a 3 the baseline. The description adds only a reinforcing note that recommendations are validated against available_tools rather than invented, which the schema already implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the history siblings, no note that it is meant to be invoked repeatedly to build a chain, and no prerequisites. The only usage-adjacent content is that available_tools and recommended_tools are optional, which is parameter guidance rather than when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.1- Added
clear_thinking_history - Added
get_thinking_history - Changed
sequentialthinking_tools15 fields changed- removed
Input schema / properties / available_mcp_toolsRemoved value: -{ - "description": "Array of MCP tool names available for use (e.g., [\"mcp-omnisearch\", \"mcp-turso-cloud\"])", - "items": { - "type": "string" - }, - "type": "array" -} - added
Input schema / properties / available_toolsAdded value: +{ + "description": "Optional tool names/descriptions used only to validate recommendations", + "items": { + "anyOf": [ + { + "description": "Tool name", + "type": "string" + }, + { + "properties": { + "description": { + "description": "Brief tool description", + "type": "string" + }, + "name": { + "description": "Tool name", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + } + ] + }, + "type": "array" +} - changed
Input schema / properties / branch_from_thought / descriptionPrevious value: -"Branching point thought number"New value: +"Thought number this branch starts from" - removed
Input schema / properties / current_stepRemoved value: -{ - "description": "Current step recommendation", - "properties": { - "expected_outcome": { - "description": "What to expect from this step", - "type": "string" - }, - "next_step_conditions": { - "description": "Conditions to consider for the next step", - "items": { - "type": "string" - }, - "type": "array" - }, - "recommended_tools": { - "description": "Tools recommended for this step", - "items": { - "properties": { - "alternatives": { - "description": "Alternative tools that could be used", - "items": { - "type": "string" - }, - "type": "array" - }, - "confidence": { - "description": "0-1 indicating confidence in recommendation", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "priority": { - "description": "Order in the recommendation sequence", - "type": "number" - }, - "rationale": { - "description": "Why this tool is recommended", - "type": "string" - }, - "suggested_inputs": { - "additionalProperties": {}, - "description": "Optional suggested parameters", - "type": "object" - }, - "tool_name": { - "description": "Name of the tool being recommended", - "type": "string" - } - }, - "required": [ - "tool_name", - "confidence", - "rationale", - "priority" - ], - "type": "object" - }, - "type": "array" - }, - "step_description": { - "description": "What needs to be done", - "type": "string" - } - }, - "required": [ - "step_description", - "recommended_tools", - "expected_outcome" - ], - "type": "object" -} - changed
Input schema / properties / is_revision / descriptionPrevious value: -"Whether this revises previous thinking"New value: +"Whether this revises a thought" - changed
Input schema / properties / needs_more_thoughts / descriptionPrevious value: -"If more thoughts are needed"New value: +"Set when the estimate was too low" - changed
Input schema / properties / next_thought_needed / descriptionPrevious value: -"Whether another thought step is needed"New value: +"Whether another thought is needed" - removed
Input schema / properties / previous_stepsRemoved value: -{ - "description": "Steps already recommended", - "items": { - "properties": { - "expected_outcome": { - "description": "What to expect from this step", - "type": "string" - }, - "next_step_conditions": { - "description": "Conditions to consider for the next step", - "items": { - "type": "string" - }, - "type": "array" - }, - "recommended_tools": { - "description": "Tools recommended for this step", - "items": { - "properties": { - "alternatives": { - "description": "Alternative tools that could be used", - "items": { - "type": "string" - }, - "type": "array" - }, - "confidence": { - "description": "0-1 indicating confidence in recommendation", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "priority": { - "description": "Order in the recommendation sequence", - "type": "number" - }, - "rationale": { - "description": "Why this tool is recommended", - "type": "string" - }, - "suggested_inputs": { - "additionalProperties": {}, - "description": "Optional suggested parameters", - "type": "object" - }, - "tool_name": { - "description": "Name of the tool being recommended", - "type": "string" - } - }, - "required": [ - "tool_name", - "confidence", - "rationale", - "priority" - ], - "type": "object" - }, - "type": "array" - }, - "step_description": { - "description": "What needs to be done", - "type": "string" - } - }, - "required": [ - "step_description", - "recommended_tools", - "expected_outcome" - ], - "type": "object" - }, - "type": "array" -} - added
Input schema / properties / recommended_toolsAdded value: +{ + "description": "Optional tool plan authored by the model; validated if available_tools is supplied", + "items": { + "properties": { + "alternatives": { + "description": "Alternative tool names", + "items": { + "type": "string" + }, + "type": "array" + }, + "confidence": { + "description": "Optional 0-1 confidence score", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "priority": { + "description": "Optional execution order hint", + "minimum": 1, + "type": "number" + }, + "rationale": { + "description": "Why this tool may help", + "type": "string" + }, + "suggested_inputs": { + "additionalProperties": {}, + "description": "Optional suggested tool arguments", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "tool_name": { + "description": "Name of the tool being recommended", + "type": "string" + } + }, + "required": [ + "tool_name" + ], + "type": "object" + }, + "type": "array" +} - changed
Input schema / properties / remaining_steps / descriptionPrevious value: -"High-level descriptions of upcoming steps"New value: +"Optional high-level remaining steps" - changed
Input schema / properties / revises_thought / descriptionPrevious value: -"Which thought is being reconsidered"New value: +"Thought revised" - added
Input schema / properties / session_idAdded value: +{ + "description": "Optional history bucket. Defaults to \"default\".", + "type": "string" +} - changed
Input schema / properties / thought / descriptionPrevious value: -"Your current thinking step"New value: +"Current thinking step" - changed
Input schema / properties / total_thoughts / descriptionPrevious value: -"Estimated total thoughts needed"New value: +"Current estimate of total thoughts needed" - changed
Input schema / requiredPrevious value: -[ - "available_mcp_tools", - "thought", - "next_thought_needed", - "thought_number", - "total_thoughts" -]New value: +[ + "thought", + "thought_number", + "total_thoughts", + "next_thought_needed" +]
1 tool update
v1.0.0- Changed
sequentialthinking_tools7 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - changed
Input schema / properties / branch_from_thought / typePrevious value: -"integer"New value: +"number" - added
Input schema / properties / current_step / properties / recommended_tools / items / properties / suggested_inputs / additionalPropertiesAdded value: +{} - added
Input schema / properties / previous_steps / items / properties / recommended_tools / items / properties / suggested_inputs / additionalPropertiesAdded value: +{} - changed
Input schema / properties / revises_thought / typePrevious value: -"integer"New value: +"number" - changed
Input schema / properties / thought_number / typePrevious value: -"integer"New value: +"number" - changed
Input schema / properties / total_thoughts / typePrevious value: -"integer"New value: +"number"
1 tool update
- First observed
sequentialthinking_tools
TDQS
Scored across 3 tools
The three tools map cleanly to distinct actions on the same resource: write a thought, read the history, and clear it. There is no overlap or risk of misselection between recording, retrieving, and clearing.
get_thinking_history and clear_thinking_history follow a consistent verb_noun pattern, but sequentialthinking_tools breaks it entirely, using a compound noun with no verb and no clear action cue. The mix is readable but not uniform.
Three tools is lean but adequate for a reasoning-history server covering write, read, and clear. It is on the thin side, with no session-listing or search capability to round it out.
The record/get/clear trio covers the basic lifecycle of a thinking log with no dead ends. Minor gaps exist, such as listing sessions or fetching a single thought by id, which agents could work around.
Maintenance
Related MCP Connectors
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server for generating rough-draft project plans from natural-language prompts.
Hybrid human + AI expertise for faster, trusted answers and decisions via MCP Server.
Related MCP Servers
- AlicenseAqualityAmaintenanceThis server facilitates structured problem-solving by breaking down complex issues into sequential steps, supporting revisions, and enabling multiple solution paths through full MCP integration.576 PyPI953MIT
- AlicenseAqualityDmaintenanceA MCP server that implements sequential thinking protocols, provides structured problem-solving methods, decomposes complex problems into manageable steps, and supports iterative optimization and alternative reasoning paths.12Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA sequential thinking tool based on the MCP protocol, used to break down complex problems into manageable steps and provide intelligent tool recommendations for each step.2Apache 2.0
- AlicenseAqualityDmaintenanceA structured problem-solving MCP server that breaks down complex tasks into sequential steps, supports iterative refinement and branching, and helps maintain context and explore alternative reasoning paths.173 npm41MIT