SchemaPin 🧷 について
SchemaPinは、AIエージェントやMCPツールの開発者向けに、スキーマの署名と検証を行うツールキットです。ECDSA署名、鍵の発見と固定、失効、オフライン用の信頼バンドルで改ざん検知を支援します。
主な機能
- 01ECDSAスキーマ署名
- 02公開鍵の発見
- 03TOFU鍵固定
- 04鍵の失効と信頼バンドル
- 05AgentSkillsフォルダーの署名
- 06Python、JavaScript、Go、Rustに対応
活用シーン
- 01エージェント利用前のツールスキーマ検証
- 02スキルフォルダーの署名と配布
- 03オフライン環境での署名確認
MCP 対応
SchemaPinは、AIエージェントやMCPサーバーが使うツールスキーマの暗号署名と検証を提供します。MCPクライアントによるスキーマ改ざんや鍵の差し替えの検知を支援します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
SchemaPin
AI エージェントと MCP サーバー向けの暗号技術によるツールスキーマ検証です。ECDSA 署名、DNS による信頼の固定、TOFU キーピンニングで「MCP Rug Pull」攻撃を防ぎます。
機能
SchemaPin を使うと、ツール開発者は ECDSA P-256 キーでスキーマとスキルフォルダーに署名でき、AI エージェントはスキーマが改ざんされていないことを検証できます。公開鍵は .well-known/schemapin.json(RFC 8615)から検出でき、Trust-On-First-Use ピンニングにより、以降の鍵の差し替えを防ぎます。
- ECDSA P-256 + SHA-256 暗号署名
- 公開鍵の
.well-knownディスカバリー(RFC 8615) - 鍵の差し替え攻撃を防ぐ TOFU キーピンニング
- 署名付きの独立した失効ドキュメントと構造化された理由による 鍵の失効
- オフラインおよびエアギャップ環境での検証向け トラストバンドル
- プラグ可能なリゾルバー —
.well-known、ローカルファイル、トラストバンドル、またはチェーン - AgentSkills 向け スキルフォルダーの署名(SKILL.md + ファイルマニフェスト)
- 複数言語に対応 — Python、JavaScript、Go、Rust の実装
v1.4.0-alpha.2(4 言語すべて):追加のオプション機能が 3 つあります — フェイルクローズ検証(
allow_expiredでオプトアウト)を備えた署名の有効期限(expires_at)、第 2 チャネルで信頼を確保するための_schemapin.{domain}におけるDNS TXT クロス検証、および Rug Pull による差し替えを防ぐオプトインの系譜チェーン適用を実現するスキーマバージョンのバインディング(schema_version+previous_hash)です。v1.3 の検証機能は新しいフィールドを無視し、v1.4 の検証機能はどちらにも対応します。残りの v1.4 項目(正規化 ID、A2A コンテキスト、A2A トラストバンドル、スキャン対応署名、エージェント間スキーマキャッシュ)は、安定版 v1.4.0 の前に後続のアルファ版で提供されます。
クイックスタート
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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。