本镜像提供一个实现Model Context Protocol (MCP)服务器接口的通用数据库网关,作为中间层组件,用于连接不同类型的数据库系统与遵循MCP协议的客户端应用,实现跨数据库的数据交互、协议转换与请求路由。其核心价值在于简化多数据库环境下的统一访问与集成,降低应用与底层数据库的耦合度。
通过以下命令快速启动网关,连接至MySQL数据库并暴露MCP服务端口:
bashdocker run -d \ --name mcp-db-gateway \ -p 50051:50051 \ # MCP服务端口映射(宿主机:容器) -e MCP_PORT=50051 \ # 容器内MCP服务监听端口 -e DB_TYPE=mysql \ # 后端数据库类型(支持mysql/postgresql/mongodb/redis等) -e DB_HOST=mysql-instance \ # 后端数据库主机名/IP -e DB_PORT=3306 \ # 后端数据库端口 -e DB_USER=admin \ # 数据库访问用户名 -e DB_PASSWORD=secret \ # 数据库访问密码 -e LOG_LEVEL=info \ # 日志级别(debug/info/warn/error) -e AUTH_ENABLED=true \ # 是否启用MCP客户端认证 -e TLS_ENABLED=true \ # 是否启用TLS加密传输 -v /path/to/tls/certs:/etc/mcp/tls \ # 挂载TLS证书(若启用TLS) mcp-db-gateway:latest
通过docker-compose.yml配置多数据库后端与网关的集成(以MySQL和PostgreSQL为例):
yamlversion: '3.8' services: mcp-gateway: image: mcp-db-gateway:latest container_name: mcp-db-gateway ports: - "50051:50051" # MCP服务端口 environment: - MCP_PORT=50051 - LOG_LEVEL=info - AUTH_ENABLED=true - TLS_ENABLED=true # 数据库1:MySQL配置 - DB_1_TYPE=mysql - DB_1_HOST=mysql - DB_1_PORT=3306 - DB_1_USER=mysql_user - DB_1_PASSWORD=mysql_pass - DB_1_NAME=app_db # 数据库2:PostgreSQL配置 - DB_2_TYPE=postgresql - DB_2_HOST=pgsql - DB_2_PORT=5432 - DB_2_USER=pgsql_user - DB_2_PASSWORD=pgsql_pass - DB_2_NAME=analytics_db volumes: - ./tls:/etc/mcp/tls # 挂载TLS证书目录(包含server.crt和server.key) depends_on: - mysql - pgsql networks: - mcp-network # 后端数据库服务(示例) mysql: image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORD=root_pass - MYSQL_DATABASE=app_db - MYSQL_USER=mysql_user - MYSQL_PASSWORD=mysql_pass networks: - mcp-network pgsql: image: postgres:14 environment: - POSTGRES_DB=analytics_db - POSTGRES_USER=pgsql_user - POSTGRES_PASSWORD=pgsql_pass networks: - mcp-network networks: mcp-network: driver: bridge
| 环境变量名 | 描述 | 默认值 | 示例值 |
|---|---|---|---|
MCP_PORT | MCP服务器监听端口 | 50051 | 50052 |
LOG_LEVEL | 日志级别(debug/info/warn/error/fatal) | info | debug |
AUTH_ENABLED | 是否启用MCP客户端认证(true/false) | false | true |
TLS_ENABLED | 是否启用TLS加密传输(true/false) | false | true |
CACHE_ENABLED | 是否启用请求缓存(true/false) | true | false |
CACHE_TTL | 缓存过期时间(秒) | 300 | 600 |
| 环境变量名 | 描述 | 示例值 |
|---|---|---|
DB_TYPE | 后端数据库类型(mysql/pgsql/mongo/redis) | mysql |
DB_HOST | 数据库主机名/IP | mysql-host |
DB_PORT | 数据库端口 | 3306 |
DB_USER | 数据库访问用户名 | dbuser |
DB_PASSWORD | 数据库访问密码 | dbpass |
DB_NAME | 目标数据库名称(如适用) | app_db |
通过DB_<N>_*格式的环境变量配置多数据库后端(<N>为数字,从1开始),例如:
DB_1_TYPE=mysqlDB_1_HOST=mysql-1DB_2_TYPE=pgsqlDB_2_HOST=pgsql-1网关将根据MCP请求中的context字段路由至对应数据库(需客户端请求中携带db_id: <N>上下文参数)。
对于复杂配置(如自定义路由规则、细粒度权限策略),可通过挂载配置文件覆盖默认配置。配置文件为YAML格式,路径为/etc/mcp/config.yaml,示例:
yamlmcp: port: 50051 tls: cert_path: /etc/mcp/tls/server.crt key_path: /etc/mcp/tls/server.key auth: jwt: secret: "your-jwt-secret" expires_in: 3600 databases: - id: 1 type: mysql host: mysql-1 port: 3306 user: user1 password: pass1 name: db1 routes: ["order_service.*"] # 仅路由order_service前缀的请求 - id: 2 type: pgsql host: pgsql-1 port: 5432 user: user2 password: pass2 name: db2 routes: ["analytics_service.*"] cache: enabled: true ttl: 300 backend: redis # 可选:local/redis redis: host: redis-cache port: 6379
通过Docker命令挂载配置文件:
bashdocker run -d \ --name mcp-db-gateway \ -p 50051:50051 \ -v ./config.yaml:/etc/mcp/config.yaml \ # 挂载自定义配置文件 -v ./tls:/etc/mcp/tls \ mcp-db-gateway:latest
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名