@feniix/pi-sequential-thinking
v5.0.3
Published
Sequential Thinking extension for pi — structured progressive thinking through defined stages, also runnable as an MCP stdio server
Downloads
554
Maintainers
Readme
@feniix/pi-sequential-thinking
Sequential Thinking extension for pi and MCP — structured progressive thinking through defined cognitive stages.
Features
- Process Thought (
process_thought): Record and analyze sequential thoughts with stage metadata. - Session-Scoped History: Use the default session or named
session_idvalues for independent thinking threads. - Get History (
get_thinking_history): Read bounded, paginated session history. - Get Status (
get_thinking_status): Inspect content-free storage/config diagnostics and state fingerprints. - Generate Summary (
generate_summary): Summarize one thinking session. - Clear History (
clear_history): Reset one thinking session. - Export/Import Session (
export_session,import_session): Move session JSON files with validation and receipts. - MCP-Compatible Aliases: Accept snake_case fields and camelCase aliases such as
thoughtNumberandtotalThoughts. - Dynamic Depth: If
thought_numberexceedstotal_thoughts, the incoming thought is normalized to the larger total. - Configurable Output Limits: Client-side byte and line truncation for pi.
- Pi + MCP Adapters: The same portable tools run as a pi extension or stdio MCP server.
- Native TypeScript: No dependency on the original MCP server implementation; the MCP server is packaged with this module.
Install
pi install npm:@feniix/pi-sequential-thinkingEphemeral (one-off) use:
pi -e npm:@feniix/pi-sequential-thinkingMCP Usage
This package also exposes the same tool surface as a stdio MCP server for MCP-aware hosts such as Claude Desktop, Claude Code, and other mcp.json clients.
Run the MCP server directly with npx:
npx -y @feniix/pi-sequential-thinkingThis works because the package exposes a single binary, pi-sequential-thinking-mcp, which npx can infer from the package name.
Example MCP client configuration:
{
"mcpServers": {
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@feniix/pi-sequential-thinking"]
}
}
}Optional MCP environment configuration:
{
"mcpServers": {
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@feniix/pi-sequential-thinking"],
"env": {
"MCP_STORAGE_DIR": "~/.my-thinking-sessions",
"SEQ_THINK_CONFIG_FILE": "~/.config/pi-sequential-thinking.json"
}
}
}
}If your MCP host cannot infer package binaries reliably, use the explicit binary form instead:
npx -y --package @feniix/pi-sequential-thinking pi-sequential-thinking-mcpMCP uses environment variables, the optional SEQ_THINK_CONFIG_FILE JSON file, and pi settings files described below. Pi-only CLI flags such as --seq-think-storage-dir are not read by the MCP stdio server.
Configuration
Default Configuration
Works out of the box. The default session is stored at:
~/.mcp_sequential_thinking/current_session.jsonNamed sessions are stored under:
~/.mcp_sequential_thinking/sessions/<session_id>.jsondefault is reserved as the default-session label and cannot be used as a named session_id.
Environment Variables
export MCP_STORAGE_DIR="~/.my-thinking-sessions"
export SEQ_THINK_MAX_BYTES=102400
export SEQ_THINK_MAX_LINES=5000MCP_STORAGE_DIR affects both pi and MCP storage. SEQ_THINK_MAX_BYTES and SEQ_THINK_MAX_LINES configure pi-side output truncation; the MCP server returns full structured tool output and leaves display truncation to the host.
Settings File
Use pi's standard settings locations:
- project:
.pi/settings.json - global:
~/.pi/agent/settings.json
Under the pi-sequential-thinking key:
{
"pi-sequential-thinking": {
"storageDir": null,
"maxBytes": 51200,
"maxLines": 2000
}
}A standalone config file referenced by --seq-think-config-file or SEQ_THINK_CONFIG_FILE uses the same values at the top level:
{
"storageDir": "~/.my-thinking-sessions",
"maxBytes": 51200,
"maxLines": 2000
}Best practice: use
settings.jsonfor non-secret defaults only. If you want a separate private override file, use--seq-think-config-fileorSEQ_THINK_CONFIG_FILEto point to a custom JSON config file. Legacy aliases--seq-think-configandSEQ_THINK_CONFIGare still accepted but deprecated.
Pi CLI Flags
pi --seq-think-storage-dir=/tmp/thoughts --seq-think-max-bytes=102400These flags apply to the pi extension runtime only. For MCP clients, configure the server through env, SEQ_THINK_CONFIG_FILE, or the settings files above.
Effective Configuration Precedence
For the pi extension, per-field precedence is:
- CLI flags
- Environment variables
- Project settings (
.pi/settings.json) - Global settings (
~/.pi/agent/settings.json) - Built-in defaults
For the MCP stdio server, CLI flags are not read, so precedence starts with environment variables.
Custom config file discovery uses:
--seq-think-config-file(pi only)- deprecated
--seq-think-config(pi only) SEQ_THINK_CONFIG_FILE- deprecated
SEQ_THINK_CONFIG - settings files listed above
Tools
process_thought
Record and analyze a sequential thought with metadata.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| thought | string | yes | The content of your thought |
| thought_number / thoughtNumber | integer | yes | Position in sequence, starting at 1 |
| total_thoughts / totalThoughts | integer | yes | Estimated total thoughts; normalized upward for dynamic depth |
| next_thought_needed / nextThoughtNeeded | boolean | yes | Whether more thoughts follow |
| stage | string | yes | One of: Problem Definition, Research, Analysis, Synthesis, Conclusion |
| session_id / sessionId | string | no | Named session to write; omit for the default session |
| tags | string[] | no | Keywords or categories |
| axioms_used / axiomsUsed | string[] | no | Principles applied |
| assumptions_challenged / assumptionsChallenged | string[] | no | Assumptions questioned |
Successful mutation responses include a content-free receipt with the session label, pre/post counts, save time, and a state fingerprint.
Example named-session call:
{
"thought": "Compare storage options before choosing one.",
"thoughtNumber": 1,
"totalThoughts": 3,
"nextThoughtNeeded": true,
"stage": "Analysis",
"session_id": "architecture-review"
}get_thinking_history
Read recorded thoughts for one session with bounded pagination. With the V1 JSON-per-session storage layout, history reads reject persisted session files over 10 MiB instead of parsing unbounded local state.
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| session_id / sessionId | string | default session | Session to read |
| limit | integer | 20 | Maximum thoughts to return, capped at 100 |
| offset | integer | 0 | Number of thoughts to skip from the start |
| include_full_thoughts / includeFullThoughts | boolean | true | Set false to return metadata plus a short snippet instead of full thought text |
Example:
{
"session_id": "architecture-review",
"limit": 20,
"include_full_thoughts": false
}get_thinking_status
Return content-free diagnostics: session counts, storage writability, backup file names, effective config source labels, and current state fingerprints. Home-directory paths are redacted with ~ where possible. Status output may be partial after the named-session threshold, skips invalid session filenames, and reports corrupt session files without moving them to backups.
Example:
{}generate_summary
Generate a summary for one session. Accepts optional session_id / sessionId.
clear_history
Clear one session. Accepts optional session_id / sessionId and returns a mutation receipt.
export_session
Export one session to a JSON file. file_path may be absolute or repo-relative; parent directories are created automatically. Export rejects directory targets and final-path symlinks. Existing files may be overwritten by this explicit tool call, and the receipt reports overwroteExistingFile.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| file_path | string | yes | Path to save the exported JSON file |
| session_id / sessionId | string | no | Session to export; omit for the default session |
import_session
Import a JSON session file. file_path may be absolute or repo-relative. Parent directories are not created for import. Imports reject directories, final-path symlinks, malformed top-level records, and files over 10 MiB. Thought text is treated as inert untrusted content; missing IDs/timestamps are normalized when needed.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| file_path | string | yes | Path to the JSON file to import |
| session_id / sessionId | string | no | Target session; explicit target wins over embedded session metadata |
sequential_think
Compatibility helper that generates a staged sequence for a topic and writes it to the selected session.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| topic | string | yes | Topic or question to think through |
| num_thoughts | integer | no | Number of generated stages, 3–10; default 5 |
| session_id / sessionId | string | no | Session to write |
Pi CLI Flags
| Flag | Env Variable | Default | Description |
|------|-------------|---------|-------------|
| --seq-think-storage-dir | MCP_STORAGE_DIR | ~/.mcp_sequential_thinking | Storage directory for sessions |
| --seq-think-config-file | SEQ_THINK_CONFIG_FILE | — | Custom JSON config file path |
| --seq-think-config | SEQ_THINK_CONFIG | — | Deprecated alias for the config file path |
| --seq-think-max-bytes | SEQ_THINK_MAX_BYTES | 51200 | Max pi output bytes |
| --seq-think-max-lines | SEQ_THINK_MAX_LINES | 2000 | Max pi output lines |
Thinking Stages
The Sequential Thinking framework organizes thoughts through five cognitive stages:
- Problem Definition — Define and scope the problem
- Research — Gather information and context
- Analysis — Examine and evaluate the evidence
- Synthesis — Combine insights into a coherent view
- Conclusion — Draw final conclusions and recommendations
Privacy and Storage Notes
- V1 storage is local plaintext JSON.
process_thought,get_thinking_history,generate_summary,export_session,import_session, andsequential_thinkare content-bearing tools.get_thinking_statusand mutation receipts are designed to avoid thought text, tags, axioms, and assumptions.- V1 assumes one active pi process per storage directory. Add locking before using a shared directory with multiple writers.
Requirements
- pi v0.51.0 or later
Uninstall
pi remove npm:@feniix/pi-sequential-thinkingLicense
MIT
