诺斯特-MCP-服务端
一种模型上下文协议服务器,使像 Claude 这样的大型语言模型能够与 Nostr 社交网络互动,从而实现获取用户资料、文本笔记和 zap 付款信息的功能。
服务介绍
Nostr MCP 服务器
一个提供 Nostr 功能给像 Claude 这样的大型语言模型(LLMs)的 Model Context Protocol (MCP) 服务器。
https://github.com/user-attachments/assets/1d2d47d0-c61b-44e2-85be-5985d2a81c64
特性
此服务器实现了几个与 Nostr 网络交互的工具:
getProfile:通过公钥获取用户个人资料信息getKind1Notes:获取用户发布的文本笔记(类型 1)getLongFormNotes:获取用户发布的长格式内容(类型 30023)getReceivedZaps:获取用户收到的 zaps,包括详细的支付信息getSentZaps:获取用户发送的 zaps,包括详细的支付信息getAllZaps:获取用户的发送和接收的 zaps,并明确标示方向和总计searchNips:通过相关性评分搜索 Nostr 实现可能性(NIPs)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
-
确保已经安装并更新至最新版本的 Claude for Desktop。
-
通过编辑或创建配置文件来配置桌面版 Claude:
对于 macOS:
vim ~/Library/Application\ Support/Claude/claude_desktop_config.json对于 Windows:
notepad %AppData%\Claude\claude_desktop_config.json -
将 Nostr 服务器添加到您的配置中:
{ "mcpServers": { "nostr": { "command": "node", "args": [ "/ABSOLUTE/PATH/TO/nostr-mcp-server/build/index.js" ] } } }请确保将
/ABSOLUTE/PATH/TO/替换为您项目的实际路径。 -
重启桌面版 Claude。
连接到 Cursor
-
确保已经安装并更新至最新版本的 Cursor。
-
通过创建或编辑配置文件来配置 Cursor:
对于 macOS:
vim ~/.cursor/config.json对于 Windows:
notepad %USERPROFILE%\.cursor\config.json -
将 Nostr 服务器添加到您的配置中:
{ "mcpServers": { "nostr": { "command": "node", "args": [ "/ABSOLUTE/PATH/TO/nostr-mcp-server/build/index.js" ] } } }请确保将
/ABSOLUTE/PATH/TO/替换为您项目的实际路径。 -
重启 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
开发
要修改或扩展此服务器:
-
在项目根目录中编辑相关文件:
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中
这种分离使代码库更易于维护,并且更容易扩展新功能。