Наш MCP-сервер
Сервер протокола контекста модели (MCP), который предоставляет возможности Nostr для LLM, таких как Клод.
https://github.com/user-attachments/assets/1d2d47d0-c61b-44e2-85be-5985d2a81c64
Функции
На этом сервере реализовано несколько инструментов для взаимодействия с сетью Nostr:
getProfile
: извлекает информацию из профиля пользователя по открытому ключуgetKind1Notes
: извлекает текстовые заметки (тип 1), созданные пользователемgetLongFormNotes
: извлекает длинный контент (вид 30023), созданный пользователемgetReceivedZaps
: извлекает полученные пользователем Zap-сообщения, включая подробную информацию о платеже.getSentZaps
: извлекает отправленные пользователем zaps, включая подробную информацию о платежеgetAllZaps
: извлекает отправленные и полученные Zap-сообщения для пользователя, с четкой маркировкой направления и общего количества.searchNips
: Поиск по возможностям внедрения Nostr (NIP) с оценкой релевант��остиsendAnonymousZap
: подготовка анонимного ZAP-запроса к профилю или событию, создание счета-фактуры для оплаты
Все инструменты полностью поддерживают как шестнадцатеричные открытые ключи, так и формат npub, с удобным отображением идентификаторов Nostr.
Установка
Подключение к Claude для рабочего стола
- Убедитесь, что у вас установлен и обновлен Claude for Desktop до последней версии.
- Настройте Claude for Desktop, отредактировав или создав файл конфигурации:Для macOS:Для Windows:
- Добавьте сервер Nostr в свою конфигурацию:Обязательно замените
/ABSOLUTE/PATH/TO/
на фактический путь к вашему проекту. - Перезапустите Claude для рабочего стола.
Подключение к курсору
- Убедитесь, что у вас установлен и обновлен Cursor до последней версии.
- Настройте курсор, создав или отредактировав файл конфигурации:Для macOS:Для Windows:
- Добавьте сервер Nostr в свою конфигурацию:Обязательно замените
/ABSOLUTE/PATH/TO/
на фактический путь к вашему проекту. - Перезапустить курсор.
Использование в Клоде
После настройки вы можете попросить Клода использовать инструменты Nostr, сделав такие запросы:
- «Покажите мне информацию профиля npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8»
- «Каковы последние сообщения от npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8?»
- «Покажите мне длинные статьи из npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8»
- «Сколько ZAP-запросов получил npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8?»
- «Покажи мне zaps, отправленные npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8»
- "Покажи мне все zaps (отправленные и полученные) для npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8"
- "Поиск НПВ о zaps"
- «Какие НПВ связаны с длинным контентом?»
- «Покажите мне NIP-23 с полным содержанием»
- "Отправить анонимный зэп в размере 100 сатт на npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8"
- «Отправьте 1000 сатт на note1abcdef... с комментарием «Отличный пост!»»
Сервер автоматически обрабатывает преобразование между форматами npub и hex, поэтому вы можете использовать любой из форматов в своих запросах. Результаты отображаются с удобными для пользователя идентификаторами npub.
Расширенное использование
Вы можете указать пользовательские реле для любого запроса:
- «Покажите мне профиль для npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8, использующего реле wss://relay.damus.io»
Вы также можете указать количество заметок или запов для извлечения:
- «Покажи мне последние 20 заметок от npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8»
Для анонимных Zap-ов вы можете включить необязательные комментарии и указать тип цели:
- «Отправьте анонимный зэп в размере 500 сатт на note1abcdef... с комментарием «Отличный пост!»»
- «Отправьте 1000 сато анонимно на nevent1qys... используя реле wss://relay.damus.io»
Для zap-запросов можно включить дополнительную проверку и отладку:
- «Показать мне все zap для npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8 с включенной проверкой и отладкой»
Для поиска по NIP вы можете контролировать количество результатов и включать полный контент:
- «Поиск НПВ о zaps с полным содержанием»
- «Покажите мне 5 лучших НПВ по реле»
- «Какие NIP связаны с шифрованием? Покажите мне 15 результатов»
Ограничения
- На сервере по умолчанию установлено 8-секундное время ожидания для запросов, чтобы предотвратить зависание.
- Поддерживаются только открытые ключи в шестнадцатеричном формате или формате npub.
- По умолчанию используется только подмножество реле.
Подробности реализации
- Собственная поддержка формата npub с использованием кодирования/декодирования NIP-19
- Обнаружение приема ZAP-сообщений в соответствии с NIP-57 с распознаванием направления (отправлено/получено/самостоятельно)
- Расширенный анализ счетов-фактур Bolt11 с извлечением суммы платежа
- Интеллектуальная система кэширования для повышения производительности при больших объемах ZAP-загрузок
- Расчеты общего количества сатс для отправленных/полученных/самозарядных платежей с чистым балансом
- Дополнительная проверка NIP-57 для обеспечения целостности чека ZAP
- Анонимная поддержка ZAP с мгновенной генерацией счетов-фактур
- Поддержка профилей замены, событий (идентификаторов заметок) и заменяемых событий (naddr)
- Каждый вызов инструмента создает новое соединение с реле, обеспечивая надежный поиск данных.
Анонимные Запсы
Инструмент sendAnonymousZap
позволяет пользователям отправлять zaps, не раскрывая свою личность Nostr. Ключевые моменты об анонимных zaps:
- Zap будет выглядеть так, как будто он пришел от анонимного пользователя в кошельке получателя.
- Zap следует протоколу NIP-57, но без подписи отправителя.
- Получатель по-прежнему может получить платеж и любое включенное в него сообщение.
- Вы можете удалить профили (используя npub/hex pubkey), определенные события (используя note/nevent/hex ID) или заменяемые события (используя naddr)
- Сервер генерирует Lightning-счет для оплаты, который вы можете скопировать в свой Lightning-кошелек.
Примеры:
Сервер полностью проверяет сервисы LNURL в соответствии со спецификациями LNURL-pay (LUD-06) и Lightning Address (LUD-16), обеспечивая совместимость с различными реализациями кошельков.
Поиск неисправностей
- Если время ожидания запроса истекло, попробуйте увеличить значение
QUERY_TIMEOUT
в исходном коде (в настоящее время 8 секунд) - Если данные не найдены, попробуйте указать другие реле, которые могут иметь данные.
- Проверьте журналы 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
: Основной сервер и регистрация инструментовnote/note-tools.ts
: Функциональность профиля и заметок ( Документация )zap/zap-tools.ts
: Функциональность, связанная с Zap ( Документация )nips/nips-tools.ts
: Функции для поиска NIP ( Документация )utils/
: Общие служебные функцииconstants.ts
: Глобальные константы и конфигурации релеconversion.ts
: утилиты преобразования формата открытого ключаformatting.ts
: Помощники форматирования выводаpool.ts
: управление пулом подключений Nostrephemeral-relay.ts
: Реле Nostr в памяти для тестирования
- Запустите
npm run build
для компиляции - Перезапустите Claude для рабочего стола или курсора, чтобы изменения вступили в силу.
Тестирование
Мы реализовали комплексный набор тестов с использованием Jest для проверки как базовой функциональности, так и интеграции с протоколом Nostr:
Тестовый набор включает в себя:
Тесты модулей
basic.test.ts
— Тестирует простое форматирование профиля и обработку чеков ZAP.profile-notes-simple.test.ts
— Тестирует структуры данных профилей и примечанийzap-tools-simple.test.ts
— Тесты обработки zap и анонимной подготовки zap
Интеграционные тесты
integration.test.ts
— Тестирует взаимодействие с эфемерным реле Nostr, включая:- Публикация профильных событий
- Создание и извлечение текстовых заметок
- Публикация квитанций ZAP
- Фильтрация событий
websocket-integration.test.ts
— тестирует связь WebSocket с реле Nostr:- Публикация событий через WebSocket
- Подписка на события с фильтрами
- Управление несколькими подписками
- Закрытие подписки
- Проверка того, что события с недействительными подписями отклоняются
Все интеграционные тесты используют нашу реализацию ephemeral-relay.ts
— полнофункциональное реле Nostr в памяти, которое поддерживает протокол Nostr, позволяя осуществлять реальное криптографическое подписание и проверку событий без необходимости внешних сетевых подключений. Это обеспечивает надежный способ тестирования полного рабочего процесса Nostr в изолированной среде.
Более подробную информацию о тестовом наборе можно найти в файле tests /README.md .
Организация кодовой базы
Кодовая база организована в виде модулей:
- Настройка основного сервера в
index.ts
- Специализированные функции в выделенных каталогах:
- Общие утилиты в каталоге
utils/
Эта модульная структура делает кодовую базу более удобной для обслуживания, уменьшает дублирование и позволяет более легко расширять функции. Подробную информацию о функциях и реализации каждого модуля см. в соответствующей документации.
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Сервер протокола контекста модели, который позволяет специалистам LLM, таким как Клод, взаимодействовать с социальной сетью Nostr, позволяя извлекать профили пользователей, текстовые заметки и информацию о платежах ZAP.
- Функции
- Установка
- Подключение к Claude для рабочего стола
- Подключение к курсору
- Использование в Клоде
- Расширенное использование
- Ограничения
- Подробности реализации
- Анонимные Запсы
- Поиск неисправностей
- Реле по умолчанию
- Разработка
- Тестирование
- Организация кодовой базы
Related Resources
Related MCP Servers
- AsecurityAlicenseAqualityA Model Context Protocol server that gives LLMs the ability to interact with Ethereum networks, manage wallets, query blockchain data, and execute smart contract operations through a standardized interface.Last updated -313232TypeScriptMIT License
- -securityFlicense-qualityA Model Context Protocol server that enables Claude and other LLMs to interact with Notion workspaces, providing capabilities like searching, retrieving, creating and updating pages, as well as managing databases.Last updated -1942TypeScript
- -securityAlicense-qualityA Model Context Protocol server enabling LLMs like Claude to interact with the Alpaca trading API through natural language for stock trading, checking positions, fetching market data, and managing your account.Last updated -PythonMIT License
- AsecurityAlicenseAqualityAn extensible Model Context Protocol server that provides standardized access to social platform data (currently Farcaster) and onchain data for LLMs.Last updated -511TypeScriptMIT License