Skip to main content
Glama
shutter-network

Shutter MCP

Official

Shutter MCP

A Model Context Protocol (MCP) server that provides timelock encryption capabilities using the Shutter Network. This server allows users to encrypt messages that can only be decrypted after a specified future time, enabling trustless time-delayed communications.

Features

  • Timelock Encryption: Encrypt messages that unlock at future timestamps

  • Natural Language Time Parsing: Use expressions like "3 months from now"

  • Unix Timestamp Support: Direct timestamp input for precise timing

  • Claude Web, VS Code MCP Support

  • Comprehensive Error Handling: User-friendly error messages and guidance

  • Production Ready: Docker support, health checks, and monitoring

Related MCP server: otp-mcp-server

Important Notice

ALPHA SOFTWARE: This is experimental software using the Shutter Network testnet deployment (Gnosis Chiado). Do not use for production or sensitive data. The encryption implementation is for demonstration purposes only.

Current Limitations:

  • Demo encryption algorithm (not production-grade Shutter encryption)

  • Testnet deployment (Chiado testnet only)

  • No data persistence guarantees

  • API may change without notice

Live Deployment

Server URL: https://shutter-mcp-b76e270d48c5.herokuapp.com/ Health Check: https://shutter-mcp-b76e270d48c5.herokuapp.com/health MCP Endpoint: https://shutter-mcp-b76e270d48c5.herokuapp.com/mcp

Quick Start

Claude Web Integration

  1. Open Claude Web Settings

  2. Add Custom Integration

    • Click "Add custom integration"

    • Enter URL: https://shutter-mcp-b76e270d48c5.herokuapp.com/mcp

    • Click "Add"

  3. Test the Integration

    • Start a new conversation

    • Try: "Encrypt this message to unlock in 3 months: Hello future!"

    • Or: "Explain how timelock encryption works"

VS Code MCP Integration

  1. Install MCP Extension

    • Open VS Code

    • Install the "Model Context Protocol" extension

    • Or install from marketplace: ms-vscode.vscode-mcp

  2. Configure MCP Server

    • Open VS Code settings (Ctrl+,)

    • Search for "MCP"

    • Add server configuration:

      { "mcp.servers": { "shutter-timelock": { "url": "https://shutter-mcp-b76e270d48c5.herokuapp.com/mcp", "name": "Shutter Timelock Encryption" } } }
  3. Test the Integration

    • Open command palette (Ctrl+Shift+P)

    • Type "MCP: Call Tool"

    • Select "timelock_encrypt" and provide parameters

Local Development Setup

If you want to run the server locally for development:

Prerequisites

  • Python 3.11 or higher

  • pip (Python package manager)

Installation

  1. Clone or download this repository

    git clone <your-repo-url> cd shutter-mcp-server
  2. Run the deployment script

    ./scripts/deploy.sh
  3. Start the server

    ./scripts/start.sh

The server will be available at http://localhost:5002 with the MCP endpoint at http://localhost:5002/mcp.

Local Integration Setup

For local development, update your configurations to use:

  • Claude Web: http://localhost:5002/mcp

  • VS Code: http://localhost:5002/mcp

Docker Deployment

# Build and run with Docker Compose docker-compose up -d # Or build and run manually docker build -t shutter-mcp-server . docker run -p 5002:5002 shutter-mcp-server

Testing Examples

Claude Web Test Commands:

Encrypt this message to unlock in 1 hour: Secret meeting at 3pm Check decryption status for identity: 0x1234... Explain how timelock encryption works

VS Code Test Commands:

  • Use MCP tools through the command palette

  • Test timelock encryption with future timestamps

  • Verify health endpoint responses

Available Tools

timelock_encrypt(message, unlock_time)

Encrypt a message with timelock encryption using Shutter Network.

Parameters:

  • message (string): The text message to encrypt

  • unlock_time (string): When the message can be decrypted

    • Natural language: "3 months from now", "1 year from now"

    • Unix timestamp: "1721905313"

    • Absolute date: "2024-12-25", "January 15, 2025"

Example:

timelock_encrypt("Secret auction bid: $50,000", "2024-12-31 23:59:59")

check_decryption_status(identity)

Check if a timelock encrypted message is ready for decryption.

Parameters:

  • identity (string): The identity returned from timelock_encrypt

decrypt_timelock_message(identity, encrypted_data)

