local-only server
The server can only run on the client’s local machine because it depends on local resources.
我们的 MCP 服务器
模型上下文协议 (MCP) 服务器为 Claude 等 LLM 提供 Nostr 功能。
https://github.com/user-attachments/assets/1d2d47d0-c61b-44e2-85be-5985d2a81c64
特征
该服务器实现了几个与 Nostr 网络交互的工具:
getProfile
:通过公钥获取用户的个人资料信息getKind1Notes
:获取用户撰写的文本注释(种类 1)getLongFormNotes
:获取用户创作的长格式内容(种类 30023)getReceivedZaps
:获取用户收到的 Zap,包括详细的付款信息getSentZaps
:获取用户发送的 zap,包括详细的付款信息getAllZaps
:获取用户发送和接收的 zap,并清晰标记方向和总数searchNips
:通过相关性评分搜索 Nostr 实施可能性 (NIP)sendAnonymousZap
:准备对个人资料或事件进行匿名发送,生成闪电发票以供付款
所有工具都完全支持十六进制公钥和 npub 格式,并以用户友好的方式显示 Nostr 标识符。
安装
连接到 Claude 桌面版
- 确保您已安装Claude for Desktop并更新至最新版本。
- 通过编辑或创建配置文件来配置 Claude for Desktop:对于 macOS:对于 Windows:CopyCopy
- 将 Nostr 服务器添加到您的配置中:请务必将Copy
/ABSOLUTE/PATH/TO/
替换为项目的实际路径。 - 重新启动 Claude 桌面版。
连接到光标
- 确保您已安装Cursor并更新至最新版本。
- 通过创建或编辑配置文件来配置 Cursor:对于 macOS:对于 Windows:CopyCopy
- 将 Nostr 服务器添加到您的配置中:请务必将Copy
/ABSOLUTE/PATH/TO/
替换为项目的实际路径。 - 重新启动光标。
Claude 中的用法
配置完成后,您可以通过发出以下请求来要求 Claude 使用 Nostr 工具:
- “显示 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 的个人资料信息”
- “npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 最近发布了哪些帖子?”
- “向我展示来自 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 的长篇文章”
- “npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 受到了多少次攻击?”
- “显示 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 发送的 zap”
- “显示 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 的所有 zap(已发送和已接收)”
- “搜索有关 zap 的 NIP”
- “哪些 NIP 与长篇内容相关?”
- “显示 NIP-23 的完整内容”
- “向 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 匿名发送 100 sats”
- “向 note1abcdef 发送 1000 sat...并附上评论说‘很棒的帖子!’”
服务器会自动处理 npub 和十六进制格式之间的转换,因此您可以在查询中使用任一格式。结果会以用户友好的 npub 标识符显示。
高级用法
您可以为任何查询指定自定义中继:
- “使用中继 wss://relay.damus.io 显示 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 的个人资料”
您还可以指定要获取的注释或 zap 的数量:
- “显示来自 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 的最新 20 条笔记”
对于匿名 zap,您可以包含可选注释并指定目标类型:
- “向 note1abcdef 匿名发送 500 sats...并评论‘好帖子!’”
- “使用中继 wss://relay.damus.io 匿名向 nevent1qys 发送 1000 个 Sats”
对于 zap 查询,您可以启用额外的验证和调试:
- “显示 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 的所有 zap,并启用验证和调试”
对于 NIP 搜索,您可以控制结果数量并包含完整内容:
- “搜索有关 zap 的完整内容的 NIP”
- “向我展示有关中继的前 5 个 NIP”
- “哪些 NIP 与加密相关?请显示 15 个结果”
限制
- 服务器默认设置 8 秒的查询超时时间,以防止挂起
- 仅支持十六进制格式或 npub 格式的公钥
- 默认情况下仅使用一部分中继
实现细节
- 使用 NIP-19 编码/解码对 npub 格式进行原生支持
- 符合 NIP-57 标准的 zap 接收检测,具有方向感知功能(发送/接收/自身)
- 高级 bolt11 发票解析,带付款金额提取
- 智能缓存系统,可提高大量 zap 的性能
- 计算已发送/已接收/自发支付的总 Sats 值及净余额
- 可选的 NIP-57 验证,以确保 zap 收据的完整性
- 匿名 zap 支持闪电发票生成
- 支持切换配置文件、事件(注释 ID)和可替换事件(naddr)
- 每次工具调用都会与继电器建立新的连接,确保可靠的数据检索
匿名Zap
sendAnonymousZap
工具允许用户在不暴露 Nostr 身份的情况下发送 Zap。匿名 Zap 的要点:
- 转账看起来似乎是来自接收者钱包中的匿名用户
- zap 遵循 NIP-57 协议,但没有发送者签名
- 收件人仍然可以收到付款和任何包含的消息
- 您可以删除配置文件(使用 npub/hex pubkey)、特定事件(使用 note/nevent/hex ID)或可替换事件(使用 naddr)
- 服务器生成闪电付款发票,您可以将其复制到您的闪电钱包中
例子:
该服务器根据 LNURL-pay(LUD-06)和 Lightning Address(LUD-16)规范对 LNURL 服务进行全面验证,确保与各种钱包实现的兼容性。
故障排除
- 如果查询超时,请尝试增加源代码中的
QUERY_TIMEOUT
值(当前为 8 秒) - 如果未找到数据,请尝试指定可能具有数据的其他中继
- 检查 Claude 的 MCP 日志以获取详细的错误信息
默认中继
服务器默认使用以下中继:
- wss://relay.damus.io
- wss://relay.nostr.band
- wss://relay.primal.net
- wss://nos.lol
- wss://relay.current.fyi
- wss://nostr.bitcoiner.social
发展
要修改或扩展此服务器:
- 编辑项目根目录中的相关文件:
index.ts
:主服务器和工具注册zap-tools.ts
:Zap 相关功能(getSentZaps、getReceivedZaps、getAllZaps)nips-tools.ts
:NIPs 搜索功能
- 运行
npm run build
进行编译 - 重新启动 Claude for Desktop 或 Cursor 以使更改生效
代码库分为以下模块:
- 核心服务器设置以及配置文件和注释的工具位于
index.ts
中 - Zap 功能封装在
zap-tools.ts
中 - NIPs 搜索在
nips-tools.ts
中实现
这种分离使得代码库更易于维护,并且更容易通过新功能进行扩展。
You must be authenticated.
模型上下文协议服务器使 Claude 等 LLM 能够与 Nostr 社交网络进行交互,从而可以获取用户资料、文本注释和 zap 支付信息。
- Features
- Installation
- Connecting to Claude for Desktop
- Connecting to Cursor
- Usage in Claude
- Advanced Usage
- Limitations
- Implementation Details
- Anonymous Zaps
- Troubleshooting
- Default Relays
- Development