[package]
edition = "2024"
rust-version = "1.89.0"
name = "turbomcp-proxy"
version = "3.0.13"
authors = ["Nicholas Paterno <nick@epistates.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Universal MCP adapter/generator - introspection, proxying, and code generation for any MCP server"
homepage = "https://turbomcp.org"
documentation = "https://docs.rs/turbomcp-proxy"
readme = "README.md"
keywords = [
"mcp",
"proxy",
"adapter",
"code-generation",
"introspection",
]
categories = [
"command-line-utilities",
"web-programming",
"development-tools",
]
license = "MIT"
repository = "https://github.com/Epistates/turbomcp"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
adapters = [
"rest",
"graphql",
]
auth = [
"dep:turbomcp-auth",
"dep:jsonwebtoken",
"turbomcp-transport/auth",
"turbomcp-transport/jwt-validation",
]
cli = [
"clap",
"colored",
"tracing-subscriber",
]
codegen = [
"handlebars",
"convert_case",
"chrono",
"syn",
"proc-macro2",
]
default = [
"cli",
"runtime",
"introspection",
]
experimental-tasks = ["turbomcp-protocol/experimental-tasks"]
full = [
"introspection",
"runtime",
"codegen",
"schema",
"cli",
"auth",
"adapters",
]
graphql = [
"axum",
"tower",
"tower-http",
]
introspection = []
rest = [
"utoipa",
"utoipa-swagger-ui",
"axum",
"tower",
"tower-http",
]
runtime = [
"axum",
"dep:tower",
"tower-service",
"tower-http",
"futures-util",
"reqwest",
"tokio-tungstenite",
"auth",
]
schema = ["schemars"]
tower = ["runtime"]
[lib]
name = "turbomcp_proxy"
path = "src/lib.rs"
[[bin]]
name = "turbomcp-proxy"
path = "src/main.rs"
required-features = ["cli"]
[[example]]
name = "runtime_proxy"
path = "examples/runtime_proxy.rs"
[[example]]
name = "schema_export"
path = "examples/schema_export.rs"
[[example]]
name = "tcp_backend"
path = "examples/tcp_backend.rs"
[[example]]
name = "unix_socket_backend"
path = "examples/unix_socket_backend.rs"
[[test]]
name = "comprehensive_tests"
path = "tests/comprehensive_tests.rs"
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
[[test]]
name = "manual_integration"
path = "tests/manual_integration.rs"
[[test]]
name = "runtime_test"
path = "tests/runtime_test.rs"
[[test]]
name = "ssrf_protection_tests"
path = "tests/ssrf_protection_tests.rs"
[[bench]]
name = "introspection"
path = "benches/introspection.rs"
harness = false
[[bench]]
name = "runtime_proxy"
path = "benches/runtime_proxy.rs"
harness = false
[dependencies.turbomcp-auth]
version = "3.0.13"
optional = true
[dependencies.turbomcp-client]
version = "3.0.13"
[dependencies.turbomcp-protocol]
version = "3.0.13"
[dependencies.turbomcp-server]
version = "3.0.13"
optional = true
[dependencies.turbomcp-transport]
version = "3.0.13"
features = [
"http",
"tcp",
"websocket",
]
default-features = false
[dev-dependencies.criterion]
version = "0.8.2"
features = [
"html_reports",
"async_tokio",
]
[dev-dependencies.pretty_assertions]
version = "1.4"
[dev-dependencies.proptest]
version = "1.0"
[dev-dependencies.tempfile]
version = "3.8"
[dev-dependencies.tokio-test]
version = "0.4"
[target."cfg(unix)".dependencies.axum]
version = "0.8.8"
features = [
"ws",
"tracing",
"macros",
]
optional = true
[target."cfg(unix)".dependencies.bytes]
version = "1.5"
[target."cfg(unix)".dependencies.chrono]
version = "0.4"
optional = true
[target."cfg(unix)".dependencies.clap]
version = "4.5"
features = [
"derive",
"cargo",
"env",
]
optional = true
[target."cfg(unix)".dependencies.colored]
version = "2.0"
optional = true
[target."cfg(unix)".dependencies.convert_case]
version = "0.6"
optional = true
[target."cfg(unix)".dependencies.dashmap]
version = "6.1"
[target."cfg(unix)".dependencies.futures-util]
version = "0.3"
optional = true
[target."cfg(unix)".dependencies.handlebars]
version = "6.0"
optional = true
[target."cfg(unix)".dependencies.ipnetwork]
version = "0.20"
[target."cfg(unix)".dependencies.jsonwebtoken]
version = "10.3"
features = [
"aws_lc_rs",
"use_pem",
]
optional = true
[target."cfg(unix)".dependencies.parking_lot]
version = "0.12"
[target."cfg(unix)".dependencies.proc-macro2]
version = "1"
optional = true
[target."cfg(unix)".dependencies.reqwest]
version = "0.13.2"
features = [
"json",
"stream",
"rustls",
"http2",
"brotli",
"gzip",
"form",
"query",
]
optional = true
default-features = false
[target."cfg(unix)".dependencies.schemars]
version = "1.0"
optional = true
[target."cfg(unix)".dependencies.secrecy]
version = "0.10"
[target."cfg(unix)".dependencies.serde]
version = "1.0"
features = ["derive"]
[target."cfg(unix)".dependencies.serde_json]
version = "1.0"
[target."cfg(unix)".dependencies.syn]
version = "2"
features = [
"parsing",
"full",
]
optional = true
[target."cfg(unix)".dependencies.thiserror]
version = "2.0"
[target."cfg(unix)".dependencies.tokio]
version = "1.50"
features = [
"rt",
"rt-multi-thread",
"net",
"sync",
"time",
"signal",
"process",
"macros",
"io-util",
]
[target."cfg(unix)".dependencies.tokio-tungstenite]
version = "0.28"
features = ["rustls-tls-native-roots"]
optional = true
[target."cfg(unix)".dependencies.tower]
version = "0.5.3"
features = [
"util",
"retry",
"timeout",
]
optional = true
[target."cfg(unix)".dependencies.tower-http]
version = "0.6"
features = [
"cors",
"trace",
]
optional = true
[target."cfg(unix)".dependencies.tower-service]
version = "0.3"
optional = true
[target."cfg(unix)".dependencies.tracing]
version = "0.1"
[target."cfg(unix)".dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
optional = true
[target."cfg(unix)".dependencies.turbomcp-transport]
version = "3.0.13"
features = ["unix"]
default-features = false
[target."cfg(unix)".dependencies.url]
version = "2.5"
[target."cfg(unix)".dependencies.utoipa]
version = "5.4"
features = [
"axum_extras",
"macros",
]
optional = true
[target."cfg(unix)".dependencies.utoipa-swagger-ui]
version = "7.0"
features = ["axum"]
optional = true
[target."cfg(unix)".dependencies.uuid]
version = "1.6"
features = ["v4"]
[lints.clippy]
assertions_on_constants = "allow"
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_sign_loss = "allow"
const_is_empty = "allow"
items_after_statements = "allow"
match_same_arms = "allow"
missing_const_for_fn = "allow"
missing_errors_doc = "warn"
missing_panics_doc = "warn"
module_name_repetitions = "allow"
must_use_candidate = "allow"
return_self_not_must_use = "allow"
similar_names = "allow"
single_match_else = "allow"
struct_excessive_bools = "allow"
too_many_lines = "allow"
uninlined_format_args = "allow"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
"cfg(http)",
"cfg(websocket)",
"cfg(tcp)",
"cfg(unix)",
"cfg(auth)",
"cfg(dpop)",
"cfg(docsrs)",
]