cargo-features = ["edition2024"] [package] name = "rmcp" license = { workspace = true } version = { workspace = true } edition = { workspace = true } repository = { workspace = true } homepage = { workspace = true } readme = { workspace = true } description = "Rust SDK for Model Context Protocol" documentation = "https://docs.rs/rmcp" [package.metadata.docs.rs] all-features = true [dependencies] serde = { version = "1.0", features = ["derive", "rc"] } serde_json = "1.0" thiserror = "2" chrono = { version = "0.4.38", features = ["serde"] } tokio = { version = "1", features = ["sync", "macros", "rt", "time"] } futures = "0.3" tracing = { version = "0.1" } tokio-util = { version = "0.7" } pin-project-lite = "0.2" paste = { version = "1", optional = true } # for auto generate schema schemars = { version = "0.8", optional = true } # for image encoding base64 = { version = "0.21", optional = true } # for SSE client reqwest = { version = "0.12", default-features = false, features = [ "json", "stream", "rustls-tls", ], optional = true } sse-stream = { version = "0.1.3", optional = true } url = { version = "2.4", optional = true } # For tower compatibility tower-service = { version = "0.3", optional = true } # for ws transport # tokio-tungstenite ={ version = "0.26", optional = true } # for sse-server transport axum = { version = "0.8", features = [], optional = true } rand = { version = "0.9", optional = true } tokio-stream = { version = "0.1", optional = true } # macro rmcp-macros = { version = "0.1", workspace = true, optional = true } [features] default = ["base64", "macros", "server"] client = [] server = ["transport-async-rw", "dep:schemars"] macros = ["dep:rmcp-macros", "dep:paste"] transport-sse = ["dep:reqwest", "dep:sse-stream", "dep:url"] transport-async-rw = ["tokio/io-util", "tokio-util/codec"] transport-io = ["transport-async-rw", "tokio/io-std"] transport-child-process = ["transport-async-rw", "tokio/process"] transport-sse-server = [ "transport-async-rw", "dep:axum", "dep:rand", "dep:tokio-stream", ] # transport-ws = ["transport-io", "dep:tokio-tungstenite"] tower = ["dep:tower-service"] [dev-dependencies] tokio = { version = "1", features = ["full"] } schemars = { version = "0.8" } anyhow = "1.0" tracing-subscriber = { version = "0.3", features = [ "env-filter", "std", "fmt", ] } [[test]] name = "test_tool_macros" required-features = ["server"] path = "tests/test_tool_macros.rs" [[test]] name = "test_with_python" required-features = ["server", "client", "transport-sse-server", "transport-sse", "transport-child-process"] path = "tests/test_with_python.rs" [[test]] name = "test_with_js" required-features = ["server", "transport-sse-server"] path = "tests/test_with_js.rs"