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.

Nostr MCP サーバー

Claude などの LLM に Nostr 機能を提供するモデル コンテキスト プロトコル (MCP) サーバー。

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 と受信済み Zap の両方を取得し、方向と合計を明確にラベル付けします。
  7. searchNips : 関連性スコアリングによる Nostr 実装可能性 (NIP) の検索
  8. sendAnonymousZap : プロフィールやイベントに匿名のZapを送信し、支払い用のLightning Invoiceを生成する

すべてのツールは、Nostr 識別子をユーザーフレンドリーに表示し、16 進公開キーと npub 形式の両方を完全にサポートします。

インストール

# 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 for Desktop への接続

  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 for Desktop を再起動します。

カーソルに接続

  1. Cursorがインストールされ、最新バージョンに更新されていることを確認してください。
  2. 構成ファイルを作成または編集してカーソルを構成します。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 に Nostr ツールを使用するように依頼できます。

  • 「npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8のプロフィール情報を表示」
  • 「npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 からの最近の投稿は何ですか?」
  • 「npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 の長文記事を表示」
  • 「npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 はいくつの ZAP を受信しましたか?」
  • 「npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 から送信された Zap を表示してください」
  • 「npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 のすべての Zap(送信済みと受信済みの両方)を表示」
  • 「Zapに関するNIPを検索」
  • 「長編コンテンツに関連する NIP は何ですか?」
  • 「NIP-23の全内容を表示」
  • 「npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 に 100 個の sats の匿名の Zap を送信してください」
  • 「note1abcdef に 1000 sats を送信します。コメントには「素晴らしい投稿です!」と添えてください。」

サーバーはnpub形式とhex形式間の変換を自動的に処理するため、クエリではどちらの形式も使用できます。結果はユーザーフレンドリーなnpub識別子で表示されます。

高度な使用法

任意のクエリに対してカスタム リレーを指定できます。

  • 「リレー wss://relay.damus.io を使用して npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 のプロファイルを表示します」

取得するノートや Zap の数を指定することもできます。

  • 「npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 の最新の 20 件のノートを表示」

匿名の Zap の場合は、オプションのコメントを追加し、ターゲット タイプを指定できます。

  • 「500 sats の匿名の Zap を note1abcdef に送信してください...コメントとして「素晴らしい投稿です!」と付けてください。」
  • 「リレー wss://relay.damus.io を使用して、1000 個の SAT を匿名で nevent1qys に送信します...」

zap クエリの場合、追加の検証とデバッグを有効にすることができます。

  • 「検証とデバッグが有効になっている npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 のすべての Zap を表示」

NIP 検索では、結果の数を制御し、完全なコンテンツを含めることができます。

  • 「完全なコンテンツを含む Zap に関する NIP を検索」
  • 「リレーに関するトップ5のNIPを教えてください」
  • 「暗号化に関連するNIPは何ですか? 15件の結果を表示」

制限事項

  • サーバーはハングアップを防ぐためにクエリに対してデフォルトで8秒のタイムアウトを持っています。
  • 16進形式またはnpub形式の公開鍵のみがサポートされています
  • デフォルトではリレーのサブセットのみが使用されます

実装の詳細

  • NIP-19 エンコード/デコードを使用した npub 形式のネイティブ サポート
  • NIP-57準拠の方向認識機能付きZAP受信検出(送信/受信/自己)
  • 支払い金額の抽出を含む高度なbolt11請求書解析
  • 大量のZapでパフォーマンスを向上するスマートなキャッシュシステム
  • 送信/受信/自己Zapの合計SAT計算とネット残高
  • ZAP受信の整合性を保証するためのオプションのNIP-57検証
  • 匿名のZapサポートとLightning Invoice生成
  • ザッピング プロファイル、イベント (ノート ID)、および置き換え可能なイベント (naddr) のサポート
  • 各ツール呼び出しはリレーへの新しい接続を作成し、信頼性の高いデータ取得を保証します。

匿名のザップ

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または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