
Nostr mcp server
About
A Model Context Protocol (MCP) server that provides Nostr capabilities to LLMs like Claude.
Author
npub125f2ywdgydpfss5r4w8587yhk5yep0up8qwlxv5kwrpw8ct3ceuqf2f86w
mcpgetProfilegetKind1NotesgetReceivedZapsgetSentZapsgetAllZapsgetLongFormNotessearchNipssendAnonymousZap
Capabilities
mcp-1.0
Event ID: bb6806ecb847c1af53a87131d3a0884fc3076b2cbabd260d8e040625ed246e79

Nostr mcp server
Installation Options
You can install and run this DVM locally using the @dvmcp/discovery package. Choose one of the following methods:
Option 1: Using Server Flag
Run with the server's naddr:
Command
npx @dvmcp/discovery --server naddr1qvzqqqru7cpzq4gj5gu6sg6znppg82u0g0uf0dgfjzlczwqa7vefvuxzu0shr3ncqyt8wumn8ghj7un9d3shjtnywekkxupwve6kutcqy9j8vmfdv9hxumm4de3k2mt9de6z6mn0wd68yttdvdcz6um9wfmx2usmx2z29
JSON Configuration
"mcpServers": { "nostr-mcp-server": { "command": "npx", "args": [ "@dvmcp/discovery", "--server", "naddr1qvzqqqru7cpzq4gj5gu6sg6znppg82u0g0uf0dgfjzlczwqa7vefvuxzu0shr3ncqyt8wumn8ghj7un9d3shjtnywekkxupwve6kutcqy9j8vmfdv9hxumm4de3k2mt9de6z6mn0wd68yttdvdcz6um9wfmx2usmx2z29" ] } }
This command uses the naddr which encodes the event kind, public key, and the 'd' tag of the event. It will get the tools just from this server.
Option 2: Using Provider Flag
Run with the provider's nprofile:
Command
npx @dvmcp/discovery --provider nprofile1qyt8wumn8ghj7un9d3shjtnywekkxupwve6kutcqyp239g3e4q359xzzsw4c7slcj76sny9lsyupmuejjecv9clpw8r8sa5kkff
JSON Configuration
"mcpServers": { "nostr-mcp-server": { "command": "npx", "args": [ "@dvmcp/discovery", "--provider", "nprofile1qyt8wumn8ghj7un9d3shjtnywekkxupwve6kutcqyp239g3e4q359xzzsw4c7slcj76sny9lsyupmuejjecv9clpw8r8sa5kkff" ] } }
This command uses the nprofile which encodes the public key and relay hints. It will get all tools from this provider.
What Happens Next?
After running one of the commands above:
- The discovery package will fetch the DVM configuration from the Nostr network
- It will start a local server running this DVM
- You can then interact with the DVM through your local instance
Try it out
Form Values
{"name":"getProfile","parameters":{}}
Form Values
{"name":"getKind1Notes","parameters":{"limit":10}}
Form Values
{"name":"getReceivedZaps","parameters":{"limit":10,"validateReceipts":true,"debug":false}}
Form Values
{"name":"getSentZaps","parameters":{"limit":10,"validateReceipts":true,"debug":false}}
Form Values
{"name":"getAllZaps","parameters":{"limit":20,"validateReceipts":true,"debug":false}}
Form Values
{"name":"getLongFormNotes","parameters":{"limit":10}}
Form Values
{"name":"searchNips","parameters":{"limit":10,"includeContent":false}}
Form Values
{"name":"sendAnonymousZap","parameters":{}}
{ "created_at": 1744997160, "content": "{\"name\":\"Nostr mcp server\",\"about\":\"A Model Context Protocol (MCP) server that provides Nostr capabilities to LLMs like Claude.\",\"picture\":\"https://image.nostr.build/5bf2e2eb3b858bf72c23e53ed1f41ed0f65b2c8a805eaa48dd506b7cfec4ab88.png\",\"website\":\"https://github.com/AustinKelsay/nostr-mcp-server\",\"tools\":[{\"name\":\"getProfile\",\"description\":\"Get a Nostr profile by public key\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"pubkey\":{\"type\":\"string\",\"description\":\"Public key of the Nostr user (hex format or npub format)\"},\"relays\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Optional list of relays to query\"}},\"required\":[\"pubkey\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}},{\"name\":\"getKind1Notes\",\"description\":\"Get text notes (kind 1) by public key\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"pubkey\":{\"type\":\"string\",\"description\":\"Public key of the Nostr user (hex format or npub format)\"},\"limit\":{\"type\":\"number\",\"minimum\":1,\"maximum\":100,\"default\":10,\"description\":\"Maximum number of notes to fetch\"},\"relays\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Optional list of relays to query\"}},\"required\":[\"pubkey\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}},{\"name\":\"getReceivedZaps\",\"description\":\"Get zaps received by a public key\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"pubkey\":{\"type\":\"string\",\"description\":\"Public key of the Nostr user (hex format or npub format)\"},\"limit\":{\"type\":\"number\",\"minimum\":1,\"maximum\":100,\"default\":10,\"description\":\"Maximum number of zaps to fetch\"},\"relays\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Optional list of relays to query\"},\"validateReceipts\":{\"type\":\"boolean\",\"default\":true,\"description\":\"Whether to validate zap receipts according to NIP-57\"},\"debug\":{\"type\":\"boolean\",\"default\":false,\"description\":\"Enable verbose debug logging\"}},\"required\":[\"pubkey\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}},{\"name\":\"getSentZaps\",\"description\":\"Get zaps sent by a public key\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"pubkey\":{\"type\":\"string\",\"description\":\"Public key of the Nostr user (hex format or npub format)\"},\"limit\":{\"type\":\"number\",\"minimum\":1,\"maximum\":100,\"default\":10,\"description\":\"Maximum number of zaps to fetch\"},\"relays\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Optional list of relays to query\"},\"validateReceipts\":{\"type\":\"boolean\",\"default\":true,\"description\":\"Whether to validate zap receipts according to NIP-57\"},\"debug\":{\"type\":\"boolean\",\"default\":false,\"description\":\"Enable verbose debug logging\"}},\"required\":[\"pubkey\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}},{\"name\":\"getAllZaps\",\"description\":\"Get all zaps (sent and received) for a public key\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"pubkey\":{\"type\":\"string\",\"description\":\"Public key of the Nostr user (hex format or npub format)\"},\"limit\":{\"type\":\"number\",\"minimum\":1,\"maximum\":100,\"default\":20,\"description\":\"Maximum number of total zaps to fetch\"},\"relays\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Optional list of relays to query\"},\"validateReceipts\":{\"type\":\"boolean\",\"default\":true,\"description\":\"Whether to validate zap receipts according to NIP-57\"},\"debug\":{\"type\":\"boolean\",\"default\":false,\"description\":\"Enable verbose debug logging\"}},\"required\":[\"pubkey\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}},{\"name\":\"getLongFormNotes\",\"description\":\"Get long-form notes (kind 30023) by public key\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"pubkey\":{\"type\":\"string\",\"description\":\"Public key of the Nostr user (hex format or npub format)\"},\"limit\":{\"type\":\"number\",\"minimum\":1,\"maximum\":100,\"default\":10,\"description\":\"Maximum number of notes to fetch\"},\"relays\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Optional list of relays to query\"}},\"required\":[\"pubkey\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}},{\"name\":\"searchNips\",\"description\":\"Search through Nostr Implementation Possibilities (NIPs)\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Search query to find relevant NIPs\"},\"limit\":{\"type\":\"number\",\"minimum\":1,\"maximum\":50,\"default\":10,\"description\":\"Maximum number of results to return\"},\"includeContent\":{\"type\":\"boolean\",\"default\":false,\"description\":\"Whether to include the full content of each NIP in the results\"}},\"required\":[\"query\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}},{\"name\":\"sendAnonymousZap\",\"description\":\"Prepare an anonymous zap to a profile or event\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"target\":{\"type\":\"string\",\"description\":\"Target to zap - can be a pubkey (hex or npub) or an event ID (nevent, note, naddr, or hex)\"},\"amountSats\":{\"type\":\"number\",\"minimum\":1,\"description\":\"Amount to zap in satoshis\"},\"comment\":{\"type\":\"string\",\"default\":\"\",\"description\":\"Optional comment to include with the zap\"},\"relays\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Optional list of relays to query\"}},\"required\":[\"target\",\"amountSats\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}]}", "tags": [ [ "d", "dvm-announcement-nostr-mcp-server" ], [ "k", "5910" ], [ "capabilities", "mcp-1.0" ], [ "t", "mcp" ], [ "t", "getProfile" ], [ "t", "getKind1Notes" ], [ "t", "getReceivedZaps" ], [ "t", "getSentZaps" ], [ "t", "getAllZaps" ], [ "t", "getLongFormNotes" ], [ "t", "searchNips" ], [ "t", "sendAnonymousZap" ] ], "kind": 31990, "pubkey": "5512a239a82342984283ab8f43f897b50990bf81381df3329670c2e3e171c678", "id": "bb6806ecb847c1af53a87131d3a0884fc3076b2cbabd260d8e040625ed246e79", "sig": "f5a26870772988af416153a0e943b5e39dda6783aa1a55b57eabe44aff5324098442fbcbd26c6d7ca1cfe5879a96a2e63b666791f9ec0be589e22cd279750ea2" }