---
slug: "slowtime-mcp-server"
source_type: "readme"
source_url: "https://cdn.jsdelivr.net/gh/bmorphism/slowtime-mcp-server@main/README.md"
repo: "https://github.com/bmorphism/slowtime-mcp-server"
source_file: "README.md"
branch: "main"
---
# Slowtime MCP Server

A Model Context Protocol server for secure time-based operations with timing attack protection and timelock encryption.

```
                                     ┌──────────────┐
                                     │   Claude     │
                                     │   Desktop    │
                                     └──────┬───────┘
                                            │
                                            ▼
┌──────────────┐                    ┌──────────────┐
│   Timelock   │◄──────────────────►│   Slowtime   │
│  Encryption  │                    │     MCP      │
└──────────────┘                    │    Server    │
                                    └──────┬───────┘
                                           │
                                           ▼
┌──────────────┐                   ┌──────────────┐
│    Timing    │◄─────────────────►│  Interval    │
│ Protection   │                   │   Manager    │
└──────────────┘                   └──────────────┘

```

## Features

### Time Fuzzing & Security
```
Input Time ──┐
            ┌▼─────────────┐
            │ Random Fuzz  │     ┌─────────────┐
            │ (100-5000ms) ├────►│ Jittered    │
            └─────────────┘     │ Timestamp    │
                               └─────────────┘
```

### Timelock Encryption Flow
```
Data ───────┐
           ┌▼────────────┐    ┌────────────┐    ┌────────────┐
           │  Encrypt    │    │  Interval  │    │ League of  │
           │   with     ├───►│ Duration   ├───►│  Entropy   │
           │ Timelock   │    │ Remaining  │    │  Network   │
           └────────────┘    └────────────┘    └────────────┘
```

### Interval Management
```
[Start]──►[Active]──┐
               ▲    │
               │    ▼
            [Resume] [Pause]
                    │    ▲
                    ▼    │
                 [Paused]
```

## Installation

Add to your Claude Desktop config at `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "slowtime": {
      "command": "node",
      "args": ["/path/to/slowtime-mcp-server/build/index.js"]
    }
  }
}
```

## Usage

### Basic Interval Commands
```
start_interval "Focus Time" 25  ───► [25min Interval Created]
                                          │
check_interval <id>  ◄───────────────────┘
                                          │
pause_interval <id>  ◄───────────────────┘
                                          │
resume_interval <id> ◄───────────────────┘
```

### Timelock Encryption
```
1. Start Interval:
   "Focus Time" (25min) ──► [Interval ID: abc123]

2. Encrypt Data:
   "secret" + abc123 ──► [Timelock ID: xyz789]

3. Attempt Decrypt:
   - Before interval ends: "Not yet decryptable"
   - After interval ends: "secret"
```

## Security Features

### Timing Attack Prevention
```
Operation ──┬──► Random Delay (100-5000ms)
            │
            ├──► Jittered Timestamps
            │
            └──► Constant-time Comparisons
```

### Timelock Security & Storage
```
┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   Encrypt   │    │ Distributed │    │  Timelock   │    │  DuckDB     │
│    Data    ├───►│  Randomness ├───►│  Protected  ├───►│  TimeVault  │
│            │    │  Network    │    │    Data     │    │  Storage    │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘
                                           │                     ▲
                                           │      ┌──────────────┘
                                           ▼      │
                                    ┌─────────────┴─┐
                                    │   Analytics   │
                                    │ & Statistics  │
                                    └───────────────┘
```

### TimeVault Analytics
```
Query History ──┐
               ├──► ┌─────────────┐
Filter Options ┘    │   DuckDB    │    ┌─────────────┐
                    │   WASM      ├───►│  Analytics  │
Vault Stats ───────►│   Engine    │    │   Results   │
                    └─────────────┘    └─────────────┘
```

## Architecture

The server consists of four main components:

1. **TimeFuzz**: Provides timing attack protection through:
   - Random duration fuzzing
   - Constant-time comparisons
   - Jittered timestamps
   - Random operation delays

2. **TimeKeeper**: Manages intervals with:
   - Creation/pause/resume operations
   - Progress tracking
   - Automatic cleanup
   - Fuzzing integration

3. **TimeLock**: Handles encryption with:
   - drand network integration
   - Interval-based decryption
   - Automatic cleanup
   - Secure random number generation

4. **TimeVault**: Provides persistent storage and analytics:
   - DuckDB WASM-based storage
   - Historical tracking of encrypted data
   - Analytics and statistics
   - Query capabilities with filtering

## TimeVault Commands

Query historical data and statistics about encrypted timevaults:

```
# List vault history with filtering
list_vault_history --interval_id=abc123 --decrypted_only=true --limit=10

# Get vault statistics
get_vault_stats

Example output:
Total vaults: 150
Decrypted vaults: 75
Average decryption time: 45 seconds
```

## Storage Schema

The TimeVault uses DuckDB WASM for persistent storage with the following schema:

```sql
CREATE TABLE timevaults (
  id VARCHAR PRIMARY KEY,
  encrypted_data TEXT NOT NULL,
  round_number BIGINT NOT NULL,
  created_at TIMESTAMP NOT NULL,
  decrypted_at TIMESTAMP,
  interval_id VARCHAR NOT NULL,
  metadata JSON
);

-- Indexes for efficient querying
CREATE INDEX idx_interval_id ON timevaults(interval_id);
CREATE INDEX idx_created_at ON timevaults(created_at);
```

## Contributing

1. Fork the repository
2. Create your feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request

## License

MIT License - see LICENSE file for details
