Nostr MCP Server

by AustinKelsay
Verified

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 网络交互的工具:

  1. getProfile :通过公钥获取用户的个人资料信息
  2. getKind1Notes :获取用户撰写的文本注释(种类 1)
  3. getLongFormNotes :获取用户创作的长格式内容(种类 30023)
  4. getReceivedZaps :获取用户收到的 Zap,包括详细的付款信息
  5. getSentZaps :获取用户发送的 zap,包括详细的付款信息
  6. getAllZaps :获取用户发送和接收的 zap,并清晰标记方向和总数
  7. searchNips :通过相关性评分搜索 Nostr 实施可能性 (NIP)
  8. sendAnonymousZap :准备对个人资料或事件进行匿名发送,生成闪电发票以供付款

所有工具都完全支持十六进制公钥和 npub 格式,并以用户友好的方式显示 Nostr 标识符。

安装

# Clone the repository git clone https://github.com/austinkelsay/nostr-mcp-server.git cd nostr-mcp-server # Install dependencies npm install # Build the project npm run build

连接到 Claude 桌面版

  1. 确保您已安装Claude for Desktop并更新至最新版本。
  2. 通过编辑或创建配置文件来配置 Claude for Desktop:对于 macOS:
    vim ~/Library/Application\ Support/Claude/claude_desktop_config.json
    对于 Windows:
    notepad %AppData%\Claude\claude_desktop_config.json
  3. 将 Nostr 服务器添加到您的配置中:
    { "mcpServers": { "nostr": { "command": "node", "args": [ "/ABSOLUTE/PATH/TO/nostr-mcp-server/build/index.js" ] } } }
    请务必将/ABSOLUTE/PATH/TO/替换为项目的实际路径。
  4. 重新启动 Claude 桌面版。

连接到光标

  1. 确保您已安装Cursor并更新至最新版本。
  2. 通过创建或编辑配置文件来配置 Cursor:对于 macOS:
    vim ~/.cursor/config.json
    对于 Windows:
    notepad %USERPROFILE%\.cursor\config.json
  3. 将 Nostr 服务器添加到您的配置中:
    { "mcpServers": { "nostr": { "command": "node", "args": [ "/ABSOLUTE/PATH/TO/nostr-mcp-server/build/index.js" ] } } }
    请务必将/ABSOLUTE/PATH/TO/替换为项目的实际路径。
  4. 重新启动光标。

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)
  • 服务器生成闪电付款发票,您可以将其复制到您的闪电钱包中

例子:

"Send an anonymous zap of 100 sats to npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8" "Send 1000 sats anonymously to note1abcdef... with the comment 'Great post!'"

该服务器根据 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

发展

要修改或扩展此服务器:

  1. 编辑项目根目录中的相关文件:
    • index.ts :主服务器和工具注册
    • zap-tools.ts :Zap 相关功能(getSentZaps、getReceivedZaps、getAllZaps)
    • nips-tools.ts :NIPs 搜索功能
  2. 运行npm run build进行编译
  3. 重新启动 Claude for Desktop 或 Cursor 以使更改生效

代码库分为以下模块:

  • 核心服务器设置以及配置文件和注释的工具位于index.ts
  • Zap 功能封装在zap-tools.ts
  • NIPs 搜索在nips-tools.ts中实现

这种分离使得代码库更易于维护,并且更容易通过新功能进行扩展。

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

模型上下文协议服务器使 Claude 等 LLM 能够与 Nostr 社交网络进行交互,从而可以获取用户资料、文本注释和 zap 支付信息。

  1. Features
    1. Installation
      1. Connecting to Claude for Desktop
        1. Connecting to Cursor
          1. Usage in Claude
            1. Advanced Usage
              1. Limitations
                1. Implementation Details
                  1. Anonymous Zaps
                    1. Troubleshooting
                      1. Default Relays
                        1. Development
                          ID: y0jkijddmr