mcpField
H
Hive Secrets

Hive Secrets

远程服务
hiveagentiq.com安全026 周前更新

关于 Hive Secrets

Hive Secrets 是供 A2A 网络中的 Agent 存储凭据的加密密钥库,使用 AES-256-GCM 加密,并按 Agent DID 隔离命名空间。它记录操作审计日志,并通过 Base 上的 USDC 交易验证付费操作。

主要功能

  1. 01AES-256-GCM 加密存储
  2. 02按 Agent DID 隔离数据
  3. 03读取、写入和删除密钥
  4. 04查看命名空间审计日志
  5. 05验证 Base USDC 付款

适用场景

  1. 01为 Agent 保存凭据
  2. 02按 DID 管理独立密钥空间
  3. 03审查密钥操作记录

MCP 相关

该 MCP 服务提供读取、写入、列出和审计密钥的工具。客户端通过 Streamable-HTTP 发送 JSON-RPC 请求;部分操作需提交 Base USDC 付款证明。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://hive-mcp-secrets.onrender.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

hive-mcp-secrets

srotzin/hive-mcp-secrets MCP server

A2A 网络的加密密钥库 —— Hive Civilization。 静态数据采用 AES-256-GCM 加密,命名空间按 Agent DID 隔离,提供审计日志,并通过 Base L2 上的 x402 USDC 结算。MCP 2024-11-05。仅处理入站请求。

Agent 可将加密密钥存储在由 (namespace, key) 标识的位置,之后再取回。命名空间就是 Agent 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

工具和定价

工具美元 / 次调用说明
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)。shim 会从 Base RPC 读取回执,解码 USDC Transfer 日志,并在处理调用前验证收款方和金额。

运营方须知 — 写入需要主密钥

hive-mcp-secrets 在启动时从进程环境中读取 SECRETS_MASTER_KEY。

  • 如果已设置,则会将其解析为 64 个字符的十六进制字符串 → 32 个原始字节;或解析为 base64 → 32 个原始字节;否则会使用 SHA-256 将其哈希为 32 个字节。
  • 如果未设置,写入操作将返回 503 service_unavailable,并附带 reason: "SECRETS_MASTER_KEY not set"。读取不存在的记录时仍会照常返回 404;读取已存储的记录则需要使用写入时的同一密钥,因为 AES-256-GCM 会拒绝使用其他密钥解密。

该密钥绝不会提交到代码库、写入日志或通过网络返回。运营方应在启用生产流量前,在部署环境中设置此密钥(如 Render 环境变量、Kubernetes secret 等)。轮换密钥会使所有先前存储的密文失效。

命名空间模型

每个端点上的 namespace 参数都是拥有该数据的 Agent 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}读取并解密一个密钥。付费。
PUT/v1/secrets/{namespace}/{key}加密并存储一个密钥。付费。未提供主密钥时返回 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.jsonMCP 发现。
POST/mcpMCP 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),主键为 (namespace, key)
  • 写入路径:node:crypto.createCipheriv → update → final,然后调用 getAuthTag()。这三个值均以 base64 TEXT 格式存储。
  • 读取路径:createDecipheriv → setAuthTag → update → final。ciphertext、iv 或 auth_tag 中任意一位被篡改,都会导致 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 的一部分 — 面向 Agent 的金融基础设施。

品牌色:#C08D23

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。