多数据库MCP服务器

一个为AI助手设计的强大多数据库MCP服务器,支持PostgreSQL、MySQL、SQLite等多种数据库,提供SSE和STDIO两种传输模式。

  • by MekayelAnik
  • Shell
  • 本地部署
  • 更新于
在 GitHub 查看 MekayelAnik/db-mcp-server-docker

使用说明

DB MCP服务器——Docker镜像

Unofficial multi-arch Up-to-Date Docker image for FreePeak/db-mcp-server — a powerful multi-database MCP server for AI assistants.

Credits • Images • Quick Start • Docker CLI • Docker Compose • Networking • Security & Transport • Configuration • Supported Databases • Environment Variables • MCPJungle Gateway • License

学分

此图像打包了 FreePeak/db mcp服务器 项目,由以下人员建造和维护 FreePeak 以及贡献者。所有应用程序代码、功能和文档都来自其存储库,并根据 MIT许可证.

此存储库仅提供:

  • 多拱形Docker镜像(linux/amd64, linux/arm64, linux/arm/v7)
  • GitHub Actions工作流,用于手动构建/发布和推广操作
  • 这个以Docker为中心的使用文档

有关功能请求、错误报告和源代码贡献,请访问 上游仓库.


图像

图像通过手动工作流调度发布到两个注册表(Docker Build & Publish)并且意图在内容上保持相同。

通过工作流操作可以获得稳定的推广:

  • auto-check 促进 stable 5天后 latest 年龄(符合条件时)
  • mark-stable 执行显式/手动稳定升级
注册表 图像
Docker Hub mekayelanik/db-mcp-server
GHCR。 ghcr.io/mekayelanik/db-mcp-server

标签

标签 描述
latest 从上游手动发布的最新版本 main
stable 从已发布版本升级(5天后自动符合条件或手动 mark-stable)
YYYYMMDD-<sha> 不可变标签——准确的上游提交和构建日期,例如。 20250312-19b7975
YYYYMMDD 浮动日期标签——当天的最新版本

平台

平台 架构
linux/amd64 x86-64(大多数服务器、桌面Linux、WSL2)
linux/arm64 ARM 64位(苹果硅通过Rosetta、AWS Graviton、Raspberry Pi 4/5)
linux/arm/v7 ARM 32位(Raspberry Pi 2/3,较旧的ARM板)

😎 给我买杯咖啡☕︎

您的支持鼓励我继续创建/支持我的开源项目。 如果你在这个项目中发现了价值,你可以给我买杯咖啡,让我保持灵感。

快速开始

# Create a config file
cat > config.json <<'EOF'
{
  "connections": [
    {
      "id": "mydb",
      "type": "postgres",
      "host": "localhost",
      "port": 5432,
      "name": "mydb",
      "user": "myuser",
      "password": "mypassword"
    }
  ]
}
EOF

# Run
docker run -d \
  --name db-mcp-server \
  -p 9092:9092 \
  -v $(pwd)/config.json:/app/config.json \
  mekayelanik/db-mcp-server:latest

MCP服务器现在可以在 https://localhost:9092/sse 默认情况下。

对于仅支持HTTP的本地测试,请设置 ENABLE_HTTPS=false.


Docker命令行界面

SSE模式(默认)

docker run -d \
  --name db-mcp-server \
  -p 9092:9092 \
  -v $(pwd)/config.json:/app/config.json \
  -e TRANSPORT_MODE=sse \
  -e SERVER_PORT=9092 \
  mekayelanik/db-mcp-server:latest

自定义端口

docker run -d \
  --name db-mcp-server \
  -p 8080:8080 \
  -v $(pwd)/config.json:/app/config.json \
  -e SERVER_PORT=8080 \
  mekayelanik/db-mcp-server:latest

STDIO模式

docker run --rm -i \
  -v $(pwd)/config.json:/app/config.json \
  -e TRANSPORT_MODE=stdio \
  mekayelanik/db-mcp-server:latest

持久日志

docker run -d \
  --name db-mcp-server \
  -p 9092:9092 \
  -v $(pwd)/config.json:/app/config.json \
  -v $(pwd)/logs:/app/logs \
  mekayelanik/db-mcp-server:latest

固定不可变标签(建议用于生产)

docker run -d \
  --name db-mcp-server \
  -p 9092:9092 \
  -v $(pwd)/config.json:/app/config.json \
  mekayelanik/db-mcp-server:20250312-19b7975

