Slowtime (Time & Intervals)

by bmorphism

3 stars
276 downloads
Not rated
GitHub

About

Integrates drand and tlock-js to enable secure, time-locked encryption for managing scheduled events with cryptographic guarantees.

Details

Author
bmorphism
Repository
bmorphism/slowtime-mcp-server
GitHub stars
3
Downloads
276
Categories
Developer Tools, Security, Design, AI, Frontend, Knowledge Base, Other
Tags
#visualization

- TimeFuzz – random delays and jittered timestamps against timing attacks
- TimeKeeper – create, pause, resume intervals with progress tracking
- TimeLock – encrypt data that decrypts only after an interval ends
- TimeVault – persistent DuckDB WASM storage with analytics
- drand network integration – distributed randomness for timelock security
- Constant-time comparisons – prevent side‑channel leakage

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Slowtime (Time & Intervals)
    Command (node, npx, python, etc.) node
    Arguments
    • Argument 1 /path/to/slowtime-mcp-server/build/index.js

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install by adding the server to your Claude Desktop config (claude_desktop_config.json) pointing to the built index.js. Then invoke tools such as start_interval, check_interval, pause_interval, resume_interval, encrypt (with interval ID), and list_vault_history with optional filters.

start_interval

Creates a new interval. Parameters: name (string), duration (integer in minutes)

check_interval

Checks the status of an existing interval. Parameters: id (string)

pause_interval

Pauses an active interval. Parameters: id (string)

resume_interval

Resumes a paused interval. Parameters: id (string)

list_vault_history

Lists historical data from the vault with filtering options. Parameters: interval_id (string), decrypted_only (boolean), limit (integer)

get_vault_stats

Retrieves statistics about the vault.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "slowtime (time & intervals)": {
            "cwd": null,
            "env": {},
            "args": [
                "/path/to/slowtime-mcp-server/build/index.js"
            ],
            "shell": false,
            "command": "node"
        }
    }
}

Linux

{
    "cwd": null,
    "env": [],
    "args": [
        "/path/to/slowtime-mcp-server/build/index.js"
    ],
    "shell": false,
    "command": "node"
}

Macos

{
    "cwd": null,
    "env": [],
    "args": [
        "/path/to/slowtime-mcp-server/build/index.js"
    ],
    "shell": false,
    "command": "node"
}

Windows

{
    "cwd": null,
    "env": [],
    "args": [
        "/path/to/slowtime-mcp-server/build/index.js"
    ],
    "shell": false,
    "command": "node"
}

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:

{
  "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:

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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.