Skip to main content
Glama
Nostr Tools for AI Agents

Nostr Tools for AI Agents

by jorgenclaw

nostr-mcp-server

A Nostr MCP (Model Context Protocol) server with NIP-46 remote signing support. Private keys never need to touch the AI context window.

Live Endpoint

Connect directly without running locally:

https://nostr.jorgenclaw.ai/mcp

Transport: Streamable HTTP (MCP spec 2025-03-26) — compatible with Claude Desktop, Cursor, Glama, Smithery, and any MCP client.

Legacy SSE endpoint (backward compat): https://nostr.jorgenclaw.ai/sse


Related MCP server: nostr-bray

NIP-05 Identity Service

Get a yourname@jorgenclaw.ai verified Nostr identity — registered by an AI agent over Lightning.

How to register:

  1. Open any Nostr client (Amethyst, Primal, Damus, etc.)

  2. DM this npub: npub16pg5zadrrhseg2qjt9lwfcl50zcc8alnt7mnaend3j04wjz4gnjqn6efzc

  3. Send the message: register yourname

  4. Pay the Lightning invoice that arrives in reply (1,000 sats)

  5. Done — yourname@jorgenclaw.ai resolves immediately on all Nostr clients

Uses NIP-17 gift-wrapped DMs. Works with all modern Nostr clients.


Features

  • NIP-46 bunker mode — Set NOSTR_BUNKER_URI once, all signing routes through your bunker

  • Direct key mode — Pass privateKey per-tool call (backwards compatible)

  • 23 tools — Notes, profiles, social actions, DMs (NIP-04/44), relay lists, zaps, fetch

  • MCP native — Works with any MCP-compatible client

Quick Start

npm install
npm run build

Direct key mode (no bunker)

node dist/index.js

Tools require privateKey parameter on each signing call.

NOSTR_BUNKER_URI="bunker://<pubkey>?relay=wss://relay.example.com&secret=abc" node dist/index.js

All signing tools use the bunker. privateKey parameter becomes optional.

Tools

Tool

Description

postNote

Create, sign, and publish a text note

createNote

Create unsigned text note

signNote

Sign a note event

publishNote

Publish signed note to relays

createNostrEvent

Create unsigned event of any kind

signNostrEvent

Sign any unsigned event

publishNostrEvent

Publish signed event to relays

createProfile

Create Nostr profile (kind 0)

updateProfile

Update existing profile

follow

Follow a pubkey

unfollow

Unfollow a pubkey

reactToEvent

React to event (kind 7)

repostEvent

Repost event (kind 6)

deleteEvent

Delete events (kind 5)

replyToEvent

Reply with NIP-10 threading

encryptNip04 / decryptNip04

NIP-04 encryption

sendDmNip04

Send NIP-04 DM

encryptNip44 / decryptNip44

NIP-44 encryption

sendDmNip44

Send NIP-44 DM

setRelayList

Publish relay list (NIP-65)

getSignerInfo

Check signing mode and pubkey

fetchProfile

Fetch a Nostr profile

fetchEvents

Fetch events from relays

NIP-46 Bunker URI

Format: bunker://<bunker-hex-pubkey>?relay=wss://relay.com&secret=optional

Compatible with: nsecbunker, Amber, any NIP-46 signer.

Also Available: Sovereign MCP (Paid)

For agents that need verifiable signed actions with a Lightning-gated audit trail:

https://mcp.jorgenclaw.ai/mcp

9 tools, sats per call, LCS-1 action receipts. No signup.

Dependencies

  • nostr-tools — Nostr protocol library (signing, encryption, NIP-46)

  • @modelcontextprotocol/sdk — MCP server framework

  • ws — WebSocket for Node.js relay connections

  • zod — Input validation

License

MIT

Available Tools

23 tools
createNostrEventB

Create an unsigned Nostr event of any kind

Inputs: kind (required), content (required), tags.

createNoteC

Create an unsigned kind 1 text note

Inputs: content (required), tags.

createProfileC

Create a new Nostr profile (kind 0)

Inputs: name, about, picture, nip05, +5 more.

decryptNip04B

