Skip to main content
Glama
phamtienduceng

SSE Calculator MCP Server

README.md
# SSE Calculator MCP Server

A stateful calculator server that uses Server-Sent Events (SSE) for real-time communication. This server implements the Model Context Protocol (MCP) for integration with AI assistants.

## Features

- Real-time calculator operations using SSE
- Stateful sessions for ongoing calculations
- History tracking for all calculations
- Web-based calculator interface
- MCP integration for AI assistants

## Architecture

The server is built using NestJS and implements the following components:

- **Session Service**: Manages calculator sessions and state
- **Calculator Service**: Performs calculation operations
- **SSE Controller**: Handles client connections and event streaming

## Getting Started

### Prerequisites

- Node.js (v14 or higher)
- npm (v6 or higher)

### Installation

1. Clone the repository
2. Install dependencies:

```bash
npm install
```

3. Start the server:

```bash
npm run start:dev
```

4. Open the calculator interface in your browser:

```
http://localhost:3000
```

## API Endpoints

### SSE Stream

```
GET /calculator/stream
```

Establishes an SSE connection and creates a new calculator session.

### Calculate

```
POST /calculator/calculate/:sessionId
```

Performs a calculation operation on the specified session.

Request body:
```json
{
  "operation": "add", // add, subtract, multiply, divide, clear
  "a": 5,
  "b": 3
}
```

### History

```
GET /calculator/history/:sessionId
```

Retrieves the calculation history for the specified session.

### Sessions

```
GET /calculator/sessions
```

Retrieves all active calculator sessions.

## MCP Integration

To use this server as an MCP server, add the following configuration to your MCP settings file:

```json
{
  "mcpServers": {
    "remote-calculator": {
      "url": "http://localhost:3000/calculator/stream",
      "disabled": false,
      "alwaysAllow": [],
      "timeout": 60
    }
  }
}
```

## Deployment Options

For production deployment, you can use the following options:

1. **Docker**: A Dockerfile is provided for containerized deployment
   - See `Dockerfile` and `docker-compose.yml` for configuration

2. **Smithery.ai**: Deploy directly from GitHub
   - See `SMITHERY_DEPLOYMENT.md` for detailed instructions
   - Configuration provided in `smithery.json`

3. **Heroku/DigitalOcean**: Cloud platform deployment
   - See `DEPLOYMENT.md` for step-by-step instructions

4. **Self-hosted**: Use NGINX or similar for SSL termination and load balancing

## Hosting Your Own MCP Server

After deploying your server, update your MCP client configuration to point to your hosted URL:

```json
{
  "mcpServers": {
    "remote-calculator": {
      "url": "https://your-deployed-url.com/calculator/stream",
      "disabled": false,
      "alwaysAllow": [],
      "timeout": 60
    }
  }
}
```

## License

MIT