About MCP Gateway
Unla is a lightweight gateway written in Go that converts existing MCP servers and REST APIs into MCP endpoints through YAML configuration, without code changes. It targets individuals and organizations, supports Docker and Kubernetes deployment, and includes a management UI. The project is under rapid development and may have breaking changes.
Key features
- 01Convert REST APIs to MCP servers via YAML
- 02Proxy existing MCP servers through the gateway
- 03Support for MCP SSE and Streamable HTTP
- 04Hot-reloading and multiple configuration persistence backends
- 05OAuth pre-authentication and multi-tenant support
Use cases
- 01Exposing internal REST APIs to MCP clients
- 02Proxying several MCP servers behind one gateway
- 03Deploying an MCP gateway with a management UI on Docker or Kubernetes
MCP support
Unla acts as an MCP gateway that exposes converted REST APIs and proxied MCP servers to MCP clients through SSE and Streamable HTTP endpoints.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEUnla - MCP Gateway
🚀 Instantly transform your existing MCP Servers and APIs into MCP endpoints — without changing a line of code.
⚡ Note: Unla is under rapid development! We strive to maintain backward compatibility, but it cannot be 100% guaranteed. Please make sure to check version changes carefully when upgrading. Due to the fast iteration, documentation updates may sometimes lag behind. If you encounter any issues, feel free to search or ask for help via Discord or Issues ❤️
✨ What is Unla?
Unla is a lightweight and highly available gateway service written in Go. It enables individuals and organizations to convert their existing MCP Servers and APIs into services compliant with the MCP Protocol — all through configuration, with zero code changes.
https://github.com/user-attachments/assets/69480eda-7aa7-4be7-9bc7-cae57fe16c54
🔧 Core Design Principles
- ✅ Zero Intrusion: Platform-agnostic, supports deployment on bare metal, VMs, ECS, Kubernetes, etc., without modifying existing infrastructure
- 🔄 Configuration-Driven: Convert legacy APIs to MCP Servers using YAML configuration — no code required
- 🪶 Lightweight & Efficient: Designed for minimal resource usage without compromising on performance or availability
- 🧭 Built-in Management UI: Ready-to-use web interface to simplify setup and reduce operational overhead
🚀 Getting Started
Unla supports a ready-to-run Docker deployment. Full deployment and configuration instructions are available in the docs.
Quick Launch with Docker
Configure environment variables:
export APISERVER_JWT_SECRET_KEY="changeme-please-generate-a-random-secret"
export SUPER_ADMIN_USERNAME="admin"
export SUPER_ADMIN_PASSWORD="changeme-please-use-a-secure-password"
Launch the container:
docker run -d \
--name unla \
-p 8080:80 \
-p 5234:5234 \
-p 5235:5235 \
-p 5335:5335 \
-p 5236:5236 \
-e ENV=production \
-e TZ=Asia/Shanghai \
-e APISERVER_JWT_SECRET_KEY=${APISERVER_JWT_SECRET_KEY} \
-e SUPER_ADMIN_USERNAME=${SUPER_ADMIN_USERNAME} \
-e SUPER_ADMIN_PASSWORD=${SUPER_ADMIN_PASSWORD} \
--restart unless-stopped \
ghcr.io/amoylab/unla/allinone:latest
Access and Configuration
-
Access the Web Interface:
- Open http://localhost:8080/ in your browser
- Login with the administrator credentials you configured
-
Add an MCP Server:
- Copy the config from: https://github.com/amoylab/unla/blob/main/configs/proxy-mock-server.yaml
- Click "Add MCP Server" in the web interface
- Paste the configuration and save
Available Endpoints
After configuration, the service will be available at these endpoints:
- MCP SSE: http://localhost:5235/mcp/user/sse
- MCP SSE Message: http://localhost:5235/mcp/user/message
- MCP Streamable HTTP: http://localhost:5235/mcp/user/mcp
Configure your MCP Client with the /sse or /mcp suffix URLs to start using it.
Testing
You can test the service using:
- The MCP Chat page in the web interface
- Your own MCP Client (recommended)
📖 Read the full guide → Quick Start »
🚀 Core Features
🔌 Protocol & Proxy Capabilities
- Support for converting RESTful APIs to MCP Server — Client → MCP Gateway → APIs
- Support proxying MCP services — Client → MCP Gateway → MCP Servers
- Support for converting gRPC to MCP Server — Client → MCP Gateway → gRPC
- Support for converting WebSocket to MCP Server — Client → MCP Gateway → WebSocket
- Support for MCP SSE
- Support for MCP Streamable HTTP
- Support for MCP responses including text, images, and audio
🧠 Session & Multi-Tenant Support
- Persistent and recoverable session support
- Multi-tenant support
- Support for grouping and aggregating MCP servers
🛠 Configuration & Management
- Automatic configuration fetching and seamless hot-reloading
- Configuration persistence (Disk/SQLite/PostgreSQL/MySQL)
- Configuration sync via OS Signals, HTTP, or Redis PubSub
- Version control for configuration
🔐 Security & Authentication
- OAuth-based pre-authentication support for MCP Servers
🖥 User Interface
- Intuitive and lightweight management UI
📦 Deployment & Operations
- Multi-replica service support
- Docker support
- Kubernetes and Helm deployment support
📚 Documentation
For more usage patterns, configuration examples, and integration guides, please visit:
👉 https://docs.unla.amoylab.com
📄 License
This project is licensed under the MIT License.
💬 Join Our WeChat Community
Scan the QR code below to add us on WeChat. Please include a note: mcp-gateway, mcpgw or unla.
📈 Star History
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.