关于 SchemaPin 🧷
SchemaPin 为 AI Agent 和 MCP 工具开发者提供模式签名与验证工具,使用 ECDSA、密钥发现与固定、撤销机制及离线信任包,帮助检测篡改。
主要功能
- 01ECDSA 模式签名
- 02公钥发现
- 03TOFU 密钥固定
- 04密钥撤销与信任包
- 05AgentSkills 文件夹签名
- 06支持 Python、JavaScript、Go 和 Rust
适用场景
- 01在 Agent 使用前验证工具模式
- 02签署并分发技能文件夹
- 03在离线环境检查签名
MCP 相关
SchemaPin 为 AI Agent 和 MCP 服务使用的工具模式提供加密签名与验证,帮助 MCP 客户端检测模式篡改和密钥替换。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
SchemaPin
面向 AI Agent 和 MCP 服务的加密工具架构验证。通过 ECDSA 签名、DNS 锚定信任和 TOFU 密钥固定,防止“MCP Rug Pull”攻击。
功能介绍
SchemaPin 让工具开发者使用 ECDSA P-256 密钥对工具架构和技能文件夹进行签名,并让 AI Agent 验证架构是否遭到篡改。可通过 .well-known/schemapin.json(RFC 8615)发现公钥,首次使用时信任(TOFU)密钥固定可防止后续密钥被替换。
- ECDSA P-256 + SHA-256 加密签名
.well-known发现机制,用于查找公钥(RFC 8615)- TOFU 密钥固定,防止密钥替换攻击
- 密钥撤销,支持独立的已签名撤销文档和结构化原因
- 信任包,支持离线和隔离网络验证
- 可插拔解析器——
.well-known、本地文件、信任包或链式解析 - 技能文件夹签名,适用于 AgentSkills(SKILL.md + 文件清单)
- 跨语言支持——Python、JavaScript、Go 和 Rust 实现
v1.4.0-alpha.2(全部四种语言):新增三个可选功能——签名过期(
expires_at),支持失败时默认拒绝的验证方式(可选择退出的allow_expired);在_schemapin.{domain}进行 DNS TXT 交叉验证,实现第二渠道信任;以及架构版本绑定(schema_version+previous_hash),可选择启用谱系链强制检查,以抵御 rug-pull 替换攻击。v1.3 验证器会忽略新字段;v1.4 验证器可处理两者。其余 v1.4 功能(规范化 ID、A2A 上下文、A2A 信任包、感知扫描的签名、跨 Agent 架构缓存)将在稳定版 v1.4.0 发布前的后续 alpha 版本中推出。
快速开始
from schemapin.crypto import KeyManager
from schemapin.utils import SchemaSigningWorkflow, SchemaVerificationWorkflow
# Sign a schema
private_key, public_key = KeyManager.generate_keypair()
signer = SchemaSigningWorkflow(KeyManager.export_private_key_pem(private_key))
signature = signer.sign_schema({"name": "my_tool", "parameters": {...}})
# Verify a schema
verifier = SchemaVerificationWorkflow()
result = verifier.verify_schema(schema, signature, "example.com/my_tool", "example.com")
安装
Python
即将发布的安全版本要求 Python 3.10 或更高版本。
pip install schemapin
JavaScript
npm install schemapin
Go
go install github.com/ThirdKeyAi/schemapin/go/cmd/...@latest
Rust
即将发布的安全版本要求 Rust 1.89 或更高版本。
[dependencies]
schemapin = "1.3.0"
# v1.4.0-alpha.2 is also published — opt in for signature expiration,
# DNS TXT cross-verification, and schema version binding:
# schemapin = { version = "1.4.0-alpha.2", features = ["dns"] }
文档
| 主题 | 链接 |
|---|---|
| 入门指南 | docs.schemapin.org/getting-started |
| API 参考 | docs.schemapin.org/api-reference |
| 技能签名 | docs.schemapin.org/skill-signing |
| 信任包 | docs.schemapin.org/trust-bundles |
| 撤销 | docs.schemapin.org/revocation |
| 签名过期 (v1.4-alpha,全部 4 种语言) | docs.schemapin.org/signature-expiration |
| DNS TXT 交叉验证 (v1.4-alpha,全部 4 种语言) | docs.schemapin.org/dns-txt |
| 架构版本绑定 (v1.4-alpha,全部 4 种语言) | docs.schemapin.org/schema-version-binding |
| 部署 | docs.schemapin.org/deployment |
| 故障排查 | docs.schemapin.org/troubleshooting |
| 技术规范 | TECHNICAL_SPECIFICATION.md |
项目结构
python/ # Python SDK (PyPI: schemapin)
javascript/ # JavaScript SDK (npm: schemapin)
go/ # Go SDK
rust/ # Rust SDK (crates.io: schemapin)
server/ # Production .well-known endpoint server
许可证
MIT — Jascha Wanger / ThirdKey.ai
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。