带管理UI的MCP反向代理
一个完整的、自包含的反向代理系统,用于管理多个MCP(模型上下文协议)服务器。具有自动HTTPS和Let's Encrypt、内置Redis、基于web的配置向导和零配置部署。无需环境变量或外部依赖关系!
✨ 主要特点
🚀 无需配置
- 基于Web的安装向导:首次运行时通过浏览器配置所有内容
- 无环境变量:通过UI管理的所有设置
- 内置Redis:容器中包含Redis服务器-无需外部设置
- 自动HTTPS:让我们加密自动获取和管理的证书
- 独立:包含所有内容的单个Docker容器
🔒 自动SSL/HTTPS
- 让我们加密集成:只需输入您的域-证书会自动处理
- 自动续订:证书在到期前自动续订
- 强制HTTPS:自动HTTP到HTTPS重定向
- Cloudflare DNS支持:不打开端口80的替代验证
- 自签名选项:用于开发环境
🌐 网络和外部访问
- 多种隧道选项:Cloudflare隧道、ngrok、Tailscale漏斗
- UPnP端口映射:自动路由器配置
- 端口转发检测:实时端口可访问性检查
- 非标准端口\*加强安保(8437、3437、8443)
- 零配置外部访问:无需手动配置路由器
- API密钥验证:安全访问控制
- 加密的秘密:静态加密的敏感数据
📦 MCP管理
- 流程管理:生成、监视、重新启动MCP服务器
- GitHub部署:直接从存储库部署MCP
- 健康监测:跟踪流程运行状况和指标
- 自动重启:可配置的重启策略
- 实时日志:来自每个MCP进程的流日志
- 资源限制:CPU和内存限制
🎛️ Web管理界面
- 初始设置向导:逐步进行首次配置
- 设置面板:全面的配置管理
- 实时仪表盘:监控所有服务
- 网络配置:管理SSL、端口和网络
- 备份/恢复:导出和导入配置
- 无配置文件:一切都通过UI管理
🚀 快速开始
选项1:Docker Compose(推荐)
# Clone the repository
git clone https://github.com/keithah/mcp-reverse-proxy.git
cd mcp-reverse-proxy
# Start with Docker Compose
docker-compose up -d选项2:Docker Hub(ARM64和AMD64)
# Create data directories
mkdir -p data logs mcp-services backups certs
# Run from Docker Hub (works on ARM64 Oracle VMs)
docker run -d \
--name mcp-proxy \
-p 8437:8437 \
-p 3437:3437 \
-p 8443:8443 \
-v $(pwd)/data:/app/data \
-v $(pwd)/logs:/app/logs \
-v $(pwd)/mcp-services:/app/mcp-services \
-v $(pwd)/backups:/app/backups \
-v $(pwd)/certs:/app/certs \
-e NODE_ENV=production \
-e INITIAL_SETUP=true \
--restart unless-stopped \
keithah/mcp-reverse-proxy:latest选项3:Docker为ARM64/Oracle云编写
# docker-compose.yml for ARM64 systems
version: '3.8'
services:
mcp-proxy:
image: keithah/mcp-reverse-proxy:latest
container_name: mcp-proxy
ports:
- "8437:8437" # Backend API
- "3437:3437" # Frontend UI
- "8443:8443" # HTTPS
environment:
- NODE_ENV=production
- INITIAL_SETUP=true
volumes:
- ./data:/app/data
- ./logs:/app/logs
- ./mcp-services:/app/mcp-services
- ./backups:/app/backups
- ./certs:/app/certs
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8437/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s2.️⃣ 打开安装向导
导航到: http://localhost:3437
安装向导将指导您完成以下操作:
- 网络配置 -设置端口和UPnP设置
- SSL/HTTPS设置 -配置Let's Encrypt或自签名证书
- 安全 -API密钥是自动生成的
- 数据库和Redis -已配置(内置)
- GitHub集成 -可选,用于部署MCP
- 审核并完成 -保存您的API密钥!
3.️⃣ 就是这样!
没有配置文件,没有环境变量,没有外部依赖关系。一切都是通过web UI配置的。
🎯 首次安装向导
当您首次访问系统时,您将看到:
!\[安装向导步骤\]
- 欢迎屏幕 -配置内容概述
- 网络设置 -端口(8437、3437、8443)和UPnP自动配置
- 安全和SSL -选择“让我们加密”或自签名证书
- 内置服务 -Redis状态和连接测试
- GitHub(可选) -仅为私有存储库添加令牌(公共存储库在没有令牌的情况下工作)
- 审核并完成 -接收您的API密钥以便管理员访问
自动加密设置
在SSL步骤中,只需:
- 选择“让我们加密”
- 输入您的域名(例如。,
mcp.yourdomain.com) - 输入您的邮箱
- 点击“完成设置”
该系统将:
- ✅ 联系Let's Encrypt自动加密
- ✅ 验证您的域名
- ✅ 下载并安装证书
- ✅ 在端口8443上配置HTTPS
- ✅ 设置自动续订
- ✅ 强制HTTP到HTTPS重定向
无需手动管理证书!
🌐 外部访问选项
MCP反向代理包括多种方式,无需手动配置路由器即可将您的服务暴露到互联网上:
🚇 Cloudflare隧道
无需打开端口的安全加密隧道:
# Setup with subdomain (free)
curl -X POST http://localhost:8437/api/tunnel/cloudflare/setup \
-H "Content-Type: application/json" \
-d '{
"token": "your-cloudflare-token",
"domain": "mcp-proxy"
}'
# Creates: https://mcp-proxy.trycloudflare.com
# Setup with custom domain
curl -X POST http://localhost:8437/api/tunnel/cloudflare/setup \
-H "Content-Type: application/json" \
-d '{
"token": "your-cloudflare-token",
"domain": "mcp.yourdomain.com"
}'
# Creates: https://mcp.yourdomain.com优点:
- ✅ 无需端口转发
- ✅ 包括DDoS保护
- ✅ 全球CDN
- ✅ 支持自定义域 (拥有您的URL)
- ✅ 免费子域(\*.trycloudflare.com)
- ✅ 自动HTTPS证书
要求:
- Cloudflare帐户
- Cloudflare隧道令牌
- 对于自定义域:域必须在Cloudflare DNS上
自定义域设置:
- 将您的域名添加到Cloudflare
- 在仪表板中创建Cloudflare隧道
- 获取您的隧道令牌
- 使用您的完整域名:
"domain": "mcp.yourdomain.com" - 系统自动创建:
- 主UI: https://mcp.yourdomain.com - API https://api.mcp.yourdomain.com
🚀 ngrok隧道
用于开发和测试的即时公共URL:
# Setup via API
curl -X POST http://localhost:8437/api/tunnel/ngrok/setup \
-H "Content-Type: application/json" \
-d '{
"authToken": "your-ngrok-token",
"domain": "your-custom-domain.ngrok.io",
"region": "us"
}'优点:
- ✅ 即时设置
- ✅ 自定义域名(付费计划)
- ✅ 多个地区
- ✅ 非常适合发展
要求:
- ngrok帐户(提供免费等级)
- ngrok身份验证令牌
🔗 尾鳞片漏斗
公共访问专用网络:
# Setup via API
curl -X POST http://localhost:8437/api/tunnel/tailscale/setup \
-H "Content-Type: application/json" \
-d '{
"authKey": "your-tailscale-auth-key"
}'优点:
- ✅ 零信任网络
- ✅ P2P连接
- ✅ ACL控制
- ✅ MagicDNS支持
要求:
- 尾秤账户
- 尾标认证密钥
🔌 UPnP端口映射
自动路由器配置:
# Setup via API
curl -X POST http://localhost:8437/api/tunnel/upnp/setup \
-H "Content-Type: application/json"优点:
- ✅ 无外部服务
- ✅ 直接连接
- ✅ 低延迟
- ✅ 无每月费用
要求:
- 支持UPnP的路由器
- 地址
🎯 隧道管理API
所有隧道选项都可通过REST API访问 /api/tunnel:
# Get current tunnel status
curl http://localhost:8437/api/tunnel/config
# Test external connectivity
curl -X POST http://localhost:8437/api/tunnel/test
# Stop all tunnels
curl -X POST http://localhost:8437/api/tunnel/stop📱 Web UI管理
通过web界面访问隧道配置:
- 打开 设置 → 网络 → 外部访问
- 选择您喜欢的隧道方法
- 输入所需的凭据
- 点击 设置隧道
- 测试连接 测试连接
系统将自动:
- 配置隧道服务
- 显示您的外部URL
- 监控隧道健康状况
- 处理重新连接
🎛️ 基于Web的配置
不需要环境变量!
所有配置都是通过web UI完成的。系统将所有内容存储在数据库中,并在内部管理所有设置。
设置面板
点击仪表板上的“设置”按钮,进入综合设置面板:
- 服务器配置:端口、环境设置
- 网络设置:UPnP,端口转发
- 安全:API密钥,身份验证(自动生成)
- SSL/HTTPS:让我们加密,证书
- 瑞迪斯:内置服务器状态和测试
- GitHub:MCP部署集成
- 监控:日志、指标、保留
- 备份/恢复:导出和导入配置
内置Redis
Redis包含在Docker容器中并自动管理:
- 不需要外部Redis
- 在容器内的localhost:6379上运行
- 由主管管理
- 持久数据存储
- 无需配置
配置存储
所有设置都存储在SQLite数据库中:
/app/data/mcp-proxy.db-主配置数据库- 加密敏感值
- 持续跨容器重启
- 备份和恢复功能
🎯 容器架构
单容器解决方案
系统作为一个Docker容器运行,由Supervisor管理多个服务:
mcp-proxy container:
├── Redis Server (localhost:6379)
├── Backend API (port 8437)
├── Frontend UI (port 3437)
├── HTTPS Server (port 8443)
├── MCP Processes (managed)
└── Supervisor (process manager)内置服务
- 瑞迪斯:缓存和队列管理
- SQLite:配置和数据存储
- 主管:流程管理和监控
- SSL管理器:自动证书处理
- UPnP管理器:网络配置
🔧 高级配置
让我们加密选项
两种证书验证方法:
HTTP-01质询(默认)
- 需要可从互联网访问的端口80
- 自动域验证
- 适用于大多数设置
DNS-01挑战赛(Cloudflare)
- 无需端口80
- 对DNS记录使用Cloudflare API
- 更适合防火墙/NAT后面
在设置中配置→ SSL/HTTPS→ 提供商选项
网络端口
系统使用非标准端口进行安全保护:
- 8437:后端API(而不是8080)
- 3437:前端UI(而不是3000)
- 8443:HTTPS(而不是443)
所有端口都可以通过UI进行配置。
安全特性
- API密钥验证:所有管理功能都需要
- 加密存储:静态加密的敏感数据
- HSTS标头:严格的运输安全
- CSP标头:内容安全策略
- 速率限制:每个端点和全局限制
- 进程隔离:每个MCP单独运行
📱 使用系统
接入点
设置完成后:
- 超文本传输协议:
http://your-domain:8437(如果启用SSL,则重定向到HTTPS) - 超文本传输安全协议:
https://your-domain:8443(使用Let's Encrypt证书) - 本地:
http://localhost:3437(用于初始设置)
🎛️ 管理接口
仪表板功能
- 服务概述:所有具有实时状态的MCP服务
- 健康监测:系统健康状况、正常运行时间、资源使用情况
- 快捷操作:启动、停止、重新启动服务
- 实时更新:实时状态更新,无需刷新
设置面板
全面的配置管理:
服务器设置
- 端口配置(843734378443)
- 环境设置
- 性能调整
SSL/HTTPS管理
- 让我们加密设置和续订
- 证书状态和验证
- 强制HTTPS配置
网络配置
- UPnP端口映射状态
- 端口转发测试
- 公共/私有IP检测
- 路由器配置状态
安全设置
- API密钥管理
- 身份验证设置
- 速率限制配置
Redis管理
- 内置Redis服务器状态
- 连接测试
- 性能指标
GitHub集成
- 存储库部署设置(无令牌的公共存储库工作)
- Webhook配置(需要令牌)
- 令牌管理(仅对私有仓库可选)
系统监控
- 日志级别和保留
- 指标收集
- 健康检查间隔
备份/恢复
- 配置导出
- 设置导入
- 还原点
MCP服务要求
对于自动部署,MCP服务应包括以下内容之一:
- MCP清单文件 (
mcp.json或mcp-manifest.json):
{
"name": "my-mcp-service",
"description": "My MCP Service",
"entryPoint": "index.js",
"requiredEnv": ["API_KEY"],
"defaultEnv": {
"PORT": "3000"
}
}- 带有MCP配置的Package.json:
{
"name": "my-mcp-service",
"main": "index.js",
"mcp": {
"requiredEnv": ["API_KEY"],
"defaultEnv": {
"PORT": "3000"
}
}
}发展
项目结构
├── src/
│ ├── index.ts # Main server entry point
│ ├── lib/
│ │ ├── process-manager.ts # MCP process management
│ │ ├── github.ts # GitHub integration
│ │ ├── db/ # Database schema and migrations
│ │ └── logger.ts # Logging utilities
│ └── server/
│ ├── proxy.ts # Reverse proxy implementation
│ ├── api.ts # Management API
│ ├── github-api.ts # GitHub API endpoints
│ └── middleware/ # Express middleware
├── app/ # Next.js frontend
│ ├── page.tsx # Dashboard
│ └── components/ # React components
├── docker-compose.yml # Docker composition
└── Dockerfile # Container definition运行测试
npm test生产大楼
npm run build
npm start🔐 自动加密设置
零接触SSL配置
系统会自动处理Let's Encrypt:
- 安装向导期间:
- 选择“Let's Encrypt”作为SSL提供程序 - 输入您的域名(例如。, proxy.yourdomain.com) - 输入您的电子邮件以获取证书通知 - 点击“完成设置”
- 自动发生的事情:
System contacts Let's Encrypt
↓
Validates domain ownership
↓
Downloads SSL certificate
↓
Installs and configures HTTPS
↓
Sets up auto-renewal (daily checks)
↓
Forces HTTP → HTTPS redirect- 证书续订:
- 到期前自动续订 - 任何问题的电子邮件通知 - 零停机证书更新
验证方法
HTTP-01挑战 (默认)
- 端口80必须可从互联网访问
- 通过HTTP自动验证
- 如果启用,UPnP将映射端口80
DNS-01挑战 (Cloudflare)
- 无需端口80
- 使用Cloudflare API
- 在SSL设置中添加Cloudflare令牌
- 更适合复杂的网络设置
SSL状态监控
实时检查SSL状态:
- 设置→ SSL/HTTPS→ 证书状态
- 到期日期和续订状态
- 验证方法和域验证
📊 内置Redis和Supervisor
Redis服务器
Redis在容器内自动运行:
- 端口:本地主机:6379(仅限内部)
- 持久性:数据保存到
/app/data - 管理:由主管控制
- 监控:状态在设置中可用→ Redis
主管流程管理
主管管理的所有服务:
[Redis Server] - Cache and queues
[Backend API] - Main application
[Frontend UI] - Management interface内置进程监控和自动重启功能。
🚨 故障排除
设置问题
无法访问http://localhost:3437
- 检查Docker容器是否正在运行:
docker-compose ps - 验证docker-compose.yml中的端口映射
- 检查容器日志:
docker-compose logs
安装向导无法完成
- 确保Docker具有对的写访问权限。/数据目录
- 检查容器日志中的数据库错误
- 验证是否加载了所有必需的依赖项
SSL证书问题
Let’s Encrypt验证失败
- 验证域指向您的公共IP
- 检查端口80是否可从互联网访问
- 请尝试Cloudflare DNS验证
- 首先使用暂存模式进行测试
证书未续订
- 检查设置→ SSL/HTTPS→ 证书状态
- 验证cron作业是否正在运行
- 检查日志中的续订错误
网络连接问题
无法连接到HTTPS
- 验证SSL证书是否正确安装
- 检查端口8443是否通过路由器转发
- 使用设置进行测试→ 网络→ 端口转发检查
UPnP不工作
- 在路由器上启用UPnP
- 检查设置→ 网络→ UPnP状态
- 如果UPnP不可用,则手动转发端口
服务管理
MCP服务无法启动
- 检查设置→ 监控→ Logs
- 验证数据库中的服务配置
- 测试GitHub存储库访问
- 检查资源限制和权限
Redis连接失败
- 检查设置→ 瑞迪斯→ 测试连接
- 验证Redis进程在容器中运行
- 检查主管状态
获取帮助
- 容器日志:
docker-compose logs -f - 设置面板:检查所有状态指示器
- 网络面板:测试端口转发和SSL
- 备份配置:排除故障前导出设置
贡献
- 复刻仓库
- 创建要素分支
- 进行更改
- 添加测试
- 提交拉取请求
许可证
麻省理工学院
支持
有关问题和功能请求,请使用 .
🌟 新增功能
v2.0-外部访问和多架构支持
- ✅ Cloudflare隧道支持:零配置安全隧道
- ✅ ngrok集成:即时公共URL
- ✅ 尾鳞片漏斗:公共访问的零信任网络
- ✅ 增强型UPnP:自动路由器配置
- ✅ ARM64支持:适用于Oracle Cloud、Raspberry Pi、苹果Silicon
- ✅ 多架构Docker:AMD64和ARM64的单幅图像
- ✅ Docker Hub:
keithah/mcp-reverse-proxy:latest - ✅ 隧道管理API:RESTful隧道控制
- ✅ Web UI隧道配置:指向并单击外部访问设置