Decrypt NIP-04 ciphertext

Inputs: ciphertext (required), senderPubkey (required), privateKey.

decryptNip44B

Decrypt NIP-44 ciphertext

Inputs: ciphertext (required), senderPubkey (required), privateKey.

deleteEventB

Delete events (kind 5)

Inputs: eventIds (required), reason, privateKey, relays.

encryptNip04C

Encrypt text with NIP-04 (legacy)

Inputs: plaintext (required), recipientPubkey (required), privateKey.

encryptNip44B

Encrypt text with NIP-44

Inputs: plaintext (required), recipientPubkey (required), privateKey.

followA

Follow a pubkey (updates kind 3 contact list)

Inputs: pubkeyToFollow (required), privateKey, relays.

getSignerInfoA

Returns current signing configuration and pubkey

Inputs: no named parameters.

postNoteB

Create, sign, and publish a text note (all-in-one)

Inputs: content (required), tags, privateKey, relays.

publishNostrEventB

Publish a signed event to relays

Inputs: signedEvent (required), relays.

publishNoteC

Publish a signed note to relays

Inputs: signedEvent (required), relays.

reactToEventC

React to an event (kind 7)

Inputs: eventId (required), eventPubkey (required), reaction, privateKey, +1 more.

replyToEventC

Reply to an event with NIP-10 threading

Inputs: eventId (required), eventPubkey (required), content (required), rootEventId, +2 more.

repostEventC

Repost an event (kind 6)

Inputs: eventId (required), eventPubkey (required), relayUrl, privateKey, +1 more.

sendDmNip04C

Send a NIP-04 direct message

Inputs: content (required), recipientPubkey (required), privateKey, relays.

sendDmNip44C

Send a NIP-44 direct message

Inputs: content (required), recipientPubkey (required), privateKey, relays.

setRelayListC

Publish a relay list (NIP-65 kind 10002)

Inputs: readRelays, writeRelays, readWriteRelays, privateKey, +1 more.

signNostrEventC

Sign any unsigned Nostr event

Inputs: unsignedEvent (required), privateKey.

signNoteC

Sign a note event

Inputs: unsignedEvent (required), privateKey.

unfollowB

Unfollow a pubkey

Inputs: pubkeyToFollow (required), privateKey, relays.

updateProfileA

Update an existing Nostr profile (merges with current)

Inputs: name, about, picture, nip05, +5 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.8/5.0

    Scored across 23 tools

    Disambiguation2/5

    Many tools overlap conceptually: e.g., 'createNostrEvent' vs 'createNote', 'postNote' vs 'createNote'+'signNote'+'publishNote', and 'publishNostrEvent' vs 'publishNote'. The distinction between generic and specific tools is unclear, causing potential confusion for agents.

    Naming Consistency3/5

    All names use camelCase, but patterns are mixed: some are verb+object ('createNote'), others verb+protocol ('decryptNip04'), and some use prepositions ('reactToEvent', 'replyToEvent'). While readable, the inconsistency in verb choice and structure reduces predictability.

    Tool Count4/5

    With 23 tools, the server covers many Nostr operations. While slightly high, most tools have distinct roles in sending, receiving, and managing events. A few could be merged (like generic vs specific event creation), but overall the count is reasonable for a comprehensive Nostr toolset.

    Completeness2/5

    The server focuses exclusively on writing and event creation operations (create, sign, publish, encrypt). There are no tools for reading or querying events (e.g., subscribe, fetch filters), which is a major gap for an agent to usefully interact with Nostr. The set is severely one-sided.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Trust-aware Nostr MCP server. 236 tools for identity, social, DMs, trust scoring, AI-to-AI dispatch, Lightning payments, privacy proofs, and encrypted vaults. NIP-46 bunker auth; keys never leave the signing device.
      1,549 npm
      1
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      MCP server exposing a Lightning wallet to LLM agents over Nostr Wallet Connect (NIP-47): balance, invoices, LN address/LNURL payments, batch pay, and keysend. All spend tools are wrapped in a defense-in-depth safety stack — budget caps, allowlist, two-step confirmation, audit log.
      13
      91 npm
      MIT