Shutter Mcp について
Shutter Mcpは、指定した未来の時刻まで復号できないメッセージを作成する実験的なMCPサーバーです。時間差通信向けですが、デモ用暗号化とテストネットを使用しており、機密データや本番利用には適しません。
主な機能
- 01将来の時刻に解錠する暗号化
- 02自然言語の時刻表現を解析
- 03Unixタイムスタンプと日付に対応
- 04復号可能かどうかを確認
- 05時間ロック後の復号
- 06時間ロック暗号化の説明
活用シーン
- 01入札終了まで価格を非公開にする
- 02告知を後日公開するよう準備
- 03未来の自分宛てのメッセージを用意
MCP 対応
暗号化、状態確認、復号、タイムスタンプ変換、仕組みの説明を行うツールをMCPクライアントに提供します。READMEにはClaude WebとVS Codeとの連携方法が記載されています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Shutter MCP
Shutter Network を使用してタイムロック暗号化機能を提供する Model Context Protocol(MCP)サーバーです。このサーバーを使用すると、指定した未来の時刻まで復号できないメッセージを暗号化でき、トラストレスな時間差通信を実現できます。
機能
- タイムロック暗号化:未来のタイムスタンプで解除されるメッセージを暗号化します
- 自然言語による時刻解析:「今から3か月後」のような表現を使用できます
- Unix タイムスタンプのサポート:正確な時刻を指定するため、タイムスタンプを直接入力できます
- Claude Web、VS Code MCP のサポート
- 包括的なエラー処理:ユーザーフレンドリーなエラーメッセージとガイダンスを提供します
- 本番環境対応:Docker のサポート、ヘルスチェック、モニタリング機能を備えています
重要なお知らせ
アルファ版ソフトウェア:これは Shutter Network のテストネットデプロイメント(Gnosis Chiado)を使用する実験的なソフトウェアです。本番環境や機密データには使用しないでください。暗号化の実装はデモ目的のみです。
現在の制限事項:
- デモ用の暗号化アルゴリズム(本番品質の Shutter 暗号化ではありません)
- テストネットへのデプロイメント(Chiado テストネットのみ)
- データの永続性に関する保証はありません
- API は予告なく変更される場合があります
ライブデプロイメント
サーバー URL:https://shutter-mcp-b76e270d48c5.herokuapp.com/ ヘルスチェック:https://shutter-mcp-b76e270d48c5.herokuapp.com/health MCP エンドポイント:https://shutter-mcp-b76e270d48c5.herokuapp.com/mcp
クイックスタート
Claude Web との連携
-
Claude Web の設定を開きます
- claude.ai/settings にアクセスします
- 「Integrations」セクションに移動します
-
カスタム連携を追加します
- 「Add custom integration」をクリックします
- URL を入力します:
https://shutter-mcp-b76e270d48c5.herokuapp.com/mcp - 「Add」をクリックします
-
連携をテストします
- 新しい会話を開始します
- 「このメッセージを3か月後に解除されるよう暗号化してください:未来の皆さん、こんにちは!」と試します
- または、「タイムロック暗号化の仕組みを説明してください」と試します
VS Code MCP 連携
-
MCP 拡張機能をインストールします
- VS Code を開きます
- 「Model Context Protocol」拡張機能をインストールします
- または、マーケットプレースからインストールします:
ms-vscode.vscode-mcp
-
MCP サーバーを設定します
- VS Code の設定を開きます(Ctrl+,)
- 「MCP」を検索します
- サーバー設定を追加します:
{ "mcp.servers": { "shutter-timelock": { "url": "https://shutter-mcp-b76e270d48c5.herokuapp.com/mcp", "name": "Shutter Timelock Encryption" } } }
-
連携をテストします
- コマンドパレットを開きます(Ctrl+Shift+P)
- 「MCP: Call Tool」と入力します
- 「timelock_encrypt」を選択し、パラメーターを指定します
ローカル開発環境のセットアップ
開発用にサーバーをローカルで実行する場合:
前提条件
- Python 3.11 以降
- pip(Python パッケージマネージャー)
インストール
-
このリポジトリをクローンまたはダウンロードします
git clone <your-repo-url> cd shutter-mcp-server -
デプロイスクリプトを実行します
./scripts/deploy.sh -
サーバーを起動します
./scripts/start.sh
サーバーは http://localhost:5002 で利用でき、MCP エンドポイントは http://localhost:5002/mcp です。
ローカル連携のセットアップ
ローカル開発では、設定を次のように変更します:
- Claude Web:
http://localhost:5002/mcp - VS Code:
http://localhost:5002/mcp
Docker デプロイメント
# 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
テスト例
Claude Web のテストコマンド:
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 のテストコマンド:
- コマンドパレットから MCP ツールを使用します
- 未来のタイムスタンプを指定してタイムロック暗号化をテストします
- ヘルスエンドポイントの応答を確認します
利用可能なツール
timelock_encrypt(message, unlock_time)
Shutter Network を使用して、タイムロック暗号化でメッセージを暗号化します。
パラメーター:
message(文字列):暗号化するテキストメッセージunlock_time(文字列):メッセージを復号できる時刻- 自然言語:「今から3か月後」、「今から1年後」
- Unix タイムスタンプ:「1721905313」
- 絶対日付:「2024-12-25」、「2025年1月15日」
例:
timelock_encrypt("Secret auction bid: $50,000", "2024-12-31 23:59:59")
check_decryption_status(identity)
タイムロック暗号化されたメッセージが復号可能になっているか確認します。
パラメーター:
identity(文字列):timelock_encryptから返された ID
decrypt_timelock_message(identity, encrypted_data)
タイムロックの期限が切れている場合に、タイムロックで暗号化されたメッセージを復号します。
パラメーター:
identity(string):timelock_encryptが返す IDencrypted_data(string):timelock_encryptが返す暗号化データ
get_unix_timestamp(time_expression)
時間表現を Unix タイムスタンプに変換します。
パラメーター:
time_expression(string):変換する時間(デフォルト:「now」)
explain_timelock_encryption()
タイムロック暗号化とその使用方法について、包括的な説明を取得します。
タイムロック暗号化の仕組み
タイムロック暗号化を使うと、指定した時刻を過ぎるまで復号できないメッセージを暗号化できます。Shutter Network は次の仕組みを使用します。
- しきい値暗号:分散型の鍵生成と管理
- 分散型 Keyper:復号鍵を共同で管理するノードのネットワーク
- 時刻に基づく鍵の公開:鍵は指定したタイムスタンプを過ぎてから公開されます
- トラストレスな運用:単独の当事者がメッセージを早期に復号することはできません
使用例
- 入札額を封印するオークション:オークション終了まで入札額を隠します
- 時刻指定の告知:将来の公開を予約します
- デッドマンズスイッチ:チェックインしなかった場合にロックが解除されるメッセージ
- コンテスト結果の公開:コンテスト終了まで回答を隠します
- 将来へのメッセージ:未来の自分にメッセージを送ります
設定
環境変数
PORT:サーバーポート(デフォルト:5002)SHUTTER_API_BASE:Shutter API のエンドポイント(デフォルト:Chiado テストネット)SHUTTER_REGISTRY_ADDRESS:レジストリーコントラクトのアドレス
カスタム設定
src/server.py を編集して、次の項目を変更します。
- API エンドポイント
- タイムアウト値
- エラー処理の動作
- 追加のツール
テスト
機能をテストするには、サンプルスクリプトを実行します。
python examples/usage_example.py
ヘルスチェックエンドポイント:
curl https://shutter-mcp-b76e270d48c5.herokuapp.com/health
ローカルでのテスト:
curl http://localhost:5002/health
プロジェクト構成
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
セキュリティに関する注意事項
重要:これは重大な制限のあるアルファ版ソフトウェアです。
- デモ実装:現在の暗号化はデモ目的のみです
- テストネットのみ:Chiado テストネットを使用するため、本番データには適していません
- 本番環境向けの暗号化ではありません:Shutter の暗号化アルゴリズムはまだ完全には実装されていません
- 試験段階:API と機能は予告なく変更される場合があります
- データの保証なし:永続性や可用性の保証はありません
本番環境で使用する場合:
- 適切な Shutter 暗号化アルゴリズムを実装します
- 利用可能になったらメインネットにデプロイします
- 認証とアクセス制御を追加します
- 適切な鍵管理を実装します
- 本番環境のデプロイでは HTTPS を使用します
トラブルシューティング
サーバーが起動しない
- Python のバージョンを確認します(3.11 以降が必要です)
- すべての依存関係がインストールされていることを確認します:
pip install -r requirements.txt - ポートが使用可能か確認します:
lsof -i :5002(Linux/Mac)またはnetstat -an | findstr :5002(Windows)
Claude との統合に関する問題
- サーバーにインターネットからアクセスできることを確認します
- MCP エンドポイントが適切な応答を返すことを確認します:
curl https://shutter-mcp-b76e270d48c5.herokuapp.com/mcp - クロスオリジンリクエストに対する CORS 設定を確認します
VS Code との統合に関する問題
- MCP 拡張機能がインストールされ、有効になっていることを確認します
- VS Code の設定でサーバー構成を確認します
- 開発にはローカルサーバーを使用します:
http://localhost:5002/mcp
Shutter API のエラー
- インターネット接続を確認します
- Shutter Network のステータスを確認します
- タイムスタンプが未来の日時であることを確認します
開発
新しいツールの追加
@mcp.tool()デコレーターを使ってツール関数を定義します- パラメーターの説明を含む、詳細な docstring を追加します
- 適切なエラー処理とユーザー向けの案内を追加します
- サンプルスクリプトでテストします
時刻の解析の変更
ShutterTimelock クラスの parse_time_expression メソッドを編集して、追加の時刻形式に対応させます。
コントリビュート
- リポジトリーをフォークします
- 機能ブランチを作成します
- 変更を加えます
- テストとドキュメントを追加します
- プルリクエストを送信します
ライセンス
MIT License — 詳細は LICENSE ファイルを参照してください。
謝辞
- タイムロック暗号化インフラストラクチャを提供してくださったShutter Network
- 統合フレームワークを提供してくださったModel Context Protocol
- Web フレームワークを提供してくださったFastAPI
サポート
- 問題:GitHub の Issue を作成してください
- ドキュメント:
docs/ディレクトリを参照してください - 使用例:
examples/ディレクトリを確認してください
バージョン: 2.1.0
最終更新日: 2025年8月
互換性: Claude Web、VS Code MCP、MCP Protocol 2024-11-05
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。