Decrypt a timelock encrypted message if the timelock has expired.

Parameters:

  • identity (string): The identity returned from timelock_encrypt

  • encrypted_data (string): The encrypted data returned from timelock_encrypt

get_unix_timestamp(time_expression)

Convert time expressions to Unix timestamps.

Parameters:

  • time_expression (string): Time to convert (default: "now")

explain_timelock_encryption()

Get comprehensive explanation of timelock encryption and usage.

How Timelock Encryption Works

Timelock encryption allows you to encrypt a message that can only be decrypted after a specific time. The Shutter Network uses:

  • Threshold Cryptography: Distributed key generation and management

  • Decentralized Keypers: Network of nodes that collectively manage decryption keys

  • Time-based Release: Keys are only released after the specified timestamp

  • Trustless Operation: No single party can decrypt messages early

Use Cases

  • Sealed Bid Auctions: Hide bids until auction ends

  • Time-delayed Announcements: Schedule future reveals

  • Dead Man's Switch: Messages that unlock if you don't check in

  • Contest Reveals: Hide answers until contest ends

  • Future Communications: Send messages to your future self

Configuration

Environment Variables

  • PORT: Server port (default: 5002)

  • SHUTTER_API_BASE: Shutter API endpoint (default: Chiado testnet)

  • SHUTTER_REGISTRY_ADDRESS: Registry contract address

Custom Configuration

Edit src/server.py to modify:

  • API endpoints

  • Timeout values

  • Error handling behavior

  • Additional tools

Testing

Run the example script to test functionality:

python examples/usage_example.py

Health check endpoint:

curl https://shutter-mcp-b76e270d48c5.herokuapp.com/health

Local testing:

curl http://localhost:5002/health

Project Structure

shutter-mcp-server/ ├── src/ │ └── server.py # Main server implementation ├── scripts/ │ ├── deploy.sh # Deployment script │ └── start.sh # Start script ├── examples/ │ └── usage_example.py # Usage examples ├── docs/ │ └── API.md # API documentation ├── requirements.txt # Python dependencies ├── Dockerfile # Docker configuration ├── docker-compose.yml # Docker Compose configuration ├── Procfile # Heroku process configuration ├── deploy-heroku.ps1 # PowerShell deployment script └── README.md # This file

Security Considerations

IMPORTANT: This is alpha software with significant limitations:

  • Demo Implementation: Current encryption is for demonstration purposes only

  • Testnet Only: Uses Chiado testnet - not suitable for production data

  • No Production Encryption: Does not implement full Shutter encryption algorithms yet

  • Experimental Status: API and functionality may change without notice

  • No Data Guarantees: No persistence or availability guarantees

For Production Use:

  • Implement proper Shutter encryption algorithms

  • Use mainnet deployment when available

  • Add authentication and access controls

  • Implement proper key management

  • Use HTTPS in production deployments

Troubleshooting

Server Won't Start

  • Check Python version (3.11+ required)

  • Verify all dependencies are installed: pip install -r requirements.txt

  • Check port availability: lsof -i :5002 (Linux/Mac) or netstat -an | findstr :5002 (Windows)

Claude Integration Issues

  • Ensure server is accessible from the internet

  • Verify MCP endpoint returns proper responses: curl https://shutter-mcp-b76e270d48c5.herokuapp.com/mcp

  • Check CORS configuration for cross-origin requests

VS Code Integration Issues

  • Verify MCP extension is installed and enabled

  • Check server configuration in VS Code settings

  • Use local server for development: http://localhost:5002/mcp

Shutter API Errors

  • Verify internet connectivity

  • Check Shutter Network status

  • Ensure timestamps are in the future

Development

Adding New Tools

  1. Define the tool function with @mcp.tool() decorator

  2. Add comprehensive docstring with parameter descriptions

  3. Include proper error handling and user guidance

  4. Test with the example script

Modifying Time Parsing

Edit the parse_time_expression method in the ShutterTimelock class to support additional time formats.

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests and documentation

  5. Submit a pull request

License

MIT License - see LICENSE file for details.

Acknowledgments

Support

  • Issues: Open a GitHub issue

  • Documentation: See docs/ directory

  • Examples: Check examples/ directory


Version: 2.1.0
Last Updated: August 2025
Compatibility: Claude Web, VS Code MCP, MCP Protocol 2024-11-05

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shutter-network/ShutterMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server