Skip to main content
Glama

Nostr MCP 서버

Claude와 같은 LLM에 Nostr 기능을 제공하는 MCP(Model Context Protocol) 서버입니다.

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 : 사용자의 전송 및 수신된 잽을 모두 가져오며 방향과 총계가 명확하게 표시됩니다.

  7. searchNips : 관련성 점수를 사용하여 Nostr 구현 가능성(NIP)을 검색합니다.

  8. sendAnonymousZap : 프로필이나 이벤트에 익명의 Zap을 준비하여 지불을 위한 번개 송장을 생성합니다.

모든 도구는 16진수 공개 키와 npub 형식을 모두 완벽하게 지원하며, Nostr 식별자를 사용자 친화적으로 표시합니다.

Related MCP server: Notion MCP Server

설치

지엑스피1

데스크톱용 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. 커서가 설치되어 있고 최신 버전으로 업데이트되었는지 확인하세요.

  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는 몇 개의 잽을 받았나요?"

  • "npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8님이 보낸 잽을 보여주세요"

  • "npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8에 대한 모든 잽(보낸 잽과 받은 잽 모두)을 보여주세요"

  • "Zap에 대한 NIP 검색"

  • "장편 콘텐츠와 관련된 NIP는 무엇인가요?"

  • "전체 내용이 담긴 NIP-23을 보여주세요"

  • "npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8에게 100개의 익명 데이터를 보내세요"

  • "note1abcdef에게 '훌륭한 게시물입니다!'라는 댓글과 함께 1000개의 sats를 보내세요."

서버가 npub 형식과 hex 형식 간의 변환을 자동으로 처리하므로 쿼리에 두 형식 중 하나를 사용할 수 있습니다. 결과는 사용자 친화적인 npub 식별자와 함께 표시됩니다.

고급 사용법

모든 쿼리에 대해 사용자 정의 릴레이를 지정할 수 있습니다.

  • "wss://relay.damus.io를 사용하여 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8의 프로필을 보여주세요"

가져올 노트나 잽의 개수를 지정할 수도 있습니다.

  • "npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8의 최신 노트 20개를 보여주세요"

익명 잽의 경우, 선택적인 주석을 포함하고 대상 유형을 지정할 수 있습니다.

  • "500개의 위성 데이터를 note1abcdef에게 익명으로 보내세요... '훌륭한 게시물입니다!'라는 댓글과 함께"

  • "wss://relay.damus.io를 사용하여 nevent1qys에게 익명으로 1000개의 위성 신호를 보냅니다."

Zap 쿼리의 경우 추가 검증 및 디버깅을 활성화할 수 있습니다.

  • "검증 및 디버그가 활성화된 npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8에 대한 모든 잽을 보여주세요"

NIP 검색의 경우 결과 수를 제어하고 전체 콘텐츠를 포함할 수 있습니다.

  • "전체 내용이 포함된 zaps에 대한 NIP 검색"

  • "릴레이에 대한 상위 5개의 NIP를 보여주세요"

  • "암호화와 관련된 NIP는 무엇인가요? 15개 결과 보여주세요"

제한 사항

  • 서버에는 쿼리가 중단되는 것을 방지하기 위한 기본 8초 시간 제한이 있습니다.

  • 16진수 형식 또는 npub 형식의 공개 키만 지원됩니다.

  • 기본적으로 일부 릴레이만 사용됩니다.

구현 세부 사항

  • NIP-19 인코딩/디코딩을 사용한 npub 형식에 대한 기본 지원

  • 방향 인식(전송/수신/자체) 기능을 갖춘 NIP-57 호환 ZAP 수신 감지

  • 지불 금액 추출을 통한 고급 bolt11 송장 구문 분석

  • 대량의 잽 처리 시 성능 향상을 위한 스마트 캐싱 시스템

  • 순 잔액을 포함한 전송/수신/자체 잽에 대한 총 포화 계산

  • ZAP 영수증 무결성을 보장하기 위한 선택적 NIP-57 검증

  • 번개 송장 생성을 통한 익명 Zap 지원

  • 프로필, 이벤트(노트 ID) 및 교체 가능한 이벤트(naddr)에 대한 지원

  • 각 도구 호출은 릴레이에 대한 새로운 연결을 생성하여 안정적인 데이터 검색을 보장합니다.

익명의 잽

sendAnonymousZap 도구를 사용하면 사용자가 Nostr 신원을 밝히지 않고도 잽을 보낼 수 있습니다. 익명 잽에 대한 주요 사항은 다음과 같습니다.

  • 이 Zap은 수신자 지갑의 익명 사용자로부터 온 것으로 나타납니다.

  • Zap은 발신자 서명 없이 NIP-57 프로토콜을 따릅니다.

  • 수신자는 여전히 지불금과 포함된 메시지를 받을 수 있습니다.

  • npub/hex 공개 키를 사용하여 프로필을 삭제하거나, note/nevent/hex ID를 사용하여 특정 이벤트를 삭제하거나, naddr를 사용하여 교체 가능한 이벤트를 삭제할 수 있습니다.

  • 서버는 Lightning 지갑에 복사할 수 있는 지불을 위한 Lightning 송장을 생성합니다.

예:

"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 : NIP 검색 기능

  2. npm run build 실행하여 컴파일합니다.

  3. 변경 사항을 적용하려면 데스크톱 또는 커서의 Claude를 다시 시작하세요.

코드베이스는 모듈로 구성됩니다.

  • 프로필 및 메모에 대한 핵심 서버 설정 및 도구는 index.ts 에 있습니다.

  • Zap 기능은 zap-tools.ts 에 캡슐화되어 있습니다.

  • NIP 검색은 nips-tools.ts 에 구현되어 있습니다.

이러한 분리로 인해 코드베이스의 유지 관리가 더 쉬워지고 새로운 기능으로 확장하기도 더 쉬워집니다.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AustinKelsay/nostr-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server