从GHCR而不是Docker Hub拉取

docker pull ghcr.io/mekayelanik/db-mcp-server:latest

docker run -d \
  --name db-mcp-server \
  -p 9092:9092 \
  -v $(pwd)/config.json:/app/config.json \
  ghcr.io/mekayelanik/db-mcp-server:latest

Docker Compose

最小--单个PostgreSQL

services:
  db-mcp-server:
    image: mekayelanik/db-mcp-server:latest
    container_name: db-mcp-server
    restart: unless-stopped
    ports:
      - "9092:9092"
    volumes:
      - ./config.json:/app/config.json:ro
      - logs:/app/logs
    environment:
      TRANSPORT_MODE: sse
      SERVER_PORT: "9092"

volumes:
  logs:

全栈——MCP服务器+PostgreSQL+MySQL

services:
  db-mcp-server:
    image: mekayelanik/db-mcp-server:latest
    container_name: db-mcp-server
    restart: unless-stopped
    ports:
      - "9092:9092"
    volumes:
      - ./config.json:/app/config.json:ro
      - logs:/app/logs
    environment:
      TRANSPORT_MODE: sse
      SERVER_PORT: "9092"
    depends_on:
      postgres:
        condition: service_healthy
      mysql:
        condition: service_healthy
    networks:
      - mcp-net

  postgres:
    image: postgres:16-alpine
    container_name: mcp-postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U myuser -d mydb"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - mcp-net

  mysql:
    image: mysql:8.0
    container_name: mcp-mysql
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: mydb
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
      MYSQL_ROOT_PASSWORD: rootpassword
    volumes:
      - mysql-data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "myuser", "-pmypassword"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - mcp-net

volumes:
  postgres-data:
  mysql-data:
  logs:

networks:
  mcp-net:
    driver: bridge

config.json 对于上述堆栈:

{
  "connections": [
    {
      "id": "postgres1",
      "type": "postgres",
      "host": "postgres",
      "port": 5432,
      "name": "mydb",
      "user": "myuser",
      "password": "mypassword"
    },
    {
      "id": "mysql1",
      "type": "mysql",
      "host": "mysql",
      "port": 3306,
      "name": "mydb",
      "user": "myuser",
      "password": "mypassword"
    }
  ]
}

注: 使用Docker Compose服务名称作为 host 值——例如。 postgres, mysql --不是 localhost.

对于其他变体,重用此模式并调整服务映像+ config.json 连接类型/主机。


网络

连接到主机上的数据库

当你的数据库在主机上运行时(不是在Docker中),使用 host.docker.internal 而不是 localhost:

{
  "connections": [
    {
      "id": "host_postgres",
      "type": "postgres",
      "host": "host.docker.internal",
      "port": 5432,
      "name": "mydb",
      "user": "myuser",
      "password": "mypassword"
    }
  ]
}

在Linux上, host.docker.internal 需要添加 --add-host:

docker run -d \
  --name db-mcp-server \
  -p 9092:9092 \
  --add-host host.docker.internal:host-gateway \
  -v $(pwd)/config.json:/app/config.json \
  mekayelanik/db-mcp-server:latest

或者在Docker Compose中:

services:
  db-mcp-server:
    image: mekayelanik/db-mcp-server:latest
    extra_hosts:
      - "host.docker.internal:host-gateway"

加入现有网络

如果您的数据库已经在命名的Docker网络上运行:

docker run -d \
  --name db-mcp-server \
  -p 9092:9092 \
  --network my-existing-network \
  -v $(pwd)/config.json:/app/config.json \
  mekayelanik/db-mcp-server:latest

在Docker Compose中,连接到外部网络:

services:
  db-mcp-server:
    image: mekayelanik/db-mcp-server:latest
    networks:
      - my-existing-network

networks:
  my-existing-network:
    external: true

暴露于局域网/远程客户端

默认情况下,容器绑定到所有接口(0.0.0.0).要限制到特定的主机IP,请执行以下操作:

docker run -d \
  --name db-mcp-server \
  -p 192.168.1.100:9092:9092 \
  -v $(pwd)/config.json:/app/config.json \
  mekayelanik/db-mcp-server:latest

反向代理背后(nginx示例)

upstream db_mcp {
    server 127.0.0.1:9092;
}

