Nostr MCP Server
Сервер MCP (Model Context Protocol), который предоставляет Nostr-возможности языковым моделям (например, Claude).
Возможности
Сервер реализует пять инструментов для взаимодействия с сетью Nostr:
- getProfile — получение профиля пользователя по публичному ключу.
- getKind1Notes — получение текстовых заметок (kind 1) пользователя.
- getReceivedZaps — получение zap-платежей, полученных пользователем, с детальной информацией о платеже.
- getSentZaps — получение zap-платежей, отправленных пользователем.
- getAllZaps — получение всех zap'ов (отправленных и полученных) с явным указанием направления и итоговой суммы.
Все инструменты поддерживают как hex-ключи, так и npub-формат. Идентификаторы отображаются в удобном npub-формате.
Установка
git clone https://github.com/austinkelsay/nostr-mcp-server.git
cd nostr-mcp-server
npm install
npm run build
Настройка для Claude Desktop
Убедитесь, что у вас установлен Claude Desktop (последняя версия) и создайте/отредактируйте файл конфигурации:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%AppData%\Claude\claude_desktop_config.json
Добавьте конфигурацию сервера:
{
"mcpServers": {
"nostr": {
"command": "node",
"args": ["/АБСОЛЮТНЫЙ/ПУТЬ/К/nostr-mcp-server/build/index.js"]
}
}
}
Замените /АБСОЛЮТНЫЙ/ПУТЬ/К/ на фактический путь к проекту. Перезапустите Claude Desktop.
Использование в Claude
После настройки вы можете попросить Claude выполнить запросы, например:
- «Покажи профиль для npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8»
- «Какие последние посты у npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8?»
- «Сколько zap'ов получил npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8?»
- «Покажи отправленные zap'ы для npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8»
- «Покажи все zap'ы (и отправленные, и полученные) для npub1qny3tkh0acurzla8x3zy4nhrjz5zd8ne6dvrjehx9n9hr3lnj08qwuzwc8»
Сервер автоматически конвертирует npub и hex форматы. Результаты отображаются с удобными npub-идентификаторами.
Расширенное использование
Можно указать пользовательские релеи для любого запроса, например: «Покажи профиль для npub1... через relay wss://relay.damus.io».
Также можно задать количество заметок или zap'ов: «Покажи последние 20 заметок от npub1...».
Для zap-запросов можно включить дополнительную валидацию и отладку: «Покажи все zap'ы для npub1... с валидацией и отладкой».
Ограничения
- По умолчанию установлен тайм-аут запроса 8 секунд (чтобы избежать зависания).
- Поддерживаются только публичные ключи в hex или npub формате.
- По умолчанию используется только подмножество релеев.
Детали реализации
- Нативная поддержка npub через кодирование/декодирование NIP-19.
- Обнаружение zap-квитанций, совместимое с NIP-57, с определением направления (отправленные/полученные/свои).
- Парсинг bolt11-инвойсов с извлечением суммы платежа.
- Умная система кэширования для повышения производительности при большом количестве zap'ов.
- Расчет общего количества сатош для отправленных/полученных/своих zap'ов с выводом чистого баланса.
- Опциональная NIP-57 валидация для проверки целостности zap-квитанций.
- Каждый вызов инструмента создает новое подключение к релеям для надежности получения данных.
Устранение неполадок
- Если запросы превышают тайм-аут, увеличьте значение
QUERY_TIMEOUT в исходном коде (сейчас 8 секунд).
- Если данные не найдены, попробуйте указать другие релеи, где они могут быть.
- Проверяйте MCP-логи Claude для получения подробной информации об ошибках.
Релеи по умолчанию
Сервер использует следующие релеи:
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 в корне проекта.
- Запустите
npm run build для компиляции.
- Перезапустите Claude Desktop, чтобы изменения вступили в силу.
Комментарии
Комментариев пока нет. Будьте первым.