Hive Secrets について
Hive Secretsは、A2Aネットワークのエージェント向け暗号化認証情報ストアです。AES-256-GCMで保護し、エージェントDIDごとに名前空間を分離します。操作監査ログを記録し、有料操作ではBase上のUSDC決済を検証します。
主な機能
- 01AES-256-GCMによる暗号化保存
- 02エージェントDID単位の名前空間
- 03シークレットの読み書きと削除
- 04名前空間ごとの監査ログ確認
- 05Base USDC決済の検証
活用シーン
- 01エージェントの認証情報を保存
- 02DIDごとにシークレットを分離
- 03シークレット操作履歴を確認
MCP 対応
シークレットの読み取り、書き込み、一覧表示、監査のツールを提供します。クライアントはStreamable-HTTPでJSON-RPCを送り、有料操作にはBase上のUSDC決済証明が必要です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://hive-mcp-secrets.onrender.com/mcpclaude mcp add --transport http srotzin-hive-mcp-secrets https://hive-mcp-secrets.onrender.com/mcp{"mcpServers":{"srotzin-hive-mcp-secrets":{"type":"http","url":"https://hive-mcp-secrets.onrender.com/mcp"}}}Cursor で開く{"servers":{"srotzin-hive-mcp-secrets":{"type":"http","url":"https://hive-mcp-secrets.onrender.com/mcp"}}}VS Code で開く{"mcpServers":{"srotzin-hive-mcp-secrets":{"type":"http","url":"https://hive-mcp-secrets.onrender.com/mcp"}}}{"mcpServers":{"srotzin-hive-mcp-secrets":{"serverUrl":"https://hive-mcp-secrets.onrender.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
hive-mcp-secrets
A2A ネットワーク — Hive Civilization 向けの暗号化シークレットストアです。 保存時の暗号化には AES-256-GCM を使用し、エージェント DID スコープの名前空間、監査ログ、Base L2 上での x402 USDC 決済に対応しています。MCP 2024-11-05。受信専用です。
エージェントは (namespace, key) をキーとして暗号化されたシークレットを保存し、後で取得できます。名前空間はエージェント DID であり、呼び出し元は自身の名前空間のデータのみを参照・書き込みできます。マスターキーは運用者の環境に保管され、コミット、ログ記録、または通信経由で返却されることはありません。
brand : Hive Civilization gold #C08D23 (Pantone 1245 C)
spec : MCP 2024-11-05 / Streamable-HTTP / JSON-RPC 2.0
wallet: W1 MONROE 0x15184bf50b3d3f52b60434f8942b7d52f2eb436e (Base)
crypto: AES-256-GCM, 12-byte IV per record, 16-byte auth tag, node:crypto
クイックスタート
git clone https://github.com/srotzin/hive-mcp-secrets
cd hive-mcp-secrets
npm install
# 32 random bytes as hex — never commit this value
export SECRETS_MASTER_KEY=$(node -e "console.log(require('crypto').randomBytes(32).toString('hex'))")
npm start
# hive-mcp-secrets on :3000
ホスト型エンドポイント:https://hive-mcp-secrets.onrender.com/mcp
ツールと料金
| ツール | USD / 呼び出し | 備考 |
|---|---|---|
secrets_get | $0.002 | シークレットを読み取り、復号します。呼び出し元はその名前空間の所有者である必要があります。 |
secrets_put | $0.005 | シークレットを暗号化して保存します。マスターキーが設定されていない場合は 503 を返します。 |
secrets_list | 無料 | 名前空間内のキーを一覧表示します。Tier 0。 |
secrets_audit | $0.002 | 名前空間の監査ログを読み取ります。 |
すべての支払いは受信専用です。リクエストボディまたは x402-tx-hash ヘッダーで Base USDC の tx_hash(呼び出し元 → W1)を送信します。シムは Base RPC からレシートを読み取り、USDC の Transfer ログをデコードして、呼び出しに応じる前に受取人と金額を検証します。
運用者向け注意事項 — 書き込みにはマスターキーが必要です
hive-mcp-secrets は、起動時にプロセス環境から SECRETS_MASTER_KEY を読み取ります。
- 設定されている場合は、64 文字の 16 進数として解析して 32 バイトの生データにするか、base64 として解析して 32 バイトの生データにします。それ以外の場合は、SHA-256 でハッシュ化して 32 バイトにします。
- 設定されていない場合、書き込みは
reason: "SECRETS_MASTER_KEY not set"を含む503 service_unavailableを返します。存在しないレコードの読み取りは通常どおり404を返します。保存済みレコードの読み取りには、書き込み時と同じキーが必要です。AES-256-GCM は別のキーでは復号できないためです。
キーがリポジトリにコミットされたり、ログに記録されたり、通信経由で返却されたりすることはありません。本番トラフィックを有効にする前に、運用者がデプロイ環境(Render の環境変数、Kubernetes シークレットなど)でキーを設定する必要があります。キーをローテーションすると、以前に保存されたすべての暗号文が無効になります。
名前空間モデル
すべてのエンドポイントの namespace パラメーターは、データを所有するエージェント DID です。すべてのエンドポイントで caller_did === namespace を検証し、一致しない場合は forbidden_namespace_mismatch を返します。v1 にはスーパーユーザーも、名前空間をまたぐ読み取りも、複数 DID 間での共有もありません。
監査ログは名前空間ごとに記録され、get、put、delete、list、audit に加え、payment_required、error:not_found、error:integrity_check_failed などの失敗経路を含むすべての操作を記録します。エントリには caller_did、action、ts_ms と、有料操作の場合は tx_hash、payer、amount_usd が保存されます。
REST エンドポイント
| メソッド | パス | 用途 |
|---|---|---|
GET | /v1/secrets/{namespace}/{key} | シークレットを 1 件読み取り、復号します。有料。 |
PUT | /v1/secrets/{namespace}/{key} | シークレットを 1 件暗号化して保存します。有料。マスターキーがない場合は 503 を返します。 |
DELETE | /v1/secrets/{namespace}/{key} | シークレットを削除します。無料。呼び出し元が所有するデータに限ります。 |
GET | /v1/secrets/{namespace} | 名前空間内のキーを一覧表示します。無料、Tier 0。 |
GET | /v1/secrets/audit | 監査ログを読み取ります。有料。クエリ:namespace、caller_did、since_ms?、until_ms?、limit?。 |
GET | /v1/secrets/today | 本日の収益スナップショットを表示します。無料。 |
GET | /health | master_key_loaded を含むサービスの健全性を表示します。 |
GET | /.well-known/mcp.json | MCP ディスカバリー。 |
POST | /mcp | MCP JSON-RPC。 |
PUT /v1/secrets/{namespace}/{key} のボディ
{
"value": "the-secret-string",
"caller_did": "did:hive:0xabc...",
"tx_hash": "0x...64-char-tx-on-base..."
}
tx_hash がない場合、レスポンスは 402 エンベロープになります。
{
"error": "payment_required",
"x402": {
"type": "x402", "version": "1", "kind": "secrets_put",
"asking_usd": 0.005, "accept_min_usd": 0.005,
"asset": "USDC", "asset_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"network": "base", "pay_to": "0x15184bf50b3d3f52b60434f8942b7d52f2eb436e",
"nonce": "...", "issued_ms": 1714200000000
}
}
暗号化の詳細
- アルゴリズム:
aes-256-gcm(FIPS 認定の AEAD) - キー長:32 バイト
- IV 長:12 バイト。レコードごとに新しい
crypto.randomBytes(12)を使用します - 認証タグ長:16 バイト
- 保存先:SQLite の
secretsテーブル —(namespace, key, ciphertext, iv, auth_tag, created_ms, updated_ms, version)。PRIMARY KEY は(namespace, key)です - 書き込み処理:
node:crypto.createCipheriv → update → finalの後にgetAuthTag()を呼び出します。3 つの値はすべて base64 の TEXT として保存されます - 読み取り処理:
createDecipheriv → setAuthTag → update → final。ciphertext、iv、auth_tagのいずれか 1 ビットでも反転するとfinal()がエラーをスローし、integrity_check_failedとして通知されます
以下のスモークテストでは、改ざんされた暗号文の復号に失敗することを検証します。これは事後に付け加えた整合性チェックではなく、実際の AES-GCM です。
MCP の使用方法
curl -X POST https://hive-mcp-secrets.onrender.com/mcp \
-H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -X POST https://hive-mcp-secrets.onrender.com/mcp \
-H "content-type: application/json" \
-d '{
"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{
"name":"secrets_put",
"arguments":{
"namespace":"did:hive:0xabc",
"key":"openai_api_key",
"value":"sk-...",
"caller_did":"did:hive:0xabc",
"tx_hash":"0x..."
}
}
}'
ローカルスモークテスト
export SECRETS_MASTER_KEY=$(node -e "console.log(require('crypto').randomBytes(32).toString('hex'))")
npm start &
sleep 1
# Tier 0 list (empty)
curl -s "http://localhost:3000/v1/secrets/did:hive:0xa/" | jq .
# PUT without tx_hash → 402 envelope
curl -s -X PUT "http://localhost:3000/v1/secrets/did:hive:0xa/k1" \
-H "content-type: application/json" \
-d '{"value":"hello","caller_did":"did:hive:0xa"}' | jq .
# PUT with stub tx (set VERIFY_ONCHAIN=false locally)
VERIFY_ONCHAIN=false curl -s -X PUT "http://localhost:3000/v1/secrets/did:hive:0xa/k1" \
-H "content-type: application/json" \
-d '{"value":"hello","caller_did":"did:hive:0xa","tx_hash":"0xtest"}' | jq .
# GET round-trip
VERIFY_ONCHAIN=false curl -s "http://localhost:3000/v1/secrets/did:hive:0xa/k1?caller_did=did:hive:0xa&tx_hash=0xtest" | jq .
ホスティング
Render にデプロイされています:srv hive-mcp-secrets、oregon、starter、autoDeploy=true。Render の環境変数 SECRETS_MASTER_KEY は、運用者が設定する必要があります。設定しなくてもデプロイ済みサービスは実行され、/health は master_key_loaded: false を返し、書き込みは 503 を返します。
ライセンス
MIT — LICENSE を参照してください。
Hive Civilization Directory
Hive Civilization の一部 — エージェントネイティブな金融インフラストラクチャです。
- エンドポイントディレクトリ:https://thehiveryiq.com
- ライブリーダーボード:https://hive-a2amev.onrender.com/leaderboard
- 収益ダッシュボード:https://hivemine-dashboard.onrender.com
- その他の MCP サーバー:https://github.com/srotzin?tab=repositories&q=hive-mcp
ブランドカラー:#C08D23
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。