server {
    listen 443 ssl;
    server_name mcp.example.com;

    location / {
        proxy_pass         http://db_mcp;
        proxy_http_version 1.1;

        # Required for SSE (Server-Sent Events)
        proxy_set_header   Connection '';
        proxy_buffering    off;
        proxy_cache        off;
        chunked_transfer_encoding on;

        proxy_set_header   Host              $host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

安全与运输

HTTPS应该是默认设置吗?

当前默认值为 ENABLE_HTTPS=true.

推荐做法:

  • 仅限本地开发:仍建议使用HTTPS,但您可以设置 ENABLE_HTTPS=false 仅支持HTTP的工具。
  • 任何远程/LAN/公共使用:使用HTTPS和API密钥身份验证。

此MCP暴露了什么传输?

应用程序传输模式:

  • sse (默认)通过HTTP(S)
  • stdio (用于基于本地命令的集成)

在容器服务器模式下运行时(TRANSPORT_MODE=sse):

  • 公众听众:HAProxy打开 SERVER_PORT (默认值 9092)
  • 内部应用程序侦听器:MCP服务器上 INTERNAL_SERVER_PORT (默认值 38011,仅在容器中本地)

上游服务器暴露的常见MCP HTTP端点包括:

  • /sse
  • /jsonrpc
  • /message
  • /events
  • /status

API密钥身份验证行为

集 API_KEY 以在HAProxy中启用承载令牌保护。

预期状态行为:

  • 缺少身份验证标头-> 401 Unauthorized
  • 无效密钥-> 403 Forbidden
  • 有效密钥->请求被转发到后端(后端仍可能返回 200, 204, 405等,取决于端点/方法)

笔记:

  • Bearer 方案匹配不敏感(Bearer/bearer 两者都工作)。
  • 无效的API密钥格式失败关闭:容器在启动时退出。
  • /healthz 有一个仅用于本地主机的内部健康检查旁路。

HTTPS和证书行为

如果 ENABLE_HTTPS=true,HAProxy在上提供TLS服务 SERVER_PORT. 默认最低TLS版本为 TLSv1.3.

HTTP协议版本(可选模式)

集 HTTP_VERSION_MODE 以控制公共监听器上的协议协商:

  • auto (默认):尝试 h3 首先,然后回到 h2那么 h1 (http/1.1)
  • all:行为与 auto
  • h1:仅强制HTTP/1.1
  • h2:仅通过TLS强制HTTP/2
  • h1+h2:允许HTTP/1.1和HTTP/2
  • h3:请求HTTP/3支持(QUIC)和标准TLS回退(h1+h2)

笔记:

  • h2 和 h3 需要TLS(ENABLE_HTTPS=true).
  • 如果 ENABLE_HTTPS=false,侦听器将回退到HTTP/1.1。
  • 如果 h3 已请求,但HAProxy构建中的QUIC不可用,启动会记录一条警告,并在没有 h3.

推荐的默认值和模式意图

  • 生产默认值: HTTP_VERSION_MODE=auto
  • auto / all:先尝试HTTP/3,然后是HTTP/2,然后是HTTP/1.1回退
  • h1:严格兼容模式
  • h2:仅通过TLS强制HTTP/2
  • h3:使用安全的TCP回退请求HTTP/3

Docker CLI示例(按模式)

汽车链条(h3 -> h2 -> h1)(默认):

docker run -d \
  --name db-mcp-auto \
  -p 9092:9092 \
  -p 9092:9092/udp \
  -v $(pwd)/config.json:/app/config.json:ro \
  -e ENABLE_HTTPS=true \
  -e HTTP_VERSION_MODE=auto \
  -e API_KEY='replace_with_a_strong_key' \
  mekayelanik/db-mcp-server:latest

仅限HTTP/1.1:

docker run -d \
  --name db-mcp-h1 \
  -p 9092:9092 \
  -v $(pwd)/config.json:/app/config.json:ro \
  -e ENABLE_HTTPS=true \
  -e HTTP_VERSION_MODE=h1 \
  -e API_KEY='replace_with_a_strong_key' \
  mekayelanik/db-mcp-server:latest

仅限HTTP/2:

docker run -d \
  --name db-mcp-h2 \
  -p 9092:9092 \
  -v $(pwd)/config.json:/app/config.json:ro \
  -e ENABLE_HTTPS=true \
  -e HTTP_VERSION_MODE=h2 \
  -e API_KEY='replace_with_a_strong_key' \
  mekayelanik/db-mcp-server:latest

请求HTTP/3(加回退):

docker run -d \
  --name db-mcp-h3 \
  -p 9092:9092 \
  -p 9092:9092/udp \
  -v $(pwd)/config.json:/app/config.json:ro \
  -e ENABLE_HTTPS=true \
  -e HTTP_VERSION_MODE=h3 \
  -e API_KEY='replace_with_a_strong_key' \
  mekayelanik/db-mcp-server:latest

Docker编写代码片段

services:
  db-mcp-server:
    image: mekayelanik/db-mcp-server:latest
    ports:
      - "9092:9092/tcp"
      - "9092:9092/udp"
    environment:
      ENABLE_HTTPS: "true"
      HTTP_VERSION_MODE: "auto"
      API_KEY: "replace_with_a_strong_key"
    volumes:
      - ./config.json:/app/config.json:ro

如何在运行时验证有效模式

检查启动日志:

docker logs db-mcp-auto | grep -E 'HTTP versions enabled|HTTPS enabled|falling back'

检查生成的HAProxy绑定:

docker exec db-mcp-auto sh -lc "grep -n 'bind ' /tmp/haproxy.cfg"

预计为 auto/all 当QUIC可用时:

  • 一个TLS TCP与ALPN绑定 h2,http/1.1
  • 一个QUIC与ALPN绑定 h3

预计为 h1:

  • 一个TLS TCP与ALPN绑定 http/1.1

证书优先级:

  1. 如果 TLS_PEM_PATH 存在,直接使用。
  2. 否则,如果两者都有 TLS_CERT_PATH 和 TLS_KEY_PATH 它们被组合成PEM。
  3. 否则,将使用自动生成自签名证书 TLS_CN 和 TLS_SAN.

使用Cloudflare Origin证书(建议在Cloudflare之后使用)

如果您的流量是通过Cloudflare代理的,请使用Cloudflare Origin证书,而不是自动生成的自签名证书。

  1. 在Cloudflare Dashboard中,为您的主机名创建一个源证书,例如 mcp.example.com.
  2. 将证书和私钥PEM内容保存到主机文件。
mkdir -p certs

# Paste certificate PEM from Cloudflare
cat > certs/cloudflare-origin.crt <<'EOF'
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
EOF

# Paste private key PEM from Cloudflare
cat > certs/cloudflare-origin.key <<'EOF'
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
EOF
  1. 挂载文件并将TLS环境变量指向它们:
docker run -d \
  --name db-mcp-server \
  -p 9092:9092 \
  -v $(pwd)/config.json:/app/config.json:ro \
  -v $(pwd)/certs/cloudflare-origin.crt:/etc/haproxy/certs/server.crt:ro \
  -v $(pwd)/certs/cloudflare-origin.key:/etc/haproxy/certs/server.key:ro \
  -e ENABLE_HTTPS=true \
  -e TLS_CERT_PATH=/etc/haproxy/certs/server.crt \
  -e TLS_KEY_PATH=/etc/haproxy/certs/server.key \
  -e TLS_MIN_VERSION=TLSv1.3 \
  -e API_KEY='replace_with_a_strong_key' \
  mekayelanik/db-mcp-server:latest

笔记:

  • 入口点组合 TLS_CERT_PATH + TLS_KEY_PATH 进入 TLS_PEM_PATH 自动。
  • 将关键文件放在git之外并限制权限(chmod 600).
  • 在Cloudflare中,使用SSL/TLS模式 Full (strict).

安全运行示例(推荐)

docker run -d \
  --name db-mcp-server \
  -p 9092:9092 \
  -v $(pwd)/config.json:/app/config.json:ro \
  -e TRANSPORT_MODE=sse \
  -e ENABLE_HTTPS=true \
  -e TLS_CN=localhost \
  -e TLS_SAN=DNS:localhost,IP:127.0.0.1 \
  -e API_KEY='replace_with_a_strong_key' \
  mekayelanik/db-mcp-server:latest

然后使用以下方式连接:

  • https://localhost:9092/sse

配置

创建 config.json 并将其安装到 /app/config.json 在容器内。

多数据库示例

{
  "connections": [
    {
      "id": "pg_main",
      "type": "postgres",
      "host": "postgres",
      "port": 5432,
      "name": "maindb",
      "user": "appuser",
      "password": "apppassword",
      "query_timeout": 60,
      "max_open_conns": 20,
      "max_idle_conns": 5,
      "conn_max_lifetime_seconds": 300
    },
    {
      "id": "mysql_legacy",
      "type": "mysql",
      "host": "mysql",
      "port": 3306,
      "name": "legacydb",
      "user": "appuser",
      "password": "apppassword"
    },
    {
      "id": "sqlite_cache",
      "type": "sqlite",
      "database_path": "/app/data/cache.db",
      "journal_mode": "WAL",
      "use_modernc_driver": true
    },
    {
      "id": "oracle_erp",
      "type": "oracle",
      "host": "oracle.internal",
      "port": 1521,
      "service_name": "PROD",
      "user": "appuser",
      "password": "apppassword"
    }
  ]
}

支持的数据库

数据库 状态 注释
PostgreSQL ✅ 完全支持(v9.6–18) 查询、事务、模式、性能
MySQL ✅ 完全支持 查询、事务、架构、性能
SQLite ✅ 完全支持 基于文件、内存中、SQLCipher加密
Oracle ✅ 完全支持(10g–23c) 标准、RAC、云钱包、TNS
时间尺度数据库 ✅ 全面支持 超表、连续聚合、保留策略

环境变量

变量 默认值 描述
SERVER_PORT 9092 公共HAProxy侦听器端口
INTERNAL_SERVER_PORT 38011 内部MCP服务器端口(容器内)
TRANSPORT_MODE sse 运输方式: sse 或 stdio
CONFIG_PATH /app/config.json 容器内数据库配置文件的路径
API_KEY (空) 设置时启用承载身份验证(在启动时验证)
ENABLE_HTTPS true 在HAProxy中启用TLS终止
TLS_CERT_PATH /etc/haproxy/certs/server.crt 证书文件路径
TLS_KEY_PATH /etc/haproxy/certs/server.key 私钥文件路径
TLS_PEM_PATH /etc/haproxy/certs/server.pem HAProxy使用的PEM束路径
TLS_CN localhost CN用于自动生成自签名证书
TLS_SAN DNS:localhost 用于自动生成自签名证书的SAN
TLS_DAYS 365 自动生成的自签名证书的有效期
TLS_MIN_VERSION TLSv1.3 HTTPS侦听器可接受的最低TLS版本(TLSv1.2 或 TLSv1.3)
HTTP_VERSION_MODE auto 公共侦听器HTTP版本模式: auto, all, h1, h2, h1+h2, h3

AI客户端集成

大多数MCP客户端(Claude Code、Codex风格的客户端、Cursor、VS Code扩展和自定义代理)都接受以下模式之一:

  • 基于URL的MCP服务器通过SSE(HTTP或HTTPS)
  • STDIO上的基于命令的MCP服务器

具体的配置文件路径因客户端而异,但JSON对象 mcpServers 通常是相似的。

模板A:HTTP+SSE

仅将此用于本地受信任的开发。

{
  "mcpServers": {
    "db-mcp-http": {
      "url": "http://localhost:9092/sse"
    }
  }
}

模板B:HTTPS+SSE+承载API密钥

建议用于局域网/远程使用。

{
  "mcpServers": {
    "db-mcp-https": {
      "url": "https://localhost:9092/sse",
      "headers": {
        "Authorization": "Bearer REPLACE_WITH_API_KEY"
      }
    }
  }
}

如果您的客户端严格验证证书,请使用受信任的证书(或为您的自签名证书配置信任)。

模板C:STDIO通过Docker

适用于本地基于命令的客户端(包括Claude Desktop/CLI风格的集成)。

{
  "mcpServers": {
    "db-mcp-stdio": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-v", "/path/to/config.json:/app/config.json:ro",
        "-e", "TRANSPORT_MODE=stdio",
        "mekayelanik/db-mcp-server:latest"
      ]
    }
  }
}

