Skip to main content
Glama
spences10

mcp-sequentialthinking-tools

by spences10

mcp-sequentialthinking-tools

CI built with vite+ tested with vitest

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 step

  • thought_number — current step number

  • total_thoughts — current estimate; automatically raised if lower than thought_number

  • next_thought_needed — whether another thought is needed

Optional parameters:

  • session_id — history bucket; defaults to default

  • is_revision, revises_thought

  • branch_from_thought, branch_id

  • needs_more_thoughts

  • available_tools — array of tool names or { name, description } objects

  • recommended_tools — model-authored recommendations to validate/store

  • remaining_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 to default

  • branch_id — optional branch filter

  • limit — max records to return; default 50, max 500

clear_thinking_history

Clears one session or every session.

Parameters:

  • session_id — defaults to default

  • all_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 check

This project uses vite-plus for build, test, format, and lint orchestration.

Publishing

pnpm changeset
pnpm changeset version
pnpm release

License

MIT License — see LICENSE.

Acknowledgments

Available Tools

3 tools
clear_thinking_historyClear recorded sequential-thinking history for one session or all sessions.C

Clear recorded sequential-thinking history for one session or all sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoHistory bucket to clear
all_sessionsNoClear every history bucket

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose2/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum records to return; default 50
branch_idNoOptional branch filter
session_idNoHistory bucket to inspect

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose2/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
thoughtYesCurrent thinking step
branch_idNoBranch identifier
session_idNoOptional history bucket. Defaults to "default".
is_revisionNoWhether this revises a thought
thought_numberYesCurrent thought number
total_thoughtsYesCurrent estimate of total thoughts needed
available_toolsNoOptional tool names/descriptions used only to validate recommendations
remaining_stepsNoOptional high-level remaining steps
revises_thoughtNoThought revised
recommended_toolsNoOptional tool plan authored by the model; validated if available_tools is supplied
branch_from_thoughtNoThought number this branch starts from
needs_more_thoughtsNoSet when the estimate was too low
next_thought_neededYesWhether another thought is needed

TDQS

C2.7/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose2/5

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.

Usage Guidelines2/5

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.

  1. 3 tool updatesv0.1.1
    • Addedclear_thinking_history
    • Addedget_thinking_history
    • Changedsequentialthinking_tools15 fields changed
      • removedInput schema / properties / available_mcp_tools
        Removed value: -{
        -  "description": "Array of MCP tool names available for use (e.g., [\"mcp-omnisearch\", \"mcp-turso-cloud\"])",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • addedInput schema / properties / available_tools
        Added 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"
        +}
      • changedInput schema / properties / branch_from_thought / description
        Previous value: -"Branching point thought number"New value: +"Thought number this branch starts from"
      • removedInput schema / properties / current_step
        Removed 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"
        -}
      • changedInput schema / properties / is_revision / description
        Previous value: -"Whether this revises previous thinking"New value: +"Whether this revises a thought"
      • changedInput schema / properties / needs_more_thoughts / description
        Previous value: -"If more thoughts are needed"New value: +"Set when the estimate was too low"
      • changedInput schema / properties / next_thought_needed / description
        Previous value: -"Whether another thought step is needed"New value: +"Whether another thought is needed"
      • removedInput schema / properties / previous_steps
        Removed 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"
        -}
      • addedInput schema / properties / recommended_tools
        Added 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"
        +}
      • changedInput schema / properties / remaining_steps / description
        Previous value: -"High-level descriptions of upcoming steps"New value: +"Optional high-level remaining steps"
      • changedInput schema / properties / revises_thought / description
        Previous value: -"Which thought is being reconsidered"New value: +"Thought revised"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "description": "Optional history bucket. Defaults to \"default\".",
        +  "type": "string"
        +}
      • changedInput schema / properties / thought / description
        Previous value: -"Your current thinking step"New value: +"Current thinking step"
      • changedInput schema / properties / total_thoughts / description
        Previous value: -"Estimated total thoughts needed"New value: +"Current estimate of total thoughts needed"
      • changedInput schema / required
        Previous value: -[
        -  "available_mcp_tools",
        -  "thought",
        -  "next_thought_needed",
        -  "thought_number",
        -  "total_thoughts"
        -]New value: +[
        +  "thought",
        +  "thought_number",
        +  "total_thoughts",
        +  "next_thought_needed"
        +]
  2. 1 tool updatev1.0.0
    • Changedsequentialthinking_tools7 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • changedInput schema / properties / branch_from_thought / type
        Previous value: -"integer"New value: +"number"
      • addedInput schema / properties / current_step / properties / recommended_tools / items / properties / suggested_inputs / additionalProperties
        Added value: +{}
      • addedInput schema / properties / previous_steps / items / properties / recommended_tools / items / properties / suggested_inputs / additionalProperties
        Added value: +{}
      • changedInput schema / properties / revises_thought / type
        Previous value: -"integer"New value: +"number"
      • changedInput schema / properties / thought_number / type
        Previous value: -"integer"New value: +"number"
      • changedInput schema / properties / total_thoughts / type
        Previous value: -"integer"New value: +"number"
  3. 1 tool update
    • First observedsequentialthinking_tools

TDQS

B3/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency3/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A 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.
    1
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    2
    Apache 2.0