🚀 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