Expand description
§ContextVM SDK for Rust
A complete Rust implementation of the ContextVM protocol, enabling MCP (Model Context Protocol) servers to expose their capabilities through the Nostr network.
§Architecture
┌─────────────────────────────────────────┐
│ Gateway / Proxy (high-level) │
├─────────────────────────────────────────┤
│ Transport (client / server) │
├─────────────────────────────────────────┤
│ Core (types, serializers, validation) │
│ Relay │ Signer │ Encryption │
└─────────────────────────────────────────┘§Quick Start
§As a Gateway (expose local MCP server via Nostr)
use contextvm_sdk::gateway::{NostrMCPGateway, GatewayConfig};
use contextvm_sdk::transport::server::NostrServerTransportConfig;
use contextvm_sdk::core::types::ServerInfo;
use contextvm_sdk::signer;§As a Proxy (connect to remote MCP server via Nostr)
use contextvm_sdk::proxy::{NostrMCPProxy, ProxyConfig};
use contextvm_sdk::transport::client::NostrClientTransportConfig;
use contextvm_sdk::signer;Re-exports§
pub use core::error::Error;pub use core::error::Result;pub use core::types::CapabilityExclusion;pub use core::types::ClientSession;pub use core::types::EncryptionMode;pub use core::types::GiftWrapMode;pub use core::types::JsonRpcError;pub use core::types::JsonRpcErrorResponse;pub use core::types::JsonRpcMessage;pub use core::types::JsonRpcNotification;pub use core::types::JsonRpcRequest;pub use core::types::JsonRpcResponse;pub use core::types::ProfileMetadata;pub use core::types::ServerInfo;pub use discovery::ServerAnnouncement;pub use relay::RelayPool;pub use relay::RelayPoolTrait;pub use transport::client::ClientCorrelationStore;pub use transport::client::NostrClientTransport;pub use transport::client::NostrClientTransportConfig;pub use transport::discovery_tags::DiscoveredPeerCapabilities;pub use transport::discovery_tags::PeerCapabilities;pub use transport::server::ClientPubkey;pub use transport::server::InboundEvent;pub use transport::server::IncomingRequest;pub use transport::server::NostrServerTransport;pub use transport::server::NostrServerTransportConfig;pub use transport::server::RouteEntry;pub use transport::server::ServerEventRouteStore;pub use transport::server::SessionSnapshot;pub use transport::server::SessionStore;pub use rmcp_transport::progress::progress_aware_options;pub use rmcp_transport::progress::PeerRequestOptionsExt;pub use rmcp_transport::progress::DEFAULT_OVERSIZED_IDLE_TIMEOUT;pub use rmcp_transport::progress::DEFAULT_OVERSIZED_MAX_TOTAL_TIMEOUT;pub use rmcp_transport::open_stream::call_tool_stream;pub use rmcp_transport::open_stream::ToolStreamCall;pub use transport::client::ClientOpenStreamHandle;pub use rmcp;
Modules§
- core
- Core types, constants, serializers, and validation Core module: constants, types, errors, serializers, and validation.
- discovery
- Server and capability discovery on the Nostr network Server discovery for the ContextVM protocol.
- encryption
- NIP-44 encryption and NIP-59 gift wrapping Encryption and gift wrapping for ContextVM.
- gateway
- Gateway bridging a local MCP server to Nostr ContextVM Gateway — bridge a local MCP server to Nostr.
- proxy
- Proxy connecting to a remote MCP server via Nostr ContextVM Proxy — connect to a remote Nostr MCP server as if local.
- relay
- Nostr relay pool management Nostr relay pool management.
- rmcp_
transport - rmcp Worker integration for ContextVM transports rmcp integration for ContextVM Nostr transports.
- signer
- Nostr signer utilities and key management Nostr signer utilities.
- transport
- Client and server MCP-over-Nostr transports Transport layer for ContextVM — MCP over Nostr.