UltraThink MCP Server

$uvx --from git+https://github.com/husniadil/ultrathink ultrathink
README.md

A Python MCP server for sequential thinking and problem-solving

UltraThink MCP Server

A Python MCP server for sequential thinking and problem-solving


Enhanced Python port of the Sequential Thinking MCP Server by Anthropic. Maintains full compatibility while adding confidence scoring, auto-assigned thought numbers, and multi-session support.

[!TIP] Using Claude Code? Install the UltraThink Plugin for seamless integration - no MCP server setup required!

# Via terminal
claude plugin marketplace add husniadil/ekstend
claude plugin install ultrathink@ekstend

# Or interactively in Claude Code
/plugin marketplace add husniadil/ekstend
/plugin install ultrathink@ekstend

[!NOTE] Meta: This MCP server was built iteratively using UltraThink itself - a practical example of the tool's capability to break down complex problems, manage architectural decisions, and maintain context across development sessions.


Features

  • UltraThink: Break down complex problems into manageable steps
  • Dynamic Adjustments: Revise and refine thoughts as understanding deepens
  • Branching: Explore alternative paths of reasoning
  • Confidence Scoring: Explicit uncertainty tracking (0.0-1.0 scale)
  • Auto-adjustment: Automatically adjusts total thoughts if needed
  • Multi-Session Support: Manage multiple concurrent thinking sessions with session IDs
  • Formatted Logging: Colored terminal output with rich formatting (can be disabled)
  • 100% Test Coverage: Comprehensive test suite with full code coverage
  • Type Safety: Full mypy strict mode type checking for production code
  • Simple Layered Architecture: Clean separation with models, services, and interface layers

Installation

Quick Install (Recommended)

Run directly with uvx from GitHub (no installation needed):

uvx --from git+https://github.com/husniadil/ultrathink ultrathink

Development Setup

For local development:

# Clone the repository
git clone https://github.com/husniadil/ultrathink.git
cd ultrathink

# Install all dependencies (including dev dependencies)
uv sync

Usage

Task Commands (npm-like)

# List all available tasks
uv run task --list

# Run the server
uv run task run

# Run tests with coverage
uv run task test

# Run tests without coverage (quick)
uv run task test-quick

# Run the test client
uv run task client

# Format code (ruff + prettier)
uv run task format

# Lint code
uv run task lint

# Type check with mypy
uv run task typecheck

# Clean cache files
uv run task clean

Direct Commands (Alternative)

For direct execution without task runner:

# Run the server directly
uv run ultrathink

# Run the test client directly
uv run python examples/client.py

Note: For testing, linting, and formatting, prefer using uv run task commands shown above.

Tool: ultrathink

The server provides a single tool for dynamic and reflective problem-solving through structured thinking.

Parameters

Required:

  • thought (str): Your current thinking step
  • total_thoughts (int): Estimated total thoughts needed (>=1)

Optional:

  • thought_number (int): Current thought number - auto-assigned sequentially if omitted (1, 2, 3...), or provide explicit number for branching/semantic control
  • next_thought_needed (bool): Whether another thought step is needed. Auto-assigned as thought_number < total_thoughts if omitted. Set explicitly to override default behavior
  • session_id (str): Session identifier for managing multiple thinking sessions (None = create new, provide ID to continue session)
  • is_revision (bool): Whether this revises previous thinking
  • revises_thought (int): Which thought number is being reconsidered
  • branch_from_thought (int): Branching point thought number
  • branch_id (str): Branch identifier
  • needs_more_thoughts (bool): If more thoughts are needed
  • confidence (float): Confidence level (0.0-1.0, e.g., 0.7 for 70% confident)
  • uncertainty_notes (str): Optional explanation for doubts or concerns about this thought
  • outcome (str): What was achieved or expected as result of this thought
  • assumptions (list[Assumption]): Assumptions made in this thought (id, text, confidence, critical, verifiable)
  • depends_on_assumptions (list[str]): Assumption IDs this thought depends on (e.g., ["A

Tools (1)

ultrathinkA tool for dynamic and reflective problem-solving through structured thinking steps.

Configuration

claude_desktop_config.json
{"mcpServers": {"ultrathink": {"command": "uvx", "args": ["--from", "git+https://github.com/husniadil/ultrathink", "ultrathink"]}}}

Try it

Use UltraThink to break down the architectural requirements for a distributed cache system.
Start a new thinking session to debug this race condition, tracking your confidence at each step.
Branch from your third thought to explore an alternative implementation using WebSockets instead of REST.
Analyze this complex legal document using sequential thinking and list all critical assumptions made during the review.

Frequently Asked Questions

What are the key features of UltraThink?

Sequential thinking with auto-assigned thought numbers and total thought adjustments. Branching capabilities to explore alternative paths of reasoning. Confidence scoring (0.0-1.0) for explicit uncertainty tracking. Multi-session support to manage multiple concurrent reasoning tasks. Assumption tracking with verifiable status and criticality levels.

What can I use UltraThink for?

Breaking down complex software architectural decisions into manageable steps. Managing context and reasoning across long development sessions. Exploring multiple hypothetical solutions to a problem via branching. Tracking uncertainty and assumptions in high-stakes analytical tasks.

How do I install UltraThink?

Install UltraThink by running: uvx --from git+https://github.com/husniadil/ultrathink ultrathink

What MCP clients work with UltraThink?

UltraThink works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Use UltraThink with Conare

Manage MCP servers visually, upload persistent context, and never start from zero with Claude Code & Codex.

Try Free