[package]
edition = "2024"
rust-version = "1.85"
name = "tower-mcp"
version = "0.2.3"
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"
[features]
childproc = []
default = []
full = [
"http",
"websocket",
"childproc",
"oauth",
"jwks",
"testing",
]
http = [
"dep:axum",
"dep:hyper",
"dep:http",
"dep:http-body-util",
"dep:tokio-stream",
"dep:uuid",
]
jwks = [
"oauth",
"dep:reqwest",
]
oauth = [
"dep:jsonwebtoken",
"http",
]
testing = []
websocket = [
"dep:axum",
"dep:uuid",
]
[lib]
name = "tower_mcp"
path = "src/lib.rs"
[[example]]
name = "basic"
path = "examples/basic.rs"
[[example]]
name = "capability_filtering"
path = "examples/capability_filtering.rs"
required-features = ["http"]
[[example]]
name = "client_cli"
path = "examples/client_cli.rs"
[[example]]
name = "external_api_auth"
path = "examples/external_api_auth.rs"
[[example]]
name = "http_server"
path = "examples/http_server.rs"
required-features = ["http"]
[[example]]
name = "http_server_with_auth"
path = "examples/http_server_with_auth.rs"
required-features = ["http"]
[[example]]
name = "http_server_with_middleware"
path = "examples/http_server_with_middleware.rs"
required-features = ["http"]
[[example]]
name = "http_server_with_oauth"
path = "examples/http_server_with_oauth.rs"
required-features = ["oauth"]
[[example]]
name = "http_sse_client"
path = "examples/http_sse_client.rs"
required-features = ["http"]
[[example]]
name = "stdio_server"
path = "examples/stdio_server.rs"
[[example]]
name = "stdio_server_with_middleware"
path = "examples/stdio_server_with_middleware.rs"
[[example]]
name = "weather_server"
path = "examples/weather_server.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "jwks"
path = "tests/jwks.rs"
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.8"
features = [
"json",
"ws",
]
optional = true
[dependencies.base64]
version = "0.22.1"
[dependencies.futures]
version = "0.3"
[dependencies.http]
version = "1"
optional = true
[dependencies.http-body-util]
version = "0.1"
optional = true
[dependencies.hyper]
version = "1"
optional = true
[dependencies.jsonwebtoken]
version = "10"
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",
]
optional = true
default-features = false
[dependencies.schemars]
version = "1.2"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.tokio-stream]
version = "0.1"
features = ["sync"]
optional = true
[dependencies.tower]
version = "0.5"
features = ["util"]
[dependencies.tower-service]
version = "0.3"
[dependencies.tracing]
version = "0.1"
[dependencies.uuid]
version = "1"
features = ["v4"]
optional = true
[dev-dependencies.reqwest]
version = "0.13"
features = [
"rustls",
"json",
"stream",
]
default-features = false
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.tower]
version = "0.5"
features = [
"util",
"timeout",
"limit",
]
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]