home / mcp / slowtime mcp server
A Model Context Protocol server for secure time-based operations with timing attack protection and timelock encryption
Configuration
View docs{
"mcpServers": {
"bmorphism-slowtime-mcp-server": {
"command": "node",
"args": [
"/path/to/slowtime-mcp-server/build/index.js"
]
}
}
}Slowtime MCP Server enables secure time-based operations with timing attack protection and timelock encryption. It coordinates time fuzzing, interval management, encryption, and analytics to protect sensitive timing-dependent data while enabling controlled access and auditing.
You interact with Slowtime MCP Server through an MCP client to create and manage time-bound intervals, apply timelock encryption to data, and retrieve analytics. Use the client to start, pause, resume, and check intervals, then encrypt data tied to a specific interval and decrypt it only when the interval conditions are met. All actions are designed to mitigate timing attacks while providing auditable, interval-bound access to encrypted information.
Typical usage patterns you can perform include creating a new time interval, checking its status, pausing and resuming it, and encrypting data so that it remains decryptable only after the interval completes. You can also query vault histories and statistics to understand encryption activity and decryption timelines across your intervals.
Prerequisites you need before installing: a running Node.js environment on your host and appropriate permissions to run local processes.
Install steps are focused on configuring Slowtime as a local MCP server that your MCP client can reach through your Claude Desktop setup.
Step 1: Prepare your config by adding Slowtime to your Claude Desktop MCP configuration.
{
"mcpServers": {
"slowtime": {
"command": "node",
"args": ["/path/to/slowtime-mcp-server/build/index.js"]
}
}
}Security and architecture are designed to protect timing-sensitive data. The server implements time fuzzing, constant-time operations, and jittered timestamps to reduce the risk of timing-based leakage. Encryption flows rely on timelock concepts and distributed randomness to secure data until an interval completes.
The server is composed of four main components: TimeFuzz for timing attack protection, TimeKeeper for interval management, TimeLock for encryption, and TimeVault for persistent storage and analytics. This structure supports secure, auditable time-based access to encrypted data.
Operational notes include how to query vault history, filter by interval, and obtain vault statistics. TimeVault uses DuckDB WASM for storage and provides analytics results such as total vaults, decrypted vaults, and average decryption time.
TimeFuzz: provides timing attack protection through random duration fuzzing, constant-time comparisons, jittered timestamps, and random operation delays.
TimeKeeper: manages intervals with creation, pause, resume, progress tracking, automatic cleanup, and fuzzing integration.
TimeLock: handles encryption with timelock concepts, interval-based decryption, automatic cleanup, and secure random number generation.
TimeVault: provides persistent storage and analytics using DuckDB WASM, with historical tracking of encrypted data and query capabilities.
Example functional endpoints include creating intervals, checking status, pausing/resuming, encrypting data with an interval reference, and decrypting only after the interval completes. Vault analytics support filtering and statistics retrieval.
Protection against timing attacks through random delays, jittered timestamps, and constant-time operations.
Manages intervals: create, pause, resume, track progress, and automatic cleanup.
Encrypts data with timelock concepts and supports interval-based decryption and secure RNG.
Persistent storage and analytics using DuckDB WASM, with historical tracking and query capabilities.
Create a new interval with a given name and duration, returning an interval identifier.
Query the status and progress of a specific interval by its ID.
Pause an active interval so it stops progressing until resumed.
Resume a paused interval to continue from where it left off.
Encrypt data tied to a specific interval and obtain a Timelock ID.
Attempt decryption of timelocked data; success is contingent on interval completion.
Query vault history with filters such as interval_id and decrypted_only.
Retrieve statistics about vaults, including counts and average decryption time.