MCP网关工具

MCP网关工具是一个用于桥接HTTP/SSE和STDIO的网关服务,支持MCP工具的统一端点、工具编排和安全发布到互联网。适用于开发环境和沙箱环境。

  • by JJDSNT
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 JJDSNT/mcp-gateway

使用说明

MCP网关实验室

目标

用于实验室的 MCP 网关,重点是:

  • 桥接HTTP/SSE↔ 标准输入输出
  • 统一端点MCP (/mcp/<tool>)
  • MCP 工具编排
  • auth + 安全发布到互联网 (Cloudflare隧道+接入)
  • 工作区沙箱
  • Windows+WSL2+Docker
  • Core 在 Go 中实现

这个项目是什么

  • 交通网关
  • MCP 工具路由器
  • 进程管理器(启动器+守护进程)
  • MCP 运行时抽象层

建筑

Client
  |
HTTPS + Auth
  |
Cloudflare Tunnel
  |
Caddy (proxy)
  |
mcp-router (Go)
  |
HTTP/SSE <-> STDIO Bridge
  |
Tool Runtime
  |         \
Native      Container
(process)   (docker run)
  |
Workspace

特性

  • 桥接HTTP/SSE⇄ STDIO(JSONL)
  • 通用罗塔门托 /mcp/<tool>
  • 启动器模式(生成por请求)
  • 守护程序模式(持续进程 + 闲置超时)
  • 本机工具运行时
  • 容器工具运行时
  • 工作区沙盒
  • 基本可见性( stderr + MCP 标头)
  • 通过 YAML 进行外部配置

堆栈

  • Go(mcp路由器)
  • Caddy(反向代理)
  • Cloudflare隧道+接入
  • Docker Compose
  • WSL2(Windows 10)

初始安装-TLS证书

此项目使用 TLS(包括在本地环境中)运行,因此首次运行前需要生成本地证书。

第一次(每台机器一次):

make rsa-gen

Windows - 安装根证书:

安装根证书需要管理员权限, 因为证书必须安装在仓库中 受信任的根证书颁发机构(本地计算机).

打开或 PowerShell作为管理员 e执行:

certutil -addstore -f "Root" "<caminho>\certs\root.crt"

替换 <caminho> 到存储库的绝对或相对路径,例如: C:\Users\seu-usuario\Projects\mcp-gateway\certs\root.crt

验证安装 :

在 PowerShell 中运行以确认证书已正确安装:

certutil -store Root | findstr /i "MCP Caddy"

如果命令返回 MCP Caddy Local Authority RSA Root安装成功 。否则,检查文件路径并重复命令 certutil -addstore.

注: 安装证书后,关闭并重新打开浏览器以应用信任。

设置完成后,启动项目:

make up

工具运行时

该网关支持两种运行模式:

本机运行时

  • 通过 STDIO 作为本地进程运行的工具
  • 以卷装载( Volume mounted)/tools)
  • 非常适合开发和原型设计
  • 不需要重建网关

容器运行时

  • 通过运行的工具 docker run -i
  • 强大的工具隔离
  • 允许直接使用 MCP/Docker Hub 映像
  • 非常适合沙盒和更逼真的环境

工作区沙盒

  • 唯一根 : /workspaces
  • 每个工具在子文件夹中工作
  • 网关有效路径(类似chroot)
  • 避免沙箱外访问

安全:Sandbox Package

O包装 router/internal/sandbox/ 实施安全验证层。它包含:

sandbox.go

实现核心验证功能:

  • ValidateToolName(name string) error

    • 在安全字符允许列表中校验工具名称
    • 拒绝 : /, \、空间、, .., %2f, %5c, %25非字母数字字符(除 - e _)
    • 例如: git, fs, my-tool ✓ | ../../bin, tool;whoami ✗
    • 用于 main.go 验证段 <tool> da rota /mcp/<tool>
  • ValidatePath(workspaceRoot, requestedPath string) (string, error)

    • 验证和解决工作区内的路径
    • 检测并阻止多个编码级别的横向路径
    • 安全处理 symlinks :
      • 拒绝绝对符号链接(例如: → /etc/passwd)
      • 验证符号链接相关性(例如: ../../outside 被封锁)
      • 检测恶意symlink的cades(例如: link1 → link2 → ../outside)
    • 如果有效则返回已解决的绝对路径,否则返回错误
    • 在执行任何文件操作之前使用 MCP 处理器
  • checkPathTraversal(path string) error

    • 检测危险模式的助手: .., //, /., /./等等。

安全

有关安全验证、沙箱软件包和测试的所有详细信息都记录在 路由器/安全_TESTS.md.

涵盖的主题:

  • 工具名称校验
  • 路径验证 (path traversal, symlinks)
  • 命令注入保护
  • DoS防护
  • 测试去流式SSE

桥接HTTP/SSE↔ 标准输入输出

饲料:

HTTP/SSE Client
      |
   mcp-router
      |
   spawn tool
      |
 STDIN / STDOUT
  • 输入: JSON → STDIN
  • 输出: JSONL → SSE
  • 流式扫描电镜缓冲区
  • 每个进程的队列/mutex

配置 (config.yaml)

workspace_root: /workspaces
tools_root: /tools

tools:
  fs:
    runtime: container
    mode: launcher
    image: mcp/filesystem
    args: ["/workspaces"]

  git:
    runtime: native
    mode: launcher
    cmd: "npx"
    args: ["-y", "@modelcontextprotocol/server-git", "/workspaces"]

  my-script:
    runtime: native
    mode: daemon
    cmd: "/tools/meu-script.sh"

反向代理(Caddyfile)

mcp.seudominio.com {

  handle_path /mcp/* {
    reverse_proxy mcp-router:8080 {
      transport http {
        versions 1.1
      }
      flush_interval -1
    }
  }
}

快速开始

启动之前,请按照本节所述执行 TLS 证书设置 初始安装-TLS证书.

设置完成后,启动项目:

make up

安全说明——Docker Socket(容器运行时)

⚠️ 重要通知

使用时 容器运行时,o mcp-router 需要使用 Docker 守护进程(例如: /var/run/docker.sock通过运行工具 docker run.

这意味着:

  • Gateway 将 主机上的 root 权限
  • 恶意工具可以创建任意容器或挂载敏感卷

实验室(Lab)

  • 仅在受控环境中使用 Container Runtime
  • 首选 Native Runtime 进行快速开发
  • 不要在没有以下情况下公开显示网关 :
    • Cloudflare Access 活动
    • 适当的防火墙
    • 身份访问控制

未来的替代方案

  • Docker无根/Podman无根
  • 转轮侧车isolado
  • 敬业的工人
  • MicroVM(鞭炮)

相关项目

Docker MCP网关
https://github.com/docker/mcp-gateway

IBM ContextForge
https://ibm.github.io/mcp-context-forge/

aarora79 MCP网关
https://github.com/aarora79/mcp-gateway

LobeHub MCP网关
https://lobehub.com/mcp/common-creation-mcp-gateway

WunderGraph MCP网关(实验)
https://www.infracloud.io/blogs/mcp-gateway/


技术路线图(Lab)

  • 热重新加载config.yaml
  • 工作区范围界定工具
  • 守护进程池
  • 限速工具
  • 指标端点
  • 健康检查