[package]
edition = "2024"
rust-version = "1.90"
name = "tower-mcp"
version = "0.18.2"
authors = ["Josh Rotenberg <joshrotenberg@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Tower-native Model Context Protocol (MCP) implementation"
homepage = "https://github.com/joshrotenberg/tower-mcp"
documentation = "https://docs.rs/tower-mcp"
readme = "README.md"
keywords = [
"mcp",
"tower",
"json-rpc",
"ai",
"llm",
]
categories = [
"network-programming",
"asynchronous",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/joshrotenberg/tower-mcp"
[package.metadata.docs.rs]
all-features = true
[features]
childproc = []
default = []
dynamic-tools = []
full = [
"http",
"websocket",
"unix",
"childproc",
"oauth",
"jwks",
"testing",
"dynamic-tools",
"http-client",
"oauth-client",
"proxy",
"macros",
"resilience",
"mcp-apps",
"protocol-2026-07-28",
]
http = [
"dep:axum",
"dep:hyper",
"dep:http",
"dep:http-body-util",
"dep:tokio-stream",
"dep:uuid",
]
http-client = ["dep:reqwest"]
jwks = [
"oauth",
"dep:reqwest",
]
macros = ["dep:tower-mcp-macros"]
mcp-apps = ["dep:url"]
oauth = [
"dep:jsonwebtoken",
"http",
"dep:url",
]
oauth-client = [
"http-client",
"dep:sha2",
"dep:urlencoding",
]
protocol-2026-07-28 = ["stateless"]
proxy = []
resilience = ["dep:tower-resilience"]
stateless = ["dep:sha2"]
testing = ["tower-mcp-types/testing"]
unix = ["http"]
websocket = [
"dep:axum",
"dep:uuid",
]
[lib]
name = "tower_mcp"
path = "src/lib.rs"
[[test]]
name = "channel_transport"
path = "tests/channel_transport.rs"
[[test]]
name = "client_tasks"
path = "tests/client_tasks.rs"
[[test]]
name = "http_client"
path = "tests/http_client.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "json_schema_2020_12"
path = "tests/json_schema_2020_12.rs"
[[test]]
name = "jwks"
path = "tests/jwks.rs"
[[test]]
name = "macros"
path = "tests/macros.rs"
[[test]]
name = "parse_error"
path = "tests/parse_error.rs"
[[test]]
name = "per_request_meta"
path = "tests/per_request_meta.rs"
[[test]]
name = "property"
path = "tests/property.rs"
[[test]]
name = "schema_validation"
path = "tests/schema_validation.rs"
[[test]]
name = "server_discover"
path = "tests/server_discover.rs"
[[test]]
name = "stateless_disconnect"
path = "tests/stateless_disconnect.rs"
[[test]]
name = "stdio_loop"
path = "tests/stdio_loop.rs"
[[test]]
name = "subscriptions_listen"
path = "tests/subscriptions_listen.rs"
[[test]]
name = "task_preparation"
path = "tests/task_preparation.rs"
[[test]]
name = "unix_socket"
path = "tests/unix_socket.rs"
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.8"
features = [
"json",
"ws",
]
optional = true
[dependencies.base64]
version = "0.23.0"
[dependencies.futures]
version = "0.3"
[dependencies.getrandom]
version = "0.4"
[dependencies.http]
version = "1"
optional = true
[dependencies.http-body-util]
version = "0.1"
optional = true
[dependencies.hyper]
version = "1"
optional = true
[dependencies.jsonwebtoken]
version = "11"
features = [
"aws_lc_rs",
"use_pem",
]
optional = true
default-features = false
[dependencies.pin-project-lite]
version = "0.2"
[dependencies.regex]
version = "1"
[dependencies.reqwest]
version = "0.13"
features = [
"rustls",
"json",
"stream",
"form",
]
optional = true
default-features = false
[dependencies.schemars]
version = "1.2"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.sha2]
version = "0.11"
optional = true
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.tokio-stream]
version = "0.1"
features = ["sync"]
optional = true
[dependencies.tokio-util]
version = "0.7"
default-features = false
[dependencies.tower]
version = "0.5"
features = ["util"]
[dependencies.tower-mcp-macros]
version = "0.18"
optional = true
[dependencies.tower-mcp-types]
version = "0.18"
[dependencies.tower-resilience]
version = "0.10.0"
features = [
"bulkhead",
"ratelimiter",
"coalesce",
"circuitbreaker",
"circuitbreaker",
"ratelimiter",
"bulkhead",
]
optional = true
default-features = false
[dependencies.tower-service]
version = "0.3"
[dependencies.tracing]
version = "0.1"
[dependencies.url]
version = "2"
optional = true
[dependencies.urlencoding]
version = "2"
optional = true
[dependencies.uuid]
version = "1"
features = ["v4"]
optional = true
[dev-dependencies.async-trait]
version = "0.1"
[dev-dependencies.jsonschema]
version = "0.49"
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.reqwest]
version = "0.13"
features = [
"rustls",
"json",
"stream",
"form",
]
default-features = false
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.tower]
version = "0.5"
features = [
"util",
"timeout",
"limit",
]
[dev-dependencies.tower-resilience]
version = "0.10.0"
features = [
"bulkhead",
"ratelimiter",
"coalesce",
"circuitbreaker",
"coalesce",
"ratelimiter",
"circuitbreaker",
]
default-features = false
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]