ContextVM lets anyone run and use Model Context Protocol (MCP) servers over Nostr. In practice, that means MCP clients can connect to MCP servers through Nostr relays—securely, without central gatekeepers, from any device with an internet connection.
Think of it as a thin, elegant transport layer: we don’t replace MCP; we free it. By moving identity, discovery, connectivity, and payments into a decentralized fabric, ContextVM makes MCP truly permissionless and globally accessible.
ContextVM
_@contextvm.org
npub1dvmc...3jdm
ContextVM is a decentralized protocol that enables Model Context Protocol (MCP) servers and clients to communicate over the Nostr network. It uses Nostr as a secure, distributed transport layer—leveraging cryptographic keys for identity, decentralized discovery, and Bitcoin-powered micropayments.
Rather than relying on centralized infrastructure like domains, OAuth, or cloud hosting, ContextVM allows anyone to run or access services using only Nostr and a internet-connected device. It transforms any computational service into a discoverable, accessible, and monetizable resource—while preserving privacy, security, and user sovereignty.
Thank you, @Dustin Dannenhauer for sharing this article. We are honored that the work we are doing with ContextVM is inspiring others in the ecosystem. 🦾
View article →
Proposal for ContextVM Payments
We're enhancing the payment system for ContextVM and its TypeScript SDK to create a flexible and robust framework that supports multiple payment methods like Bitcoin, Lightning, Cashu, and we are looking for some feedback. Here’s our current progress:
We propose introducing a `payment_method` field to clearly identify the payment method used in payment request notifications, aligning with the W3C Payment Method Identifiers (PMI) specification. This ensures interoperability and future-proofing, making it easier to support various currencies and payment systems. Payment identifiers will look like `bitcoin-lightning`, `bitcoin-lightning-bolt11`, or `ecash-cashu`.
On the SDK side, we propose a modular architecture with `PaymentHandler` and `PaymentProcessor` interfaces for client and server transports, respectively. This approach allows different payment methods to coexist seamlessly, enabling users to implement their own payment methods by adhering to these interfaces.
However, we face some challenges. One main hurdle is handling mismatching payment methods between clients and servers effectively. To address this, we propose maintaining an array of payment handlers or processors, each satisfying a standard interface and specific to a payment method. For example, a server supporting both Lightning Network (LN) and Cashu would be initialized with [LNPaymentProcessor, CashuPaymentProcessor], while a client supporting only LN would be initialized with just [LNPaymentHandler]. More info in the linked issue below
We invite you to review our progress and provide valuable feedback:
ContextVM Spec PR:
ContextVM ts-sdk:
Your insights and suggestions are crucial in helping us overcome these challenges and shape these updates. Let's build a better payment system together!
GitHub
Payment Method Identifiers by gzuuus · Pull Request #2 · ContextVM/contextvm-docs
Scope and Motivation
The primary goal of this pull request is to enhance the payment handling section of the ContextVM protocol specification by im...
GitHub
Feat: add payments to sdk · Issue #6 · ContextVM/sdk
Add payment handling for client and server transports Client transport Server transport Handling Multiple Payment Methods in a Modular Architecture...
Thank you to everyone who joined the call today! It was a great conversation.
We covered:
- Spec overview
- SDK overview
- A demo of a traditional MCP host client communicating with an MCP server over Nostr
- A discussion about possible use cases.
- Discussion about Paid MCP
- Q&A
Well, well! Today we will be celebrating our first community call. If you are interested in ContextVM, MCP, Nostr, Bitcoin, or any related topics, join the conversation.
- When? 16:00 UTC
- What? An introduction to the spec, current tooling, next steps, and questions and discussions about other topics.
- Where? HiveTalk 
HiveTalk
ContextVM Community Call
First community call to discuss about ContextVM. Jul 25 @ 16:00 utc
New version of the TypeScript SDK v0.1.12
This release includes a reconnection mechanism with exponential backoff, removal of direct access to the private key in the 'privateKeySigner', structured logging, handling of ill-formed or invalid JSON, and improvements to the reconnection logic with resubscription. These enhancements make the SDK more robust.
Changelog:
- ee82a52: feat: improve relay reconnection handling with subscription persistence
- eecd6af: fix: handle malformed json content in nostr events gracefully
- dd8f444: feat: implement structured logging system with configurable levels
- c18f47c: refactor: nostr signer with nip44 encryption and remove direct secret key access
- 636b197: chore: bump deps
- d5fd1a8: feat: add message validation and relay reconnection with exponential backoff
"Today, Big Tech is repeating the mistakes from the internet’s early days. Instead of using AI to serve people, they’re turning people into products — and using AI to accelerate the surveillance-capitalism business model built on advertising, data harvesting, and exploitation."
Yes, we couldn't agree more!
View article →
Proton
Introducing Lumo: AI where every conversation is confidential | Proton
Lumo gives you the power to solve problems big and small, while keeping your personal data confidential. Try it now.
We just wrote an article explaining why we are working on ContextVM. We are just starting, and our first communications were directed to developers. However, we thought it was important to share what motivates us.
View article →
This CLI programs enables you to use ContextVM with any existing MCP client or server. The proxy enables you to access MCP via Nostr using any client, including Claude Desktop/Code, Goose, Cursor, and others. The gateway allows you to expose any existing MCP server through Nostr, reducing the barrier between ContextVM and any MCP system.
The CLIs are multiplatform and run on Linux, Windows, and macOS.
View quoted note →
We plan to release some demo videos tomorrow. Stay tuned! 🚀
View quoted note →
Exciting Updates from ContextVM: Introducing Gateway CLI and Proxy CLI
We are thrilled to announce the latest developments in the ContextVM project! Following our rebranding from DVMCP to ContextVM, we continue to deliver innovative solutions to enhance the integration of MCP systems with the Nostr network. Today, we are excited to introduce two new command-line interface (CLI) tools: `gateway-cli` and `proxy-cli`.
## Gateway-CLI and Proxy-CLI
They use the `NostrMCPGateway` and `NostrMCPProxy` which are internal components of the ContextVM/ts-sdk, designed to bridge traditional MCP systems with the Nostr network. Here’s a brief overview of each:
- **NostrMCPGateway**: This server-side component exposes a traditional MCP server to the Nostr network, acting as a gateway that translates communication between Nostr-based clients and a standard MCP server. For more detailed information, visit the https://www.contextvm.org/gateway/overview/
- **NostrMCPProxy**: This client-side component acts as a local proxy, exposing a mcp server locally, and translating communication between a standard MCP client and a remote, Nostr-based MCP server. For more detailed information, visit the https://www.contextvm.org/proxy/overview/
### Gateway CLI
The `gateway-cli` is a tool designed to simplify the deployment and configuration of the `NostrMCPGateway`. It allows you to expose your MCP server through the Nostr network with ease.
**Quick Start Installation:**
```bash
curl -fsSL https://raw.githubusercontent.com/contextvm/gateway-cli/main/install.sh | bash
```
**Alternative Installation Methods:**
- **From Binaries**: Download the latest release from the
and follow the instructions.
- **With Deno**: Run `deno run -A jsr:@contextvm/gateway-cli` or install it with `deno install -A gateway-cli jsr:@contextvm/gateway-cli`.
**Example Usage:**
```bash
gateway-cli --private-key "your_private_key" --relays "wss://relay.com" --server "command arg1 arg2"
```
For more detailed information, including configuration options and development instructions, visit https://github.com/ContextVM/gateway-cli.
#### Proxy CLI
The `proxy-cli` is designed to wrap around the `@contextvm/ts-sdk`'s `NostrMCPProxy`, allowing you to connect to MCP servers exposed through the Nostr network and use them as local MCP servers in any MCP client. Allowing any MCP client to support nostr transport, even if it doesn't supports it natively
**Quick Start Installation:**
```bash
curl -fsSL https://raw.githubusercontent.com/contextvm/proxy-cli/main/install.sh | bash
```
**Alternative Installation Methods:**
- **From Binaries**: Download the latest release from the
and follow the instructions.
- **With Deno**: Run `deno run -A jsr:@contextvm/proxy-cli` or install it with `deno install -A jsr:@contextvm/proxy-cli`.
**Example Usage:**
```bash
proxy-cli --private-key "your_private_key" --relays "wss://relay.com" --server-pubkey "server_public_key"
```
For more detailed information about the CLIs, including configuration options and development instructions, visit the
For more information about ContextVM, visit http://contextvm.org
If you have any doubt don't hesitate to ask
GitHub
Releases · ContextVM/gateway-cli
Contribute to ContextVM/gateway-cli development by creating an account on GitHub.
GitHub
Releases · ContextVM/proxy-cli
Contribute to ContextVM/proxy-cli development by creating an account on GitHub.
GitHub
GitHub - ContextVM/proxy-cli
Contribute to ContextVM/proxy-cli development by creating an account on GitHub.
We also have a signal group for the community
View quoted note →

