关于 Ethereum & EVM Message Signing
Signing MCP Server 是一个 Ethereum 消息签名 MCP 服务,支持 EIP-191 personal_sign 与 EIP-712 结构化数据签名。它面向需要签名、验签或恢复签名者地址的开发者,并提供常见 EIP-712 模板。
主要功能
- 01支持 EIP-191 personal_sign 签名
- 02支持 EIP-712 结构化数据签名与哈希
- 03提供签名验证与签名者地址恢复
- 04可拆分、组合和转换签名格式
- 05内置 Permit、Order 等 EIP-712 模板
适用场景
- 01为 ERC-20 Permit 生成签名
- 02调试和验证钱包签名结果
- 03学习 EIP-191 与 EIP-712 的签名格式
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露签名、验签和签名工具,以及相关规范资源和提示词工作流。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Signing MCP Server
一个 MCP(Model Context Protocol)服务,提供全面的 Ethereum 消息签名功能,包括 EIP-191 personal_sign 和 EIP-712 类型化结构化数据。
功能
工具(共 12 个)
EIP-191 消息签名
- sign_message - 使用 EIP-191 personal_sign 格式对文本消息签名
- sign_message_hex - 使用 EIP-191 格式对十六进制编码的字节签名
- verify_message - 验证 EIP-191 签名消息
- recover_signer - 从签名消息中恢复签名者地址
EIP-712 类型化数据
- sign_typed_data - 对 EIP-712 类型化结构化数据签名
- verify_typed_data - 验证 EIP-712 类型化数据签名
- recover_typed_data_signer - 从类型化数据签名中恢复签名者
- hash_typed_data - 在不签名的情况下计算 EIP-712 哈希
签名工具
- decompose_signature - 将签名拆分为 v、r、s 组件
- compose_signature - 从 v、r、s 组件组合签名
- normalize_signature - 在签名格式之间转换(v 的 27/28 与 0/1)
高级操作
- sign_hash - 对原始 32 字节哈希签名(需要确认)
资源(共 4 个)
- eip191-specification - 完整的 EIP-191 签名数据标准
- eip712-specification - 完整的 EIP-712 类型化数据标准
- signature-formats - 关于 Ethereum 签名格式的文档
- common-typed-data - 常见 EIP-712 结构的模板
提示词(共 4 个)
- sign_message_workflow - 指导完成消息签名流程
- typed_data_workflow - 指导完成 EIP-712 类型化数据签名
- signature_verification - 帮助验证和调试签名
- permit_signing - 针对 ERC-20 permit 的专门工作流
安装
pip install signing-mcp-server
或从源码安装:
cd signing-mcp-server
pip install -e .
用法
运行服务
signing-mcp-server
在 Claude Desktop 中配置
添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"signing": {
"command": "signing-mcp-server"
}
}
}
工具示例
签名消息(EIP-191)
# Input
{
"message": "Hello, Ethereum!",
"private_key": "0x..."
}
# Output
{
"message": "Hello, Ethereum!",
"signer": "0xABC123...",
"signature": "0x...",
"v": 28,
"r": "0x...",
"s": "0x...",
"message_hash": "0x..."
}
签名类型化数据(EIP-712)
# Input
{
"typed_data": {
"types": {...},
"primaryType": "Permit",
"domain": {...},
"message": {...}
},
"private_key": "0x..."
}
# Output
{
"signer": "0xABC123...",
"signature": "0x...",
"domain_separator": "0x...",
"struct_hash": "0x...",
"signing_hash": "0x..."
}
验证签名
# Input
{
"message": "Hello, Ethereum!",
"signature": "0x...",
"expected_address": "0xABC123..."
}
# Output
{
"is_valid": true,
"recovered_address": "0xABC123...",
"expected_address": "0xABC123...",
"match": true
}
安全注意事项
- 私钥绝不会被记录或持久化
- sign_hash 需要明确的风险确认 - 对原始哈希签名可能很危险
- 所有操作均使用 eth-account 的安全实现
- 仅供教育和开发用途
EIP-712 模板
该服务包含常见类型化数据结构的模板:
- Permit - ERC-20 代币 permit(EIP-2612)
- Permit2 - Uniswap 的通用 permit 系统
- Order - DEX 限价订单
- Delegation - 投票权委托
- Mail - EIP-712 规范示例
许可证
MIT
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。