|
| 1 | +# Standalone MCP Gateway with Web UI |
| 2 | + |
| 3 | +A complete standalone Model Context Protocol (MCP) gateway with a modern web-based user interface for dynamic server management. |
| 4 | + |
| 5 | +## 🎯 Overview |
| 6 | + |
| 7 | +This standalone gateway provides a user-friendly web interface to manage MCP servers dynamically, generate configuration files for popular MCP clients, and deploy complete MCP solutions with Docker. |
| 8 | + |
| 9 | + |
| 10 | + |
| 11 | +## ✨ Key Features |
| 12 | + |
| 13 | +🎛️ **Modern Web Interface** |
| 14 | +- Responsive design with intuitive server management |
| 15 | +- Real-time server status indicators |
| 16 | +- Search and filter capabilities |
| 17 | + |
| 18 | +🔄 **Dynamic Server Management** |
| 19 | +- Add/remove servers on the fly |
| 20 | +- Complete Docker MCP catalog integration |
| 21 | +- Server configuration management |
| 22 | + |
| 23 | +📋 **Configuration Export** |
| 24 | +- Claude Desktop (`mcp.json`) generation |
| 25 | +- LLM Studio configurations |
| 26 | +- Docker Compose deployments |
| 27 | + |
| 28 | +🌐 **Remote Operations** |
| 29 | +- Remote gateway connections |
| 30 | +- Cross-platform web access |
| 31 | +- API-driven management |
| 32 | + |
| 33 | +## 🚀 Quick Start |
| 34 | + |
| 35 | +### Option 1: Docker Compose (Recommended) |
| 36 | + |
| 37 | +```bash |
| 38 | +# Clone and start |
| 39 | +git clone https://github.com/davesbits/mcp-gateway.git |
| 40 | +cd mcp-gateway |
| 41 | +docker compose -f compose.standalone.yaml up -d |
| 42 | + |
| 43 | +# Access the UI |
| 44 | +open http://localhost:3000 |
| 45 | +``` |
| 46 | + |
| 47 | +### Option 2: Build from Source |
| 48 | + |
| 49 | +```bash |
| 50 | +# Prerequisites: Go 1.24+ |
| 51 | +git clone https://github.com/davesbits/mcp-gateway.git |
| 52 | +cd mcp-gateway |
| 53 | +go build -o standalone-gateway ./cmd/standalone-gateway |
| 54 | +./standalone-gateway |
| 55 | + |
| 56 | +# Access the UI |
| 57 | +open http://localhost:3000 |
| 58 | +``` |
| 59 | + |
| 60 | +## 📖 Usage Guide |
| 61 | + |
| 62 | +### Server Management |
| 63 | + |
| 64 | +1. **View Servers**: Browse available MCP servers with status indicators |
| 65 | +2. **Add Servers**: Click "Add" on inactive servers to enable them |
| 66 | +3. **Remove Servers**: Click "Remove" on active servers to disable them |
| 67 | +4. **Configure**: Modify server-specific configurations |
| 68 | +5. **Search**: Use the search box to find specific servers |
| 69 | + |
| 70 | +### Configuration Export |
| 71 | + |
| 72 | +#### For Claude Desktop: |
| 73 | +1. Go to "Export Config" tab |
| 74 | +2. Click "Claude Desktop" |
| 75 | +3. Copy the generated JSON to `~/.claude_desktop_config.json` |
| 76 | + |
| 77 | +Example output: |
| 78 | +```json |
| 79 | +{ |
| 80 | + "mcpServers": { |
| 81 | + "MCP_GATEWAY": { |
| 82 | + "command": "docker", |
| 83 | + "args": ["mcp", "gateway", "run", "--servers=filesystem,duckduckgo"], |
| 84 | + "env": {} |
| 85 | + } |
| 86 | + } |
| 87 | +} |
| 88 | +``` |
| 89 | + |
| 90 | +#### For LLM Studio: |
| 91 | +1. Click "LLM Studio" in Export Config |
| 92 | +2. Use the SSE endpoint: `http://localhost:8811/sse` |
| 93 | + |
| 94 | +#### For Docker Deployment: |
| 95 | +1. Click "Docker Compose" |
| 96 | +2. Save output as `docker-compose.yml` |
| 97 | +3. Run: `docker compose up -d` |
| 98 | + |
| 99 | +### Remote Gateway Management |
| 100 | + |
| 101 | +1. Go to "Settings" tab |
| 102 | +2. Configure remote host and protocol |
| 103 | +3. Click "Connect to Remote" |
| 104 | +4. Manage remote MCP gateways through the UI |
| 105 | + |
| 106 | +## 🏗️ Architecture |
| 107 | + |
| 108 | +``` |
| 109 | +┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ |
| 110 | +│ Web UI │ │ Standalone │ │ MCP Gateway │ |
| 111 | +│ (Port 3000) │◄───┤ Gateway │◄───┤ (Port 8811) │ |
| 112 | +│ │ │ HTTP Server │ │ │ |
| 113 | +└─────────────────┘ └─────────────────┘ └─────────────────┘ |
| 114 | + │ │ |
| 115 | + │ ▼ |
| 116 | + │ ┌─────────────────┐ |
| 117 | + │ │ Docker │ |
| 118 | + │ │ MCP Servers │ |
| 119 | + │ └─────────────────┘ |
| 120 | + ▼ |
| 121 | + ┌─────────────────┐ |
| 122 | + │ Configuration │ |
| 123 | + │ Management │ |
| 124 | + └─────────────────┘ |
| 125 | +``` |
| 126 | + |
| 127 | +## 🔧 API Endpoints |
| 128 | + |
| 129 | +- `GET /api/servers` - List all available servers |
| 130 | +- `POST /api/servers/add` - Add a server to the gateway |
| 131 | +- `POST /api/servers/remove` - Remove a server from the gateway |
| 132 | +- `GET /api/config` - Get gateway configuration |
| 133 | +- `POST /api/config` - Update gateway configuration |
| 134 | +- `GET /api/export/claude` - Export Claude Desktop configuration |
| 135 | +- `GET /api/export/llmstudio` - Export LLM Studio configuration |
| 136 | +- `GET /api/export/docker-compose` - Export Docker Compose configuration |
| 137 | + |
| 138 | +## 🛠️ Development |
| 139 | + |
| 140 | +### Building |
| 141 | + |
| 142 | +```bash |
| 143 | +# Build standalone gateway |
| 144 | +go build -o standalone-gateway ./cmd/standalone-gateway |
| 145 | + |
| 146 | +# Build Docker image |
| 147 | +docker build -f Dockerfile.standalone -t mcp-gateway-standalone . |
| 148 | +``` |
| 149 | + |
| 150 | +### Project Structure |
| 151 | + |
| 152 | +``` |
| 153 | +cmd/standalone-gateway/ |
| 154 | +├── main.go # Standalone gateway server |
| 155 | +├── ui/ # Embedded web UI files |
| 156 | +│ ├── index.html # Main interface |
| 157 | +│ └── app.js # JavaScript application |
| 158 | +└── README.md # Detailed documentation |
| 159 | +
|
| 160 | +ui/ # Source UI files |
| 161 | +├── index.html # Web interface |
| 162 | +└── app.js # Application logic |
| 163 | +
|
| 164 | +compose.standalone.yaml # Docker Compose setup |
| 165 | +Dockerfile.standalone # Docker build file |
| 166 | +``` |
| 167 | + |
| 168 | +## 🌟 Sample Servers |
| 169 | + |
| 170 | +The UI comes pre-configured with sample MCP servers: |
| 171 | + |
| 172 | +- **filesystem**: File operations (read, write, list, create) |
| 173 | +- **duckduckgo**: Web search capabilities |
| 174 | +- **github**: Repository management (requires GITHUB_TOKEN) |
| 175 | +- **postgres**: Database operations (requires connection string) |
| 176 | +- **slack**: Messaging integration (requires SLACK_BOT_TOKEN) |
| 177 | + |
| 178 | +## 🔒 Security |
| 179 | + |
| 180 | +- CORS-enabled for cross-origin requests |
| 181 | +- Docker socket access for container management |
| 182 | +- Environment-based secret management |
| 183 | +- Production-ready containerization |
| 184 | + |
| 185 | +## 📚 Related Documentation |
| 186 | + |
| 187 | +- [MCP Gateway Documentation](docs/mcp-gateway.md) |
| 188 | +- [Dynamic Server Management](docs/feature-specs/dynamic_servers.md) |
| 189 | +- [Docker MCP Catalog](https://hub.docker.com/mcp) |
| 190 | +- [Model Context Protocol Specification](https://spec.modelcontextprotocol.io/) |
| 191 | + |
| 192 | +## 🤝 Contributing |
| 193 | + |
| 194 | +1. Fork the repository |
| 195 | +2. Create a feature branch |
| 196 | +3. Implement changes with tests |
| 197 | +4. Submit a pull request |
| 198 | + |
| 199 | +## 📄 License |
| 200 | + |
| 201 | +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. |
| 202 | + |
| 203 | +--- |
| 204 | + |
| 205 | +Built with ❤️ for the MCP community |
0 commit comments