克劳德代码示例(HTTPS+SSE)

{
  "mcpServers": {
    "db-mcp-server": {
      "url": "https://localhost:9092/sse",
      "headers": {
        "Authorization": "Bearer REPLACE_WITH_API_KEY"
      }
    }
  }
}

Codex样式示例(HTTPS+SSE)

{
  "mcpServers": {
    "db-mcp-server": {
      "url": "https://localhost:9092/sse",
      "headers": {
        "Authorization": "Bearer REPLACE_WITH_API_KEY"
      }
    }
  }
}

CLI模板

HTTP+SSE:

docker run -d \
  --name db-mcp-http \
  -p 9092:9092 \
  -e TRANSPORT_MODE=sse \
  -e ENABLE_HTTPS=false \
  -v $(pwd)/config.json:/app/config.json:ro \
  mekayelanik/db-mcp-server:latest

HTTPS+SSE+API密钥:

docker run -d \
  --name db-mcp-https \
  -p 9092:9092 \
  -e TRANSPORT_MODE=sse \
  -e ENABLE_HTTPS=true \
  -e TLS_MIN_VERSION=TLSv1.3 \
  -e TLS_CN=localhost \
  -e TLS_SAN=DNS:localhost,IP:127.0.0.1 \
  -e API_KEY='REPLACE_WITH_API_KEY' \
  -v $(pwd)/config.json:/app/config.json:ro \
  mekayelanik/db-mcp-server:latest

