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(Model Context Protocol) 서버입니다.
https://github.com/user-attachments/assets/1d2d47d0-c61b-44e2-85be-5985d2a81c64
특징
이 서버는 Nostr 네트워크와 상호 작용하기 위한 여러 도구를 구현합니다.
getProfile
: 공개 키로 사용자 프로필 정보를 가져옵니다.getKind1Notes
: 사용자가 작성한 텍스트 노트(종류 1)를 가져옵니다.getLongFormNotes
: 사용자가 작성한 장문 콘텐츠(종류 30023)를 가져옵니다.getReceivedZaps
: 사용자가 받은 zaps를 가져옵니다. 여기에는 자세한 결제 정보가 포함됩니다.getSentZaps
: 사용자가 보낸 zaps를 가져옵니다. 여기에는 자세한 결제 정보가 포함됩니다.getAllZaps
: 사용자의 전송 및 수신된 잽을 모두 가져오며 방향과 총계가 명확하게 표시됩니다.searchNips
: 관련성 점수를 사용하여 Nostr 구현 가능성(NIP)을 검색합니다.sendAnonymousZap
: 프로필이나 이벤트에 익명의 Zap을 준비하여 지불을 위한 번개 송장을 생성합니다.
모든 도구는 16진수 공개 키와 npub 형식을 모두 완벽하게 지원하며, Nostr 식별자를 사용자 친화적으로 표시합니다.
설치
지엑스피1
데스크톱용 Claude에 연결
- Claude for Desktop이 설치되어 있고 최신 버전으로 업데이트되었는지 확인하세요.
- 구성 파일을 편집하거나 생성하여 Claude for Desktop을 구성하세요.macOS의 경우:Windows의 경우:CopyCopy
- 구성에 Nostr 서버를 추가합니다.Copy
/ABSOLUTE/PATH/TO/
프로젝트의 실제 경로로 바꿔야 합니다. - 데스크톱에서 Claude를 다시 시작합니다.
커서에 연결
- 커서가 설치되어 있고 최신 버전으로 업데이트되었는지 확인하세요.
- 구성 파일을 만들거나 편집하여 커서를 구성합니다.macOS의 경우:Windows의 경우:CopyCopy
- 구성에 Nostr 서버를 추가합니다.Copy
/ABSOLUTE/PATH/TO/
프로젝트의 실제 경로로 바꿔야 합니다. - 커서를 다시 시작합니다.
클로드에서의 사용법
구성이 완료되면 다음과 같은 요청을 통해 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 송장을 생성합니다.
예:
서버는 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
: NIP 검색 기능
npm run build
실행하여 컴파일합니다.- 변경 사항을 적용하려면 데스크톱 또는 커서의 Claude를 다시 시작하세요.
코드베이스는 모듈로 구성됩니다.
- 프로필 및 메모에 대한 핵심 서버 설정 및 도구는
index.ts
에 있습니다. - Zap 기능은
zap-tools.ts
에 캡슐화되어 있습니다. - NIP 검색은
nips-tools.ts
에 구현되어 있습니다.
이러한 분리로 인해 코드베이스의 유지 관리가 더 쉬워지고 새로운 기능으로 확장하기도 더 쉬워집니다.
You must be authenticated.
Claude와 같은 LLM이 Nostr 소셜 네트워크와 상호 작용하여 사용자 프로필, 텍스트 메모, Zap 결제 정보를 가져올 수 있도록 하는 모델 컨텍스트 프로토콜 서버입니다.
- Features
- Installation
- Connecting to Claude for Desktop
- Connecting to Cursor
- Usage in Claude
- Advanced Usage
- Limitations
- Implementation Details
- Anonymous Zaps
- Troubleshooting
- Default Relays
- Development