Skip to main content

contextvm_sdk/
lib.rs

1//! # ContextVM SDK for Rust
2//!
3//! A complete Rust implementation of the [ContextVM protocol](https://contextvm.org),
4//! enabling MCP (Model Context Protocol) servers to expose their capabilities through
5//! the Nostr network.
6//!
7//! ## Architecture
8//!
9//! ```text
10//! ┌─────────────────────────────────────────┐
11//! │  Gateway / Proxy  (high-level)          │
12//! ├─────────────────────────────────────────┤
13//! │  Transport  (client / server)           │
14//! ├─────────────────────────────────────────┤
15//! │  Core  (types, serializers, validation) │
16//! │  Relay  │  Signer  │  Encryption        │
17//! └─────────────────────────────────────────┘
18//! ```
19//!
20//! ## Quick Start
21//!
22//! ### As a Gateway (expose local MCP server via Nostr)
23//!
24//! ```rust,no_run
25//! use contextvm_sdk::gateway::{NostrMCPGateway, GatewayConfig};
26//! use contextvm_sdk::transport::server::NostrServerTransportConfig;
27//! use contextvm_sdk::core::types::ServerInfo;
28//! use contextvm_sdk::signer;
29//! ```
30//!
31//! ### As a Proxy (connect to remote MCP server via Nostr)
32//!
33//! ```rust,no_run
34//! use contextvm_sdk::proxy::{NostrMCPProxy, ProxyConfig};
35//! use contextvm_sdk::transport::client::NostrClientTransportConfig;
36//! use contextvm_sdk::signer;
37//! ```
38
39pub mod core;
40pub mod discovery;
41pub mod encryption;
42pub mod gateway;
43pub mod proxy;
44pub mod relay;
45pub mod signer;
46pub mod transport;
47
48#[cfg(feature = "rmcp")]
49pub mod rmcp_transport;
50mod util;
51
52// Re-export commonly used types
53pub use core::error::{Error, Result};
54pub use core::types::{
55    CapabilityExclusion, ClientSession, EncryptionMode, GiftWrapMode, JsonRpcError,
56    JsonRpcErrorResponse, JsonRpcMessage, JsonRpcNotification, JsonRpcRequest, JsonRpcResponse,
57    ServerInfo,
58};
59pub use discovery::ServerAnnouncement;
60pub use relay::mock::MockRelayPool;
61pub use relay::{RelayPool, RelayPoolTrait};
62pub use transport::client::{
63    ClientCorrelationStore, NostrClientTransport, NostrClientTransportConfig,
64};
65pub use transport::discovery_tags::{DiscoveredPeerCapabilities, PeerCapabilities};
66pub use transport::server::{
67    IncomingRequest, NostrServerTransport, NostrServerTransportConfig, RouteEntry,
68    ServerEventRouteStore, SessionSnapshot, SessionStore,
69};
70
71#[cfg(feature = "rmcp")]
72pub use rmcp;