🚀 Shutter MCP
Shutter MCPは、Shutter Networkを使用してタイムロック暗号化機能を提供するモデルコンテキストプロトコル(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の設定を開く
- カスタム統合を追加する
- 「カスタム統合を追加」をクリックします。
- URLに
https://shutter-mcp-b76e270d48c5.herokuapp.com/mcpを入力します。
- 「追加」をクリックします。
- 統合をテストする
- 新しい会話を開始します。
- 「Encrypt this message to unlock in 3 months: Hello future!」や「Explain how timelock encryption works」などを試してみます。
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デプロイ
docker-compose up -d
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 months from now」、「1 year from now」
- Unixタイムスタンプ: 「1721905313」
- 絶対日付: 「2024-12-25」、「January 15, 2025」
例:
timelock_encrypt("Secret auction bid: $50,000", "2024-12-31 23:59:59")
check_decryption_status(identity)
タイムロック暗号化されたメッセージが復号可能かどうかを確認します。
パラメーター:
identity (文字列): timelock_encryptから返される識別子
decrypt_timelock_message(identity, encrypted_data)
タイムロックが期限切れになった場合、タイムロック暗号化されたメッセージを復号します。
パラメーター:
identity (文字列): timelock_encryptから返される識別子
encrypted_data (文字列): timelock_encryptから返される暗号化されたデータ
get_unix_timestamp(time_expression)
時間表現をUnixタイムスタンプに変換します。
パラメーター:
time_expression (文字列): 変換する時間(デフォルト: "now")
explain_timelock_encryption()
タイムロック暗号化とその使用方法に関する包括的な説明を取得します。
タイムロック暗号化の仕組み
タイムロック暗号化を使用すると、特定の時間が経過した後にのみ復号できるメッセージを暗号化できます。Shutter Networkは以下の技術を使用しています。
- 閾値暗号化:分散型キー生成と管理
- 分散型キーパー:復号キーを共同で管理するノードのネットワーク
- 時間ベースの解放:指定されたタイムスタンプが経過した後にのみキーが解放されます。
- 信頼性の高い動作:単一の当事者がメッセージを早期に復号することはできません。
ユースケース
- 密封入札オークション:オークション終了まで入札を隠す
- 時間遅延アナウンス:未来の公開を予定する
- デッドマンスイッチ:チェックインしない場合にメッセージが解錠される
- コンテストの公開:コンテスト終了まで解答を隠す
- 未来の通信:未来の自分にメッセージを送る
設定
環境変数
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 # メインサーバーの実装
├── scripts/
│ ├── deploy.sh # デプロイスクリプト
│ └── start.sh # 起動スクリプト
├── examples/
│ └── usage_example.py # 使用例
├── docs/
│ └── API.md # APIドキュメント
├── requirements.txt # Pythonの依存関係
├── Dockerfile # Dockerの設定
├── docker-compose.yml # Docker Composeの設定
├── Procfile # Herokuのプロセス設定
├── deploy-heroku.ps1 # PowerShellのデプロイスクリプト
└── README.md # このファイル
セキュリティに関する考慮事項
重要: これはアルファ版のソフトウェアで、重大な制限があります。
- デモ実装: 現在の暗号化はデモンストレーション目的のみです。
- テストネットのみ: 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()デコレーターを使用してツール関数を定義します。
- パラメーターの説明を含む包括的なドキュメント文字列を追加します。
- 適切なエラーハンドリングとユーザーガイダンスを含めます。
- サンプルスクリプトでテストします。
時間解析の変更
ShutterTimelockクラスのparse_time_expressionメソッドを編集して、追加の時間形式をサポートします。
コントリビュート
- リポジトリをフォークします。
- 機能ブランチを作成します。
- 変更を加えます。
- テストとドキュメントを追加します。
- プルリクエストを送信します。
📄 ライセンス
MITライセンス - 詳細はLICENSEファイルを参照してください。
謝辞
サポート
- 問題の報告: GitHubのIssueを開いてください。
- ドキュメント:
docs/ディレクトリを参照してください。
- サンプル:
examples/ディレクトリを確認してください。
バージョン: 2.1.0
最終更新: 2025年8月
互換性: Claude Web、VS Code MCP、MCP Protocol 2024-11-05