诺斯特-MCP-服务端

@AustinKelsay/nostr-mcp-server
0 Stars 312 次浏览 AustinKelsay 更新于 2026-08-23

一种模型上下文协议服务器,使像 Claude 这样的大型语言模型能够与 Nostr 社交网络互动,从而实现获取用户资料、文本笔记和 zap 付款信息的功能。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

Nostr MCP 服务器

一个提供 Nostr 功能给像 Claude 这样的大型语言模型(LLMs)的 Model Context Protocol (MCP) 服务器。

https://github.com/user-attachments/assets/1d2d47d0-c61b-44e2-85be-5985d2a81c64

特性

此服务器实现了几个与 Nostr 网络交互的工具:

  1. getProfile:通过公钥获取用户个人资料信息
  2. getKind1Notes:获取用户发布的文本笔记(类型 1)
  3. getLongFormNotes:获取用户发布的长格式内容(类型 30023)
  4. getReceivedZaps:获取用户收到的 zaps,包括详细的支付信息
  5. getSentZaps:获取用户发送的 zaps,包括详细的支付信息
  6. getAllZaps:获取用户的发送和接收的 zaps,并明确标示方向和总计
  7. searchNips:通过相关性评分搜索 Nostr 实现可能性(NIPs)
  8. sendAnonymousZap:准备向某个个人资料或事件匿名发送 zap,并生成闪电网络发票以供支付

所有工具完全支持十六进制公钥和 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:

    对于 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。

连接到 Cursor

  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. 重启 Cursor。

在 Claude 中使用

配置完成后,您可以通过如下请求让 Claude 使用 Nostr 工具:

  • "显示 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 的个人资料信息"
  • "npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 最近发布了哪些帖子?"
  • "显示 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 的长篇文章"
  • "npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 收到了多少 zap?"
  • "显示 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 发送的 zap"
  • "显示 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 所有的 zap(包括发送和接收)"
  • "搜索关于 zap 的 NIP"
  • "哪些 NIP 与长篇内容相关?"
  • "显示完整的 NIP-23 内容"
  • "向 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 匿名发送 100 sats 的 zap"
  • "向 note1abcdef... 发送 1000 sats,并附上评论 'Great post!'"

服务器会自动处理 npub 和十六进制格式之间的转换,因此您可以在查询中使用任一格式。结果将以用户友好的 npub 标识符显示。

高级用法

您可以为任何查询指定自定义中继:

  • "使用中继 wss://relay.damus.io 显示 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 的个人资料"

您还可以指定要获取的笔记或 zap 的数量:

  • "显示 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 的最新 20 条笔记"

对于匿名 zap,您可以包含可选的评论并指定目标类型:

  • "向 note1abcdef... 匿名发送 500 sats 的 zap,并附上评论 'Great post!'"
  • "通过中继 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 的性能
  • 计算发送/接收/自身的总 sat 数量及净余额
  • 可选的 NIP-57 验证,确保 zap 收据的完整性
  • 支持生成闪电发票的匿名 zap
  • 支持对个人资料、事件(笔记 ID)和可替换事件(naddr)进行 zap
  • 每次工具调用都会创建一个新的连接到中继,确保可靠的数据检索

匿名 Zaps

sendAnonymousZap 工具允许用户在不透露其 Nostr 身份的情况下发送 zaps。关于匿名 zaps 的要点:

  • zap 将在接收者的钱包中显示为来自匿名用户
  • zap 遵循 NIP-57 协议,但没有发送者签名
  • 接收者仍然可以收到付款和任何包含的消息
  • 您可以对个人资料(使用 npub/hex 公钥)、特定事件(使用 note/nevent/hex ID)或可替换事件(使用 naddr)进行 zap
  • 服务器会生成一个闪电网络发票供您支付,并可以将其复制到您的闪电钱包中

示例:

"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

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

相关 MCP 服务