Skip to main content

Frequently Asked Questions

General

What is Open MCP Gateway?

Open MCP Gateway is a Rust-native, vendor-neutral gateway server that enables AI clients to connect to multiple MCP (Model Context Protocol) servers through a single, unified interface. It handles server lifecycle, configuration, and communication.

What is MCP?

MCP (Model Context Protocol) is an open protocol from Anthropic that standardizes how AI applications connect to external data sources, tools, and services. Learn more at modelcontextprotocol.io.

Why do I need a gateway?

Without a gateway:

  • Each client connects to each MCP server separately
  • Servers run continuously, wasting resources
  • Configuration is scattered across clients
  • No centralized monitoring or logging

With a gateway:

  • Single connection point for all servers
  • Auto-start on demand, auto-stop when idle
  • Centralized configuration with hot reload
  • Unified logging and statistics

Is it free to use?

Yes, Open MCP Gateway is open source under the Apache-2.0 license. You can use it freely for personal and commercial purposes.


Features

Does it support Docker?

Docker runtime support is planned for v0.2.0. Currently, you can:

  • Run the gateway itself in Docker
  • Use remote-sse to connect to MCP servers running in separate containers

Does it support Kubernetes?

Kubernetes runtime support (k8s-job, k8s-service) is planned for v0.3.0. You can deploy the gateway on Kubernetes today using the manifests in our documentation.

Can I use it with Claude Desktop?

Yes! Use the gateway-stdio binary to connect Claude Desktop to MCP servers through the gateway. See Claude Desktop Setup.

Does it support authentication?

Yes, the gateway supports API key authentication. See Authentication.

Can I add my own runtime type?

Yes, the runtime layer is extensible. Implement the Runtime trait and add your runtime type. See Custom Runtimes.


Configuration

How do I reload configuration without restart?

The gateway supports hot reload. When you save changes to catalog.yaml, they're automatically detected and applied. You can also trigger a manual reload:

curl -X POST http://localhost:4444/admin/reload

Can I use environment variables in config?

Yes, use the ${VAR} syntax:

api_key: "${MCP_GATEWAY_API_KEY}"

What happens to running servers when I reload?

  • Unchanged servers: Continue running
  • Modified servers: Continue with old config until restart
  • Removed servers: Gracefully stopped
  • New servers: Available immediately

Troubleshooting

Why isn't my server starting?

Common causes:

  1. Command not found (check PATH or use absolute path)
  2. Missing environment variables
  3. Working directory doesn't exist
  4. Permission issues

Enable debug logging:

RUST_LOG=debug gateway-http --config config.yaml

Why am I getting 401 errors?

If api_key is configured, all requests (except /health) require authentication:

curl -H "Authorization: Bearer your-key" http://localhost:4444/servers

Hot reload isn't working in Docker

Docker volumes may not propagate file events. Use manual reload:

curl -X POST http://localhost:4444/admin/reload

My server keeps stopping

Check the idle_timeout_seconds setting. Default is 5 minutes. Servers stop automatically after this period of inactivity.


Performance

How many servers can it handle?

The gateway is designed to handle hundreds of server definitions. Actual limits depend on:

  • Memory available (each server uses ~1-5MB when running)
  • Connection limits to backend servers
  • Request volume

What's the overhead?

The gateway adds minimal overhead:

  • ~5MB base memory
  • Milliseconds of latency for request routing
  • Efficient async I/O via Tokio

Can I run multiple gateway instances?

Yes, for high availability. Each instance maintains its own connections. For stateless scaling, use remote-sse runtime to connect to shared MCP server instances.


Comparison

How is this different from Docker MCP Gateway?

FeatureDocker MCP GatewayOpen MCP Gateway
RuntimesDocker onlyProcess, SSE, Docker*, K8s*
LanguageVariesRust
Stdio supportLimitedFirst-class
Hot reloadNoYes

*Planned for future versions

How is this different from running MCP servers directly?

AspectDirectWith Gateway
ConfigurationPer-clientCentralized
LifecycleManualAutomatic
Resource usageAlways runningOn-demand
MonitoringDIYBuilt-in stats

Contributing

How can I contribute?

See our Contributing Guide. We welcome:

  • Bug fixes
  • Documentation improvements
  • New runtime implementations
  • Feature suggestions

Where do I report bugs?

Open an issue on GitHub.

Is there a community chat?

Yes! Join our Discord server for real-time discussion.