Signal Messenger Group
Follow this link to join a group on Signal Messenger.
GM Nostr! We will be hosting a community call on July 25th at 16:00 UTC. 🚀
During this call, we will walk through the new overhaul and discuss the architecture of ContextVM. There will also be space to chat about related topics, ask questions, clear doubts, share use cases, and discuss adjacent topics. Our goal is to create a regular space for discussing ContextVM and related topics such as MCP, AI, Nostr, and Bitcoin. Whether you already understand what ContextVM is or not, please join us and don't be afraid to ask questions.

HiveTalk
ContextVM Community Call
First community call to discuss about ContextVM. Jul 25 @ 16:00 utc
To clarify, there was a typo in our previous message 🙏 We meant July instead of October for the community call. We are eager to host a community call on either July 24 or 25, next week. These dates are not set in stone yet. We want to know if these dates work for you so we can determine the final date. If you want to participate, please share your preference.
View quoted note →
Thanks to @aljaz for the contribution, the contextvm.org page now has an llms.txt file!
You can find it at the following URL: https://contextvm.org/llms.txt This makes it pretty easy to start working with ContextVM using LLMS.
We are thrilled to unveil the new identity of DVMCP. Moving forward, the project will be called ContextVM and will be officially hosted under the https://contextvm.org domain. This rebranding is driven by several factors:
- Conceptual Clarity: The term "DVM" remains ambiguous within the Nostr community. The recent "DVM wars" highlighted the lack of consensus around what a DVM is, and it doesn't seem this will change soon.
- Avoiding Confusion: There is another project called DVMCP in the MCP world, which stands for "damn vulnerable MCP." Its goal is to provide a "hack the box" MCP experience, and we do not want to be associated with it.
- Not Following the DVM Pattern: We initially called the project DVMCP because we were following the pattern described in NIP-90 DVMs to implement MCP over Nostr. However, this is changing now, as more information is provided below.
- New Direction and Governance: There are enough technical changes that justify the rebranding, and we want to reinforce the open-source nature and community-driven governance of the project. The project is now under an organization.
We initiated this project early on, when MCP was just being announced. We started DVMCP following a "kitchen sink" approach, reimplementing everything to gain experience and understanding of MCP and how it can leverage Nostr's capabilities. This helped us delve deeper into MCP and understand its concepts thoroughly.
Additionally, MCP is a relatively new protocol, and its governance is still under debate. By following the "kitchen sink" path, we aimed to avoid distractions from breaking changes on their end. Now that the MCP protocol is more mature, we can better anticipate its evolution. Another reason for the rename is to move the project under an organization that better reflects its open-source nature and the community-driven governance we envision.
All these factors have led us to this decision. We will continue to use this npub for all related communications.
## Technical Changes Overview
The most significant change in the specification is the elimination of separate kinds for requests and responses, opting instead for a single kind acting as a "socket." We think this is a more elegant solution. We will provide more detailed information about these changes in future posts, but you can read the spec right now at https://www.contextvm.org/ctxvm-draft-spec/.
We are also announcing the ContextVM/ts-sdk https://github.com/contextvm/ts-sdk, which provides all necessary pieces to work with ContextVM and demonstrates our new integration approach with MCP. We have based the design of our architecture on the transport domain of MCP, creating Nostr transports for servers and clients. The transport in MCP is an agnostic piece of the stack, with local transports like stdio or remote transports like SSE or streamable HTTP. Transports are simply transports, while servers and clients are the protocol-compliant parts. Now, we are introducing Nostr transports, making it easy to operate and consume MCP over Nostr using their SDK and the Nostr transports from the ContextVM SDK. This enhances both the developer and user experience, making it easier to reason about, as ContextVM is now a thin layer on top of MCP SDKs. Any changes in the MCP spec or their SDK will be handled out of the box, reducing maintenance costs and eliminating the need for adaptations to new MCP features. With everything related to ContextVM happening at the transport level, we believe this is a forward-thinking architectural choice.
The project is now live, and you can explore it at http://contextvm.org . The SDK is fully usable and offers all basic features. It also supports encrypted communication by default.
Our next steps include adapting the website to create a decentralized repository where anyone can discover MCP servers operating on Nostr and allowing users to try them out. Write more tutorials and guides. Next steps for the SDK include adding payment capabilities, after which we will be fully aligned with the current state of DVMCP. We will be releasing these features and more in the coming weeks.
We are looking forward to know your thoughs, and also we are looking for for contributors and testers. We will also want to host a community call this week. We are proposing Thursday, October 24, or Friday, October 25, at 16:00 UTC. These dates are just a reference, and if you have a better date drop it in a comment, we will adapt to the one that suits everyone best. Please join us and don't hesitate to ask questions.
Are you ready, guys? Today, we're going to make some big announcements. Stay tuned! 🚀
GM Nostr! We're working hard to give DVMCP a revamp. We'll make a big announcement this week, so stay tuned!
We are working hard on the refactor currently underway, which will bring a major simplification of the codebase and specification 🚀
This will result in a much better developer experience when connecting to servers and consuming capabilities from mcp servers across any platform, native clients, web clients, or any other type of client. Additionally, there are other surprises in store. Stay tuned! ETA: 2 weeks.
Taking the time to simplify the DVMCP specification, we are reducing complexity and unnecessary requirements while preserving the complete feature set and value proposition of DVMCP. We are notw more conscious about the technology, and can simplify the protocol based on the expertise we have gained. This effort is also part of a refactor we will undertake for the DVMCP implementation, which will be better separated into a library or SDK and its implementations for packages like 'bridge' and 'discovery'. This will make implementation in web apps and other platforms more straightforward. Stay tuned 🚀