overview
ContextVMプロトコルの基礎、アーキテクチャ、コア概念を理解します。ユーザーがContextVMの基本、MCPとNostrの連携方法、プロトコル設計原則、イベント種別、または分散通信におけるMCPとNostrの関係について学ぶ必要がある場合に使用します。
description の原文を見る
Understand ContextVM protocol fundamentals, architecture, and core concepts. Use when users need to learn about ContextVM basics, how it bridges MCP with Nostr, protocol design principles, event kinds, or the relationship between MCP and Nostr in decentralized communication.
SKILL.md 本文
ContextVM概要
ContextVM (Context Virtual Machine) は、Model Context Protocol (MCP) とNostrネットワークを橋渡しするプロトコルであり、MCPサーバーとクライアント間の分散通信を実現します。
コアコンセプト
ContextVMはMCPのトランスポートレイヤーとして機能し、NostrのリレーネットワークをMCPのJSON-RPCセマンティクスを保持したままの通信メカニズムとして使用します。
┌─────────────────────────────────────────────────────────────┐
│ MCP Application Layer │
│ (Tools, Resources, Prompts, Sampling) │
├─────────────────────────────────────────────────────────────┤
│ ContextVM Transport Layer │
│ (Nostr events, Encryption, Public Key Cryptography) │
├─────────────────────────────────────────────────────────────┤
│ Nostr Relay Network │
│ (wss://relay.contextvm.org, etc.) │
└─────────────────────────────────────────────────────────────┘
主な機能
- 分散通信: 中央サーバーは不要です。Nostrの分散リレーネットワークを使用します
- セキュリティ第一: 検証と認可のためにNostrの暗号化プリミティブを活用します
- 公開鍵アイデンティティ: サーバーとクライアントはNostr公開鍵で識別されます
- オプション暗号化: NIP-44 ギフトラッピングを通じたエンドツーエンド暗号化
- サーバーディスカバリー: 置換可能なイベントを通じた公開サーバーアナウンスメント
プロトコルアーキテクチャ
3層設計
- トランスポートレイヤー: Nostrイベントとリレー
- メッセージレイヤー: イベントコンテンツに埋め込まれたJSON-RPC MCPメッセージ
- メタデータレイヤー: アドレス指定と相関用のNostrイベントタグ
主要アクター
| アクター | 役割 | 識別方法 |
|---|---|---|
| サーバー | MCP機能を公開 | 公開鍵 + リレー |
| クライアント | サーバー機能を利用 | 公開鍵 |
| リレー | メッセージを伝播 | URL (wss://...) |
イベント種別
ContextVMは以下のNostrイベント種別を使用します:
| 種別 | 目的 | 永続性 |
|---|---|---|
25910 | すべてのContextVMメッセージ (一時的) | リレーに保存されない |
11316 | サーバーアナウンスメント | 置換可能 |
11317 | ツールリスト | 置換可能 |
11318 | リソースリスト | 置換可能 |
11319 | リソーステンプレートリスト | 置換可能 |
11320 | プロンプトリスト | 置換可能 |
1059 | ギフトラップ (暗号化メッセージ) | 一時的 |
メッセージフロー
接続プロセス
- ディスカバリー: クライアントが公開鍵またはリレークエリを通じてサーバーを発見
- 初期化: Nostr上での標準MCPハンドシェイク
- 操作: クライアントがkind 25910イベントを通じてツール呼び出しやリソースリストを実行
- 終了: どちらかのパーティが切断すると接続が閉じられる
イベント構造
{
"kind": 25910,
"pubkey": "<sender-public-key>",
"content": "{\"jsonrpc\":\"2.0\",...}",
"tags": [
["p", "<recipient-public-key>"],
["e", "<correlation-event-id>"]
]
}
セキュリティモデル
公開鍵暗号
- すべてのメッセージは暗号署名されます
- サーバーアイデンティティ = 公開鍵 (リレー間でポータブル)
- クライアント認可は公開鍵ホワイトリストを通じて実施
暗号化 (CEP-4)
- ギフトラップ (kind 1059) を通じたオプションのNIP-44暗号化
- 初期化時にネゴシエートされます
- サーバーは
support_encryptionタグで対応を通知
Nostr的アプローチ
ContextVMは他のNostrベースのRPCシステム (DVMなど) と同じコアパターンに従います: 署名されたリクエストイベントを発行し、相関するレスポンスをリッスンします。違いはメッセージ構造にあります。CVMはプロバイダー固有のペイロードではなく、MCPを通じたJSON-RPCを使用します。
この基礎を理解するには:
references/nostr-way-without-sdks.mdを読む — CVMの背後にあるNostrプリミティブ (SDK以外の実装用)
参考資料
詳細な仕様については、以下を参照してください:
references/protocol-spec.md- 完全なプロトコル仕様references/ceps.md- ContextVM拡張提案references/mcp-integration.md- MCPプロトコル統合の詳細
エコシステム案内 (用途に応じた選択)
以下の決定表を使用して、適切なコンポーネント/スキルに進んでください:
| 目的 | 推奨パス | スキル |
|---|---|---|
| プロトコルとイベント種別を学ぶ | 仕様とCEPを読む | SKILL.md + references/protocol-spec.md |
| コアコンセプト、アーキテクチャ、FAQを理解する | コンセプトとアーキテクチャ概要 | ../concepts/SKILL.md |
| 新しいContextVM固有のサーバーを構築する | McpServer + NostrServerTransport | ../server-dev/SKILL.md |
| 新しいContextVM固有のクライアントを構築する | Client + NostrClientTransport | ../client-dev/SKILL.md |
| 既存のMCPサーバーをNostrに橋渡しする | ゲートウェイパターン (NostrMCPGateway) | ../server-dev/references/gateway-pattern.md |
| 既存のMCPクライアントをNostrに橋渡しする | プロキシパターン (NostrMCPProxy) | ../client-dev/references/proxy-pattern.md |
| SDK レベルの詳細 (インターフェース、定数、ロギング) | @contextvm/sdk リファレンス | ../typescript-sdk/SKILL.md |
| 機能に支払い機能を追加 (CEP-8) | 支払いミドルウェア + プロセッサー | ../payments/SKILL.md |
| 本番運用 (鍵、Docker、監視) | デプロイメントチェックリスト | ../deployment/SKILL.md |
| 接続の問題、エラー、障害を診断する | トラブルシューティングガイド | ../troubleshooting/SKILL.md |
有用な公開エントリーポイント:
- ContextVMドキュメント: https://docs.contextvm.org
- ContextVM組織: https://contextvm.org
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- flox1an
- リポジトリ
- flox1an/nostube
- ライセンス
- MIT
- 最終更新
- 2026/5/8
Source: https://github.com/flox1an/nostube / ライセンス: MIT