工作室:

docker run --rm -i \
  -e TRANSPORT_MODE=stdio \
  -v $(pwd)/config.json:/app/config.json:ro \
  mekayelanik/db-mcp-server:latest

MCPJungle网关

MCPJungle 是一个自托管的MCP网关,它在单个端点后面聚合了多个MCP服务器。

重要提示: MCPJungle的SSE运输 不 支持自定义 headers 在注册配置中。这 headers 字段仅用于 streamable_http 运输。对于具有API密钥身份验证的SSE 必须 使用 bearer_token 相反。

带API密钥的SSE(正确)

注册配置(mcp1.json):

{
    "name": "db-mcp-server",
    "url": "http://<HOST_IP>:9092/sse",
    "transport": "sse",
    "bearer_token": "REPLACE_WITH_API_KEY"
}

注册:

mcpjungle register -c mcp1.json

不带API密钥的SSE

如果容器正在运行 API_KEY 未设置(身份验证已禁用):

{
    "name": "db-mcp-server",
    "url": "http://<HOST_IP>:9092/sse",
    "transport": "sse"
}

常见错误

以下配置将 401失败 因为 headers 在MCPJungle中,SSE传输被默默忽略:

{
    "name": "db-mcp-server",
    "url": "http://<HOST_IP>:9092/sse",
    "transport": "sse",
    "headers": {
        "Authorization": "Bearer REPLACE_WITH_API_KEY"
    }
}

