🚀 Shutter MCP
Shutter MCP 是一個模型上下文協議(MCP)服務器,它藉助 Shutter 網絡提供時間鎖加密功能。該服務器允許用戶加密消息,這些消息只能在指定的未來時間之後才能被解密,從而實現無需信任的延時通信。
✨ 主要特性
- 時間鎖加密:加密消息,使其在未來的時間戳解鎖。
- 自然語言時間解析:支持使用如“從現在起 3 個月”這樣的表達式。
- Unix 時間戳支持:可直接輸入時間戳以實現精確計時。
- 支持 Claude Web 和 VS Code MCP。
- 全面的錯誤處理:提供用戶友好的錯誤消息和指導。
- 可用於生產環境:支持 Docker,具備健康檢查和監控功能。
⚠️ 重要提示
ALPHA 軟件:這是使用 Shutter 網絡測試網(Gnosis Chiado)部署的實驗性軟件。請勿將其用於生產環境或處理敏感數據。加密實現僅用於演示目的。
當前限制:
- 演示加密算法(非生產級 Shutter 加密)。
- 測試網部署(僅支持 Chiado 測試網)。
- 不保證數據持久化。
- API 可能會在未通知的情況下發生更改。
🚀 快速開始
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
💻 使用示例
基礎用法
Encrypt this message to unlock in 1 hour: Secret meeting at 3pm
Check decryption status for identity: 0x1234...
Explain how timelock encryption works
高級用法
📚 詳細文檔
可用工具
timelock_encrypt(message, unlock_time)
使用 Shutter 網絡對消息進行時間鎖加密。
參數:
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 網絡使用:
- 閾值密碼學:分佈式密鑰生成和管理。
- 去中心化密鑰守護者:共同管理解密密鑰的節點網絡。
- 基於時間的釋放:密鑰僅在指定的時間戳之後釋放。
- 無需信任的操作:沒有任何一方可以提前解密消息。
使用場景
- 密封投標拍賣:在拍賣結束前隱藏投標。
- 延時公告:安排未來的揭示。
- 死亡開關:如果你未簽到,則消息將解鎖。
- 競賽結果揭曉:在競賽結束前隱藏答案。
- 未來通信:向未來的自己發送消息。
配置
環境變量
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 # 本文件
安全考慮
重要提示:這是具有重大限制的 alpha 軟件:
- 演示實現:當前加密僅用於演示目的。
- 僅測試網:使用 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 網絡狀態。
- 確保時間戳在未來。
開發
添加新工具
- 使用
@mcp.tool() 裝飾器定義工具函數。
- 添加包含參數描述的完整文檔字符串。
- 包含適當的錯誤處理和用戶指導。
- 使用示例腳本進行測試。
修改時間解析
編輯 ShutterTimelock 類中的 parse_time_expression 方法以支持其他時間格式。
貢獻
- 分叉倉庫。
- 創建功能分支。
- 進行更改。
- 添加測試和文檔。
- 提交拉取請求。
📄 許可證
本項目採用 MIT 許可證,詳情請參閱 LICENSE 文件。
致謝
支持
- 問題反饋:在 GitHub 上創建問題。
- 文檔:查看
docs/ 目錄。
- 示例:查看
examples/ 目錄。
版本:2.1.0
最後更新:2025 年 8 月
兼容性:Claude Web、VS Code MCP、MCP 協議 2024 - 11 - 05