Skip to main content
Glama
camilovelezr

Sequential Thinking MCP Server

by camilovelezr
README.md
# Sequential Thinking MCP Server - Streamable HTTP Implementation

An MCP server that provides a powerful sequential thinking tool for complex problem-solving through thoughts.

This server enables AI assistants to work through problems step-by-step, with the ability to revise, branch, and explore alternative approaches as understanding deepens.

## Features

- **Dynamic Thought Process**: Adjust the number of thoughts as you progress
- **Revision Capability**: Question and revise previous thoughts
- **Branching Logic**: Explore alternative approaches
- **Flexible Planning**: Add more thoughts even after reaching initial estimates
- **Context Preservation**: Maintain context across multiple thinking steps

## Getting Started

To get started with this server, clone the repository and install the necessary dependencies.

```bash
git clone https://github.com/camilovelezr/server-sequential-thinking.git
cd server-sequential-thinking
npm install
```

## Usage

### Streamable HTTP Transport

The server uses the modern Streamable HTTP transport protocol for communication. Start the server:

```bash
npm start
```

The server will start on `http://127.0.0.1:3000` by default. You can change the port using the `PORT` environment variable:

```bash
PORT=8080 npm start
```

### Endpoints

- **MCP Endpoint**: `POST/GET/DELETE http://127.0.0.1:3000/mcp` - Main MCP communication endpoint
  - `POST` - Send messages to the server (initialize, tool calls, etc.)
  - `GET` - Establish SSE stream for server-to-client notifications
  - `DELETE` - Terminate session
- **Health Check**: `GET http://127.0.0.1:3000/health` - Check server status and active sessions
- **Test Interface**: `GET http://127.0.0.1:3000/` - Browser-based test interface

### Transport Features

The Streamable HTTP transport provides several advantages:

- **Session-Based State**: Manages state for each client session in memory. The core server is long-running and can be scaled with sticky sessions.
- **Flexible Streaming**: Server can upgrade any response to SSE for streaming
- **Infrastructure Compatible**: Works with standard HTTP middleware and proxies
- **Resumable Connections**: Support for connection resumption
- **Automatic Session Cleanup**: Inactive sessions and their associated data are automatically cleared after 1 hour to conserve resources.

### Security

The implementation includes security measures:
- Origin header validation to prevent DNS rebinding attacks
- Server binds only to localhost (127.0.0.1)
- CORS headers are properly configured
- Session IDs are cryptographically secure
- **Privacy by Design**: No sensitive tool inputs or outputs are logged to the console.

### Adding to Cursor

To use this server with Cursor, add the following to your Cursor configuration:

```json
{
  "mcpServers": {
    "sequential-thinking": {
      "url": "http://localhost:3000/mcp"
    },
  }
}
```

### Running with Docker

You can also run the server in a containerized environment using Docker for easier deployment and isolation.

1.  **Build the Docker image:**
    ```bash
    docker build -t mcp-server-sequential-thinking .
    ```

2.  **Run the Docker container:**
    ```bash
    docker run -p 3000:3000 mcp-server-sequential-thinking
    ```

The server will be accessible at `http://127.0.0.1:3000`.

## Available Tool

### sequentialthinking

A detailed tool for dynamic and reflective problem-solving through thoughts.

**When to use:**
- Breaking down complex problems into steps
- Planning and design with room for revision
- Analysis that might need course correction
- Problems where the full scope might not be clear initially
- Multi-step solutions requiring context preservation

**Parameters:**
- `thought` (string, required): Your current thinking step
- `nextThoughtNeeded` (boolean, required): Whether another thought step is needed
- `thoughtNumber` (integer, required): Current thought number
- `totalThoughts` (integer, required): Estimated total thoughts needed
- `isRevision` (boolean, optional): Whether this revises previous thinking
- `revisesThought` (integer, optional): Which thought is being reconsidered
- `branchFromThought` (integer, optional): Branching point thought number
- `branchId` (string, optional): Branch identifier
- `needsMoreThoughts` (boolean, optional): If more thoughts are needed

## License

MIT

Maintenance

ActivityInactive
ResponsivenessNo issues