这是MCPJungle SSE客户端实现中的一个限制(createSSEMcpServerConn 在 util.go)--那个 SSEConfig struct仅支持 url 和 bearer_token,而不是任意的标题。使用 bearer_token 相反。

注: 上游 FreePeak/db mcp服务器 目前仅支持 sse 和 stdio 运输方式。流式HTTP(streamable_http)服务器尚不支持,因此仅使用 "transport": "sse" 在MCPJungle注册时。

Claude Code、Codex和类似客户端的快速兼容性说明

  • 如果您的客户端支持基于URL的MCP服务器,请首选HTTPS+SSE模板。
  • 如果您的客户端支持基于命令的MCP服务器,请使用STDIO模板。
  • 如果客户端不支持URL模式下的自定义标头,请将容器放置在注入身份验证的可信反向代理后面,或使用STDIO模式。

许可证

此存储库(构建脚本、Dockerfile、工作流和文档)根据 GNU通用公共许可证v3.0.

打包的应用程序-- FreePeak/db mcp服务器 --是的工作 FreePeak 以及贡献者,并根据 **MIT许可证**申请本身的所有学分都属于他们。


建在上面 FreePeak/db mcp服务器


😎 给我买杯咖啡☕︎

您的支持鼓励我继续创建/支持我的开源项目。 如果你在这个项目中发现了价值,你可以给我买杯咖啡,让我保持灵感。


mcp代理:内存和并发调优

此图像现在使用 mcp代理 (sparfenyuk/mcp代理)代替supergateway作为stdio<->HTTP桥:

  • MCP_PROXY_STATELESS=false (默认):共享一个stdio后端子项 全部 MCP会话,JSON RPC id多路复用。最小的内存,没有每次请求的分叉成本。遗产 STATEFUL 按优先级映射到此(MCP_PROXY_STATELESS获胜)。
  • MCP_PROXY_STATELESS=true:按请求传输实例。
  • HAPROXY_FRONTEND_MAXCONN=64 / HAPROXY_SERVER_MAXCONN=16:HAProxy级别上限。0禁用。
  • 不再支持WebSocket传输(mcp代理上游不实现它)。

根本原因:supergateway 3.4.3无状态模式(默认)每次POST都会生成一个子stdio进程,但从未收获过它(supercorp ai/supergeway#108)。