关于 bray
bray 是面向 AI Agent 和个人的 Nostr MCP 服务、CLI 与 TypeScript SDK,涵盖社交、消息、身份、信任、钱包和发布操作,并支持加密的 Agent 间任务派发。
主要功能
- 01Nostr 身份与社交工具
- 02加密私信
- 03信任与身份验证
- 04发布、群组与日历
- 05Agent 任务派发
- 06CLI 与 TypeScript SDK
适用场景
- 01管理 Nostr 帖子和消息
- 02查询身份与信任信息
- 03向其他 Agent 发送加密任务
- 04发布文章或管理社区
MCP 相关
bray 通过可直接调用的工具和可搜索的操作目录,向 MCP 客户端提供 Nostr 操作。默认通过 stdio 启动为 MCP 服务,也支持 HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y nostr-brayNOSTR_SECRET_KEY密钥Nostr secret key (nsec, hex, or BIP-39 mnemonic)NOSTR_RELAYSComma-separated list of Nostr relay WebSocket URLsNWC_URI密钥Nostr Wallet Connect URI for Lightning zaps本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
nostr-bray
为 AI 和人类打造的、注重信任的 Nostr MCP 服务、CLI 和 TypeScript SDK。 29 个分组中共包含 261 个工具。与模型无关。可与 Claude、ChatGPT、Gemini、Cursor、Windsurf 或任何 MCP 客户端配合使用。
快速开始
需要 Node.js 24 或更高版本。
全局安装或通过 npx 运行:
npm install -g nostr-bray
刚接触 Nostr?先生成一个密钥——这一步无需任何配置,并会显示你的 npub 和 24 个单词的助记词(请抄下来;它就是密钥):
npx nostr-bray create
添加到 MCP 客户端配置中:
{
"mcpServers": {
"nostr": {
"command": "npx",
"args": ["nostr-bray"],
"env": {
"NOSTR_SECRET_KEY": "nsec1...",
"NOSTR_RELAYS": "wss://relay.damus.io,wss://nos.lol"
}
}
}
}
不带参数运行 npx nostr-bray 会启动 MCP 服务(默认使用 stdio;设置 TRANSPORT=http 时使用 HTTP);子命令则运行 CLI。
然后让你的 AI 调用 whoami,验证是否正常运行。
用于生产环境时,优先选择 Heartwood 或任何 NIP-46 bunker(你的密钥不会离开签名设备):
{
"mcpServers": {
"nostr": {
"command": "npx",
"args": ["nostr-bray"],
"env": {
"BUNKER_URI": "bunker://...",
"NOSTR_RELAYS": "wss://relay.damus.io,wss://nos.lol"
}
}
}
}
身份验证层级(从优到劣)
| 层级 | 方法 | 密钥暴露情况 |
|---|---|---|
| Heartwood | 专用签名设备(BUNKER_URI) | 密钥不会离开签名设备。支持 nsec-tree 派生、按客户端设置权限,以及由设备支持的证明。 |
| 软件 bunker | 任何 NIP-46 bunker(BUNKER_URI) | 密钥由独立进程持有。bray 永远不会看到密钥。 |
| ncryptsec | NIP-49 加密密钥(NOSTR_NCRYPTSEC) | 密钥静态加密,并在启动时于内存中解密。 |
| 密钥文件 | 文件路径(NOSTR_SECRET_KEY_FILE) | 密钥存储在磁盘上,读取一次后会删除环境变量。 |
| 环境变量 | 内联密钥(NOSTR_SECRET_KEY) | 密钥在进程环境中可见。仅用于开发。 |
推荐工具
在注册的 261 个工具中,有 50 个被推荐,可直接从 MCP 工具列表调用。其余工具均已编入目录,可使用 search-actions 查找并用 execute-action 运行(这两个工具始终可用)。不会推荐任何会产生支出的工具。
- 身份与社交:
whoami、identity-switch、social-post、social-reply、social-feed、social-profile-get、dm-send、dm-read、dm-conversation - 钱包、中继与信任:
zap-balance、relay-query、signet-badge、trust-score、verify-person、vault-read - 发布:
article-publish、article-read、article-list、search-notes、search-profiles、hashtag-feed - 徽章、社区与日历:
badge-create、badge-award、badge-accept、badge-list、community-create、community-feed、community-post、community-approve、community-list、calendar-create、calendar-read、calendar-rsvp - 信息列表:
listing-create、listing-read、listing-search、listing-close - 调度(13 个):
dispatch-send、dispatch-check、dispatch-reply、dispatch-ack、dispatch-status、dispatch-cancel、dispatch-refuse、dispatch-failure、dispatch-query、dispatch-propose、dispatch-capability-publish、dispatch-capability-discover、dispatch-capability-read
只有当 DISPATCH_IDENTITIES 指向身份文件时,才会注册调度工具;若未配置,则会推荐 37 个工具。
工具分组
| 分组 | 工具数 | 主要示例 |
|---|---|---|
| 身份 | 16 | whoami、identity-derive-persona、identity-switch、identity-prove、nip05-lookup |
| 社交 | 15 | social-post、social-reply、social-feed、contacts-follow、social-notifications |
| 私信 | 4 | dm-send、dm-read、dm-conversation |
| 信任 | 22 | trust-attest、trust-ring-prove、trust-spoken-challenge、trust-attest-chain |
| 派发 | 13 | dispatch-send、dispatch-check、dispatch-reply、dispatch-capability-discover |
| 中继 | 13 | relay-query、relay-set、relay-discover、cast-spell、relay-health |
| 审核 | 16 | label-create、list-mute、list-bookmark、list-followset-create、moderation-filter |
| 市场 | 16 | marketplace-discover、marketplace-call、listing-create、listing-search |
| 安全 | 14 | canary-session-create、canary-group-create、canary-duress-signal、safety-activate |
| Blossom | 10 | blossom-upload、blossom-mirror、blossom-verify、blossom-repair |
| 隐私 | 10 | privacy-commit、privacy-prove-range、privacy-prove-age、privacy-publish-proof |
| Zap | 9 | zap-send、zap-balance、zap-make-invoice、zap-decode |
| 钱包服务 | 5 | wallet-grant、wallet-grants、wallet-revoke、wallet-refill、wallet-serve |
| 保险库 | 9 | vault-create、vault-encrypt、vault-share、vault-rotate |
| 工作流 | 7 | trust-score、verify-person、identity-setup、relay-health、feed-discover |
| Signet | 7 | signet-badge、signet-vouch、signet-credentials、signet-challenge |
| 社区 | 5 | community-create、community-feed、community-post、community-approve |
| 徽章 | 4 | badge-create、badge-award、badge-accept、badge-list |
| 群组(NIP-29) | 20 | group-inspect、group-invite-create、group-forum-comment、group-delete |
| 文章 | 3 | article-publish、article-read、article-list |
| 日历 | 3 | calendar-create、calendar-read、calendar-rsvp |
| Wiki | 3 | wiki-publish、wiki-read、wiki-list |
| 搜索 | 3 | search-notes、search-profiles、hashtag-feed |
| 定时发布 | 4 | post-schedule、post-queue-list、post-queue-cancel、publish-event |
| 社区 NIP | 2 | nip-publish、nip-read |
| 实用工具 | 23 | decode、validate-event、verify-event、gift-wrap、gift-unwrap、kind-info、nip44-encrypt、tombstone |
| 同步(NIP-77) | 1 | sync-plan(拉取/推送是显式的 CLI 和 SDK 操作) |
| 处理程序 | 2 | handler-publish、handler-discover |
| 目录 | 2 | search-actions、execute-action |
使用 search-actions 按关键词查找工具,然后使用 execute-action 运行它们。
协议基础:语义事件验证、 NIP-77 协调和中继作用域的 NIP-29 群组。
派发:AI 对 AI 协作
派发让 AI Agent 能够通过加密的 Nostr 私信协作。任何兼容 MCP 的客户端都可以向其他 Agent 发送结构化任务并接收结果。
**13 种消息类型:**发送、检查、回复、确认、状态、取消、拒绝、失败、查询、提议、能力发布、能力发现、能力读取。
**NIP-89 能力发现:**Agent 发布自己能够执行的操作。其他 Agent 按主题发现能力,然后自动将任务路由给合适的协作者。
dispatch-send("alice", "think", "Analyse the trade-offs of NIP-44 vs NIP-04")
dispatch-check() → inbox with pending tasks
dispatch-reply(taskId, result) → send results back encrypted
所有消息均经过 NIP-44 加密。收件人可通过名称、NIP-05、npub 或十六进制值解析。
身份解析器
所有接受收件人的工具都会使用通用身份解析。你无需手动查找十六进制公钥。
支持的格式:
- 名称 ——
"alice"(从你的 dispatch 联系人中解析) - NIP-05 ——
"[email protected]"(HTTP 查询) - npub ——
"npub1abc..."(NIP-19 解码) - 十六进制 ——
"a1b2c3..."(64 个字符,直接传递)
定时发布
现在签名事件,稍后发布。事件会立即使用你当前的密钥签名,然后暂存在队列中,直到预定时间。
post-schedule("Good morning!", "2026-04-01T08:00:00Z")
post-queue-list() → view pending scheduled posts
post-queue-cancel(id) → cancel before it publishes
NIP 支持情况
nostr-bray 实现或集成了以下 NIP:
| NIP | 内容 |
|---|---|
| NIP-01 | 事件、签名、中继协议 |
| NIP-02 | 关注列表 |
| NIP-05 | DNS 身份(查询、验证、中继提示) |
| NIP-09 | 事件删除 |
| NIP-11 | 中继信息 |
| NIP-17 | 私信(礼物封装,默认) |
| NIP-19 | bech32 编码(npub、nsec、nprofile、nevent、naddr) |
| NIP-23 | 长篇文章(kind 30023) |
| NIP-22 | 群组论坛中符合架构规范的评论 |
| NIP-29 | 中继范围内的群组、聊天、论坛、邀请和管理 |
| NIP-32 | 标签 |
| NIP-40 | 过期标签 |
| NIP-42 | 中继身份验证 |
| NIP-44 | 加密载荷 v2 |
| NIP-45 | 事件计数 |
| NIP-46 | Nostr Connect(bunker) |
| NIP-47 | Nostr Wallet Connect:通过一个钱包连接支付 BOLT-11 账单、查询余额和账单,以及进行范围受限的消费。仅支持 NIP-44 v2 |
| NIP-49 | 私钥加密(ncryptsec) |
| NIP-50 | 搜索 |
| NIP-51 | 列表(静音、置顶、关注集、书签) |
| NIP-52 | 日历事件 |
| NIP-54 | Wiki 页面 |
| NIP-57 | 可读取 Zap 收据(kind 9735)。bray 可通过 NIP-47 支付 BOLT-11 账单,但不会生成 kind 9734 Zap 请求,也不会解析 LNURL,因此目前无法单独为个人资料或笔记发送 Zap |
| NIP-58 | 徽章 |
| NIP-65 | 中继列表元数据 |
| NIP-72 | 社区 |
| NIP-77 | Negentropy ID 对账,并提供如实的 REQ 回退 |
| NIP-78 | 应用专属数据 |
| NIP-85 | 信任排名 |
| NIP-89 | 推荐应用(发现 dispatch 能力) |
| NIP-96 | HTTP 文件存储(Blossom) |
| NIP-99 | 分类列表 |
| NIP-A7 | 咒语(kind 777 —— 执行已保存的查询) |
| NIP-VA | 可验证证明(kind 31000) |
配置
配置文件(推荐)
创建 ~/.config/bray/config.json(或 ~/.nostr/bray.json):
{
"bunkerUriFile": "/Users/you/.nostr/bunker-uri",
"relays": ["wss://relay.damus.io", "wss://nos.lol"],
"trustMode": "annotate"
}
密钥通过文件路径(bunkerUriFile、secretKeyFile、nwcUriFile)引用,因此不会出现在配置文件中。
trustMode 可以设为 strict(隐藏来自不可信公钥的内容)、annotate(显示信任评分)或 off(不进行筛选)。默认值为 annotate;遇到无法识别的值时也会回退为 annotate。TRUST_MODE 环境变量会覆盖配置文件中的设置。
搜索顺序:BRAY_CONFIG 环境变量 > $XDG_CONFIG_HOME/bray/config.json > ~/.nostr/bray.json。
环境变量
| 变量 | 描述 |
|---|---|
BRAY_CONFIG | 配置文件路径 |
BUNKER_URI | NIP-46 bunker URL(最安全) |
BUNKER_URI_FILE | bunker URI 文件路径 |
NOSTR_SECRET_KEY | nsec、hex 或 BIP-39 助记词 |
NOSTR_SECRET_KEY_FILE | 秘密密钥文件路径 |
NOSTR_NCRYPTSEC | NIP-49 加密密钥 |
NOSTR_NCRYPTSEC_PASSWORD | ncryptsec 的密码 |
NWC_URI_FILE | 包含 NWC bearer URI 的私有 0600 文件路径 |
BRAY_MAX_PAYMENT_MSAT | bray 对单笔付款金额的上限,单位为 msat(默认值为 5000000,即 5,000 sats) |
BRAY_MAX_DAILY_MSAT | bray 对任意连续 24 小时内支出的上限,单位为 msat(默认值为 20000000,即 20,000 sats) |
BRAY_WALLET_SERVICE | 设置为 1 以注册 wallet-grant、wallet-refill 和 wallet-serve |
DISPATCH_IDENTITIES | dispatch 身份 Markdown 表格(名称和 hex 公钥)的路径。只有设置此项时才会注册 dispatch 工具;配置文件中的 dispatchIdentities 也有相同作用 |
BRAY_HOME | bray 状态文件的目录(默认值为 $XDG_CONFIG_HOME/bray,否则为 ~/.config/bray) |
NOSTR_RELAYS | 以逗号分隔的中继 URL |
NOSTR_FORBID_PUBKEY | 以逗号分隔的 npub 或 hex,这些密钥绝不能用于此进程的签名。见下文。 |
TOR_PROXY | Tor 的 SOCKS5h 代理 |
NIP04_ENABLED | 设置为 1 以启用旧版 NIP-04 私信 |
TRUST_MODE | strict、annotate(默认值)或 off。见上文的配置文件部分 |
TRANSPORT | stdio(默认值)或 http |
PORT | HTTP 端口(默认值为 3000) |
BIND_ADDRESS | HTTP 绑定地址(默认值为 127.0.0.1) |
BRAY_HTTP_TOKEN | HTTP 传输要求在 Authorization 标头中提供的 bearer token。如果未设置,bray 会生成一个随机 token,并仅在 stderr 中打印一次;你提供的 token 绝不会被回显 |
所有秘密环境变量都会在解析可能失败之前从 process.env 中删除。
不接受原始的 NWC_URI;请使用 NWC_URI_FILE 或 wallet connect <nwc-file>,以确保 bearer 凭据不会出现在进程环境、命令参数或 MCP 工具参数中。用于 NWC 的钱包必须支持 NIP-44 v2 加密;仅支持 NIP-04 的钱包将被拒绝。
此进程绝不能使用的密钥
持有错误密钥启动的 Agent,与正常运行的 Agent 无法区分。每个签名都能通过验证,每个工具都能成功,唯一的异常是 whoami 会悄悄返回其他人的 npub——而驱动它的模型没有理由怀疑这一点,因为告诉它这个结果的正是它自己的工具。
最糟糕的情况是使用主体的密钥:也就是某个人自己的密钥。以主体身份签名的 Agent 可以证明自己属于自己,并批准自己的请求,因为它就是这些检查所寻找的主体。
NOSTR_FORBID_PUBKEY=npub1yourownkey...,npub1anotherhuman...
或配置文件中的 forbidPubkeys。这两种方式都接受 npub 或 hex。激活这些密钥之一时会抛出错误——无论是在启动时、执行 identity-switch 时,还是使用 bunker --persona 时都会如此,因为检查发生在身份激活的时刻,而不是某个特定入口点。无法解析的条目也会导致错误:无法读取的列表不得悄悄允许一切。
每次启动时,活动 npub 都会打印在 stderr 中,因此无需询问 Agent,也能知道“当前使用的是哪个密钥?”
支出限额
硬性限额由钱包自身控制。 将 NWC_URI_FILE(或
wallet connect <file>)指向钱包签发的、带有支出预算的连接。无论 bray
做什么,也无论模型要求它做什么,钱包都不会支付超过该预算的金额。以下所有措施都是 bray 对自身的管控,值得启用,但与钱包的限额不是一回事。
此外,bray 发起的每笔付款(zap-send、marketplace-pay、CLI 中的 zap-send 和 wallet pay、SDK,以及通过下方限定范围的连接发起的付款)都会在发送前经过检查:
- 单笔付款: 不超过
BRAY_MAX_PAYMENT_MSAT(默认 5,000 聪)。 - 每日付款: 任意滚动 24 小时内不超过
BRAY_MAX_DAILY_MSAT(默认 20,000 聪);在实际手续费确定前,会按 1%(最低 1 聪)预留手续费。钱包收到请求前,尝试记录会写入状态目录中的payment-ledger.json,因此重启后不会返还额度。 - 每张发票限付一次: 同一张发票绝不会支付两次;如果某次尝试的结果未知,只有查询确认支付失败后才会重试。
模型可以设置 confirm: true,因此这不代表获得了人工批准。如果 MCP 客户端支持交互式询问,zap-send 和 marketplace-pay 还会直接向你询问,只有得到明确肯定答复后才付款;不支持交互式询问的客户端则会回退到 confirm,但仍受限额约束。zap-send 也不在默认工具列表中:需要通过 search-actions 才能调用。
发放钱包连接
zap-send 会通过你配置的 NWC URI 进行支付。该 URI 对其背后的钱包拥有不受限制的操作权限:它支持的每种方法都可用,没有额度上限,直到 URI 被轮换为止。把它交给 Agent,就等于交出所有权限。
wallet-grant 会针对同一个钱包签发范围受限的支付连接:一个钱包、一份余额,以及几种更受限制的接入方式。它们不是独立的钱包。用于创建或扩大支付权限的工具(wallet-grant、wallet-refill、wallet-serve)仅在设置 BRAY_WALLET_SERVICE=1 时注册;wallet-grants 和 wallet-revoke 始终可用。
wallet-grant { name: "research-agent", methods: ["get_info","pay_invoice"],
budgetMsat: 50000, maxPaymentMsat: 5000 }
wallet-grants # what exists, what it may do, what it has spent
wallet-revoke { nameOrId: "research-agent" }
wallet-refill { nameOrId: "research-agent", budgetMsat: 50000 }
wallet-serve { action: "start" }
wallet-grant 会将新连接的 nostr+walletconnect:// URI 写入 grants 文件旁 wallet-connections/ 目录下的一个 0600 文件,并返回该文件的路径;URI 本身不会出现在工具结果中。
连接可以执行的操作由允许列表规定,默认不授予支付权限,也不会披露任何信息:只有 get_info 和 make_invoice。其他操作需针对每个连接单独启用,并且可以支付的连接必须设置预算——不会意外签发无限额度的授权。连接只能看到自己的信息:
get_balance返回该连接的剩余预算,而不是钱包余额。lookup_invoice只会查询该连接签发或支付的发票;其他发票均会报告为未找到。
这些规则之所以存在,是因为付款无法撤回:
- 每个请求只会处理一次。尝试付款前会先持久化其 ID,因此即使进程在付款过程中退出,恢复后也会知道不能再次尝试——中继可能会两次发送同一个已签名请求。
- 同一连接上的请求会串行处理,因此同时到达的两个请求不会读取到相同的剩余预算。
- 超过五分钟的请求不会得到处理,无论其自身的
expiration标签声称什么。 - 每个连接都有自己的服务密钥:两个授权之间没有任何可供中继关联的信息;撤销一个授权,只需删除其密钥。
- 预算按此处解码的发票金额扣除,另加路由费:费用准备金会被保留,直到钱包报告实际费用。没有注明金额的发票会被拒绝。根据付款方提供的数值核验预算,不算真正的预算。
- 如果钱包明确拒绝付款(例如余额不足),预算会退还,并且不会告知连接钱包拒绝的原因。
- bray 自身的单笔付款和每日限额也适用于这些付款。
- 如果声称付款成功,但其 preimage 无法结清发票,该请求会被拒绝,而不会继续传递。重复转发未经证实的付款声明,会让本服务成为撒谎的一方。
授权保存在 wallet-grants.json 中(权限为 0600,按身份区分),并且仅在 wallet-serve 运行时处理——也就是说,仅在此进程存活期间有效。这一点值得告知收到 URI 的对象:MCP 会话打开时可用的连接,与可整夜持续工作的连接,代表着不同的承诺。
该文件是记录,供机器上的所有 bray 进程共享。同一时间只能有一个进程提供授权服务;服务进程会在每次处理请求前重新读取授权;每次更改都会以加锁方式更新文件,因此从任何进程执行的撤销或充值都会应用于下一个请求,也不会被其他进程的写入覆盖。
CLI
npx nostr-bray whoami # show your npub
npx nostr-bray post "hello from bray!" # publish a note
npx nostr-bray persona work # derive a work persona
npx nostr-bray prove blind # create a linkage proof
npx nostr-bray --help # see all commands
用作库
此软件包也是一个 TypeScript SDK(仅支持 ESM)。nostr-bray/sdk 是工厂 API:
import { createBray } from "nostr-bray/sdk"
const bray = await createBray({
sec: process.env.NOSTR_SECRET_KEY, // or bunkerUri: "bunker://..."
relays: ["wss://relay.damus.io", "wss://nos.lol"],
})
await bray.post("gm nostr")
console.log(bray.npub)
bray.destroy() // zeroise key material
defaultBray() 会根据上述环境变量构建相同的客户端。每个工具组背后的处理程序都作为子路径导出,因此你可以只导入一个工具组,而无需导入其他内容:
| 导入 | 提供的内容 |
|---|---|
nostr-bray | createBray、defaultBray 以及下方所有工具组的处理程序,均重新导出 |
nostr-bray/sdk | createBray 和 defaultBray,即 BrayClient 工厂 API |
nostr-bray/types | 公开配置和结果类型的纯类型导出 |
nostr-bray/identity | 密钥派生、身份角色、关联证明、Shamir 备份、迁移、NIP-05 |
nostr-bray/social | 帖子、私信、信息流、blossom、群组、文章、徽章、日历、社区、wiki、日程安排 |
nostr-bray/trust | 证明、环签名和口述令牌 |
nostr-bray/relay | 中继列表、查询、计数、智能分析、发件箱发布、法术、NIP-42 身份验证、中继 HTTP 调用 |
nostr-bray/zap | NWC 支付、NWC 文件加载和支付保护机制 |
nostr-bray/safety | 受胁迫身份角色以及 CANARY 会话、群组和信标 |
nostr-bray/event | 通用事件构建和发布、NIP-13 工作量证明、NIP-59 礼物封装与解封 |
nostr-bray/event-validation | 根据 kind 注册表进行语义事件验证 |
nostr-bray/util | 解码和编码、NIP-44、ncryptsec、筛选器、NIP 浏览 |
nostr-bray/workflow | 组合式流程,例如信任评分、人员验证和中继健康状况 |
nostr-bray/dispatch | 分发协议消息、能力和身份 |
nostr-bray/marketplace | L402 和 x402 的发现、支付、调用和列表 |
nostr-bray/privacy | 承诺以及零知识范围、年龄和阈值证明 |
nostr-bray/moderation | 标签、静音列表、置顶列表、关注集合、书签 |
nostr-bray/signet | Signet 徽章、凭证、策略和挑战 |
nostr-bray/vault | Dominion 基于纪元的加密保险库 |
nostr-bray/handler | 发布和发现支持 MCP 的处理程序(kind 31990) |
nostr-bray/musig2 | BIP-327 MuSig2 密钥、随机数、部分签名和聚合原语 |
nostr-bray/sync | NIP-77 协调:规划、拉取和推送 |
nostr-bray/admin | NIP-86 中继管理 API 调用 |
文档
面向 AI 助手
请参阅 llms.txt,获取针对 AI 上下文窗口优化的简明摘要;或参阅 llms-full.txt,查看包含参数详情的完整工具文档。
ForgeSworn 工具包的一部分
ForgeSworn 为 Nostr 构建开源加密身份、支付和协调工具。
| 库 | 功能 |
|---|---|
| nsec-tree | 确定性子身份派生 |
| ring-sig | 基于 secp256k1 的 SAG/LSAG 环签名 |
| range-proof | Pedersen 承诺范围证明 |
| canary-kit | 抗胁迫的口头验证 |
| spoken-token | 便于口头传达的验证令牌 |
| toll-booth | L402 支付中间件 |
| geohash-kit | 支持多边形覆盖的 Geohash 工具包 |
| nostr-attestations | NIP-VA 可验证证明 |
| dominion | 基于 Epoch 的加密访问控制 |
| nostr-veil | 保护隐私的信任网络 |
支持
如需反馈问题或请求新功能,请参阅 GitHub Issues。
如果 bray 对你有帮助,欢迎打赏:
- Lightning:
[email protected] - Nostr zaps:
npub1mgvlrnf5hm9yf0n5mf9nqmvarhvxkc6remu5ec3vf8r0txqkuk7su0e7q2
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。