mcpField
N
nwc-mcp

nwc-mcp

本地服务
github.com/llmops-pro金融数据020 周前更新

关于 nwc-mcp

nwc-mcp 是面向 AI Agent 的 Lightning 钱包 MCP 服务,通过 Nostr Wallet Connect(NIP-47)提供余额、发票和支付操作。它以预算上限、目的地白名单、可选二次确认和审计日志约束支出。

主要功能

  1. 01查询余额与交易
  2. 02创建和解析发票
  3. 03支付发票、LN 地址与 LNURL
  4. 04批量支付和 Keysend
  5. 05每日及总额预算限制
  6. 06确认令牌与审计日志

适用场景

  1. 01让 Agent 支付 Lightning 服务费用
  2. 02在预算内为 NOSTR 动态打赏
  3. 03向收款方发送批量付款
  4. 04为私信订单创建收款发票

MCP 相关

该 MCP 服务通过 NIP-47 将钱包查询、收款和支付工具提供给 MCP 客户端。支付可受预算、目的地白名单、二次确认及审计日志限制。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"llmops-pro-nwc": {
"command": "npx",
"args": [
"-y",
"nwc-mcp"
],
"env": {
"NWC_CONNECTION_STRING": "<NWC_CONNECTION_STRING>",
"NWC_DAILY_BUDGET_SATS": "<NWC_DAILY_BUDGET_SATS>",
"NWC_READ_ONLY": "<NWC_READ_ONLY>"
}
}
}
}
启动命令npx -y nwc-mcp
需要配置的环境变量
NWC_CONNECTION_STRING密钥Nostr Wallet Connect connection string (nostr+walletconnect://...)
NWC_DAILY_BUDGET_SATSDaily spend cap in sats
NWC_READ_ONLYSet true to block all spend tools

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmnwc-mcp0.2.3

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

nwc-mcp

为你的 LLM Agent 提供的 Lightning 钱包。 MCP 服务将 Nostr Wallet Connect(NIP-47)钱包操作封装为 Agent 可调用的工具——读取余额、生成发票、支付发票、支付 Lightning 地址、支付 LNURL、批量支付、keysend——并通过纵深防御安全机制加以保护。

将其接入 Claude Desktop、Claude Code、Cursor 或任何支持 MCP 的客户端。为 Agent 提供一个子钱包(而非你的主钱包),设置每日限额,然后让它在你设定的范围内代你支出 sats。

v0.2 — 所有支出工具均已推出。 共 12 个工具(7 个读取/收款 + 5 个支出 + 1 个确认)、4 道安全关卡和完整的审计日志。已通过 ZEUS 路由,在 Alby Hub + Olympus 上完成端到端验证——真实的对外支付在 8 秒内结算。


你可以用它做什么

  • 为自己调用的付费工具付费的编码 Agent(L402 风格的付费 MCP 服务)。
  • 在你设置的每日限额内,为有趣的 NOSTR 笔记发送 zap 的机器人。
  • 按任务支付少量费用给其使用的工作者 Agent 的评估框架。
  • 收到私信后开具收款发票的店铺 Agent。
  • 了解 sats 的个人 Agent——“每周五,通过 LN 地址向我最喜欢的 OSS 维护者发送 1,000 sats。”

安全机制是让它能在生产环境中使用的关键:Agent 可以发起支付请求,但 服务端 会拒绝任何超出你所配置限额的请求;如果你启用了二次确认,则会要求进行第二步确认;此外,每次调用都会写入结构化审计日志。


十二个工具

只读(始终启用,无支出风险)
工具用途
nwc_get_info钱包功能、支持的 NIP-47 方法、节点公钥、网络、别名。请先调用。
nwc_get_balance可支出的余额,单位为 sats(和 msat)。
nwc_lookup_invoice按支付哈希或 bolt11 查找发票;返回状态,以及结算后的 preimage。
nwc_list_transactions根据筛选条件列出交易(时间范围、方向、未支付)。
nwc_decode_invoice在本地解析 bolt11——金额、备注、有效期、收款方公钥。不发起网络调用。
nwc_budget_status当前支出预算状态——每日已支出金额、限额、累计支出金额。
收款(安全——仅生成发票,不支出)
工具用途
nwc_make_invoice为指定 sats 金额创建 bolt11 发票。
支出(受安全流程保护)
工具用途
nwc_pay_invoice支付 bolt11。可通过 amount_override_sats 为未指定金额的发票解析金额。
nwc_pay_lightning_address支付 [email protected](LUD-16)。直接解析 LNURL-pay,默认不经过代理。
nwc_pay_lnurl支付原始 lnurl1... bech32 字符串(LUD-01)。
nwc_multi_pay_invoice单次调用最多支付 20 张发票。总金额会与预算限额进行原子性检查。
nwc_pay_keysend直接向公钥发送自发支付。默认关闭——通过 NWC_KEYSEND_ENABLED=true 启用。
nwc_confirm_payment使用一次性令牌执行需要两步确认的支付。

要求

  • Node 20+
  • 来自兼容 NIP-47 钱包(Alby Hub、Mutiny、Coinos、Phoenix,……)的 NWC 连接字符串

标准的买家配置是使用 Alby Hub PRO,并为 Agent 配置专用子钱包——本服务已针对这种配置完成冒烟测试。不过,该协议与钱包无关;任何支持 NIP-47 的钱包都能使用。

安装

# From npm (once published)
npx -y nwc-mcp

# From source
git clone <repo>
cd nwc-mcp
corepack enable pnpm
pnpm install
pnpm build

配置

将 .env.example 复制为 .env,并填入你的 NWC 连接字符串:

cp .env.example .env
# edit .env: NWC_CONNECTION_STRING=nostr+walletconnect://...

服务会自动从当前工作目录和项目根目录(dist/ 上一级)加载 .env。父进程传入的环境变量(例如,通过 claude mcp add --env ... 传入)优先级高于 .env。.env 已加入 gitignore——请勿将 NWC 连接字符串放入任何提交的文件中。

必需项
变量用途
NWC_CONNECTION_STRINGnostr+walletconnect://... — 从你的钱包获取(在 Alby Hub 中:子钱包 → 连接)。请视为机密 — 任何持有此字符串的人都能在每日上限内花费资金。
NWC_DAILY_BUDGET_SATS滚动 24 小时支出上限。未设置此项时,服务拒绝启动。
可选安全设置
变量默认值用途
NWC_TOTAL_BUDGET_SATS未设置生命周期总支出上限。
NWC_MAX_INVOICE_SATS未设置单笔支付上限。
NWC_READ_ONLYfalse若为 true,则禁用所有支出工具 — 适用于开发 / 评估 / 好奇模式。
NWC_REQUIRE_CONFIRMfalse若为 true,支出工具会返回一次性令牌;只有使用该令牌调用 nwc_confirm_payment 后才会执行支付。以 Agent 自主性换取安全性。
NWC_KEYSEND_ENABLEDfalsenwc_pay_keysend 的启用开关。默认关闭,因为 keysend 面向高级用户(没有支付哈希,安全性低于 bolt11)。
NWC_ALLOWED_DESTINATIONS未设置以逗号分隔的 LN 地址 / 公钥 / LNURL 允许列表。若已设置,则 ONLY 允许向其中列出的对象付款。
NWC_LOG_PATH./nwc-mcp.log结构化审计日志文件的路径。
NWC_BUDGET_STATE_PATH./nwc-mcp-state.json持久化预算跟踪器状态的路径。

接入 MCP 客户端

Claude Code(项目级,推荐)

在此目录中运行:

claude mcp add nwc -s project node "$(pwd)/dist/index.js"

这会在项目根目录中写入 .mcp.json。项目级服务仅在 Claude Code 从此目录树启动时加载。在会话中使用 /mcp 查看已加载的内容。重新构建后,重启 CLI 以加载最新的 dist/index.js。

如果想让服务在所有位置都可用,请将 -s project 改为 -s user。

Claude Desktop / Cursor / 其他客户端

请参阅 examples/claude-desktop-config.json 中的清单片段。将其复制到客户端配置中,并替换路径占位符。由于服务会自行加载 .env,无需通过客户端配置传入 NWC_* 变量 — 将 env 块留空即可。


安全模型

此服务专为持有真实 sats 支出密钥的自主大模型 Agent 而设计。每次调用支出工具时,纵深防御都会按以下顺序执行:

  1. NWC_READ_ONLY 闸门 — 若已设置,则在第一道闸门处拦截。不解码、不访问网络,仅写入审计日志条目。
  2. 发票解码 + 金额解析 — 适用于基于 bolt11 的工具。若金额存在歧义(覆盖金额与内嵌金额冲突),则拒绝处理。
  3. 允许列表检查 — 若设置了 NWC_ALLOWED_DESTINATIONS,则收款方(bolt11 使用公钥,LUD-16 使用 LN 地址,LUD-01 使用 LNURL 字符串,keysend 使用公钥)必须匹配。空允许列表 = 不执行检查。
  4. 预算检查 — 每日滚动上限 + 可选总额上限 + 可选单张发票上限。状态会持久化到 NWC_BUDGET_STATE_PATH。
  5. 两步确认闸门 — 若 NWC_REQUIRE_CONFIRM=true,则返回有效期为 5 分钟的 16 字节十六进制令牌,而不执行支付。Agent 必须使用该令牌调用 nwc_confirm_payment。令牌使用时会重新执行安全检查。
  6. 执行 — 通过 NIP-47 调用钱包。成功后:预算记录本金 +(向上取整后的)费用。
  7. 审计日志 — 每次尝试(成功、拦截、错误)都会按每次调用一行的形式追加结构化 JSON。

最底层保障是 NWC 连接自身的每日上限,该上限在你的钱包中设置。 此服务的检查是额外的双重保障 — 即使你对服务完全不信任,钱包仍不会超出其连接级别的上限。

验证调用是否确实成功

无论大模型告诉你什么,都可以使用 tail 查看审计日志:

tail -n 5 nwc-mcp.log

成功调用:{"ts":"...","tool":"nwc_pay_invoice","outcome":"ok","result":{"paid_sats":50,...}}。遭到拦截:{"ts":"...","tool":"nwc_pay_invoice","outcome":"blocked","blocked_reason":"..."}。审计日志有意设计为仅追加;请将日志轮转纳入日常运维。


测试

pnpm typecheck   # tsc --noEmit
pnpm test        # 25 vitest cases covering Allowlist, ConfirmStore, evaluateSafety, decodeLnurl
pnpm build       # produces dist/index.js (~47 KB ESM bundle)

evaluateSafety 是一个纯函数,单元测试会针对完整的安全矩阵(只读 / 金额冲突 / 允许列表 / 预算 / 确认)进行测试,不会接触真实钱包。

如需针对在线钱包进行端到端冒烟测试,请参阅父项目中的 paywall-mcp-test/——这是一个临时的第二个 MCP 服务,提供一个付费工具(premium_compliment),并验证完整的 Agent → 发票 → 支付 → 兑换流程。


许可证

MIT——请参阅 LICENSE。

联系方式 / 问题反馈

由 LLMOps.Pro 构建。

评论

支持 Markdown

第一次接触 MCP?

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

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