We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MikkoParkkola/mcp-gateway'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
[package]
name = "mcp-gateway"
version = "2.4.0"
edition = "2024"
rust-version = "1.85"
authors = ["Mikko Parkkola <mikko.parkkola@iki.fi>"]
description = "Universal MCP Gateway - Single-port multiplexing with Meta-MCP for ~95% context token savings"
license = "MIT OR Apache-2.0"
homepage = "https://github.com/MikkoParkkola/mcp-gateway"
repository = "https://github.com/MikkoParkkola/mcp-gateway"
documentation = "https://github.com/MikkoParkkola/mcp-gateway#readme"
readme = "README.md"
keywords = ["mcp", "model-context", "gateway", "proxy", "ai"]
categories = ["command-line-utilities", "network-programming", "web-programming"]
[dependencies]
# Async runtime
tokio = { version = "1.44", features = ["full", "tracing"] }
# HTTP server/client
axum = { version = "0.8", features = ["tracing", "http2"] }
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json", "stream"] }
tower = { version = "0.5", features = ["timeout", "limit", "load-shed", "retry"] }
tower-http = { version = "0.6", features = ["cors", "trace", "timeout", "compression-gzip", "request-id", "catch-panic"] }
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"
# Configuration
figment = { version = "0.10", features = ["yaml", "env"] }
# CLI
clap = { version = "4.5", features = ["derive", "env", "wrap_help"] }
# Logging & Telemetry
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json", "fmt"] }
# Error handling
thiserror = "2.0"
anyhow = "1.0"
# Async utilities
futures = "0.3"
async-trait = "0.1"
tokio-util = { version = "0.7", features = ["codec", "io"] }
tokio-stream = { version = "0.1", features = ["sync"] }
async-stream = "0.3"
# Rate limiting & backoff
governor = "0.10"
backoff = { version = "0.4", features = ["tokio"] }
# Utilities
regex = "1.11"
url = "2.5"
uuid = { version = "1.11", features = ["v4", "fast-rng"] }
chrono = { version = "0.4", features = ["serde"] }
dashmap = "6.1"
parking_lot = "0.12"
bytes = "1.9"
pin-project-lite = "0.2"
# OAuth / Crypto
sha2 = "0.10"
md5 = "0.7"
base64 = "0.22"
rand = "0.9"
dirs = "6.0"
open = "5.3"
hmac = "0.12"
hex = "0.4"
# Key Server: OIDC JWT verification
jsonwebtoken = "9.3"
# Constant-time comparison (prevent timing attacks in admin token check)
subtle = "2.6"
# mTLS / TLS
rustls = { version = "0.23", default-features = false, features = ["ring", "tls12"] }
rustls-pemfile = "2.2"
rcgen = { version = "0.13", features = ["pem", "x509-parser"] }
time = { version = "0.3", default-features = false }
x509-parser = "0.16"
axum-server = { version = "0.7", features = ["tls-rustls"] }
tokio-rustls = "0.26"
# XML parsing (for APIs that return XML, e.g. ECB exchange rates)
quick-xml = "0.37"
# Environment file loading
dotenvy = "0.15"
# File watching (hot-reload)
notify = "8.0"
walkdir = "2.5"
# Metrics
metrics = "0.24"
metrics-exporter-prometheus = { version = "0.16", optional = true }
[dev-dependencies]
tokio-test = "0.4"
pretty_assertions = "1.4"
tempfile = "3.14"
serde_urlencoded = "0.7"
[features]
default = []
metrics = ["dep:metrics-exporter-prometheus"]
[[bin]]
name = "mcp-gateway"
path = "src/main.rs"
[profile.dev]
debug = 0 # No debug symbols — biggest size saver (~50%)
strip = true # Strip remaining metadata
[profile.release]
lto = "thin"
codegen-units = 1
panic = "abort"
strip = true
[lints.rust]
unsafe_code = "forbid"
[lints.clippy]
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
module_name_repetitions = "allow"
must_use_candidate = "allow"
missing_errors_doc = "allow"