统一MCP协议栈

一个基于Docker容器的安全、统一的模型上下文协议(MCP)栈,通过Nginx作为高性能代理,提供文档、代码上下文和网络搜索能力。

  • by axelquack
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 axelquack/mcp-stack

使用说明

统一MCP堆栈(OrbStack优化)

该项目提供了一个完全容器化、安全和统一的模型上下文协议(MCP)栈,使用 Nginx作为高性能代理。它经过专门优化,可以在其上运行 macOS 苹果芯片 使用 OrbStack,避免了Docker套接字依赖的常见问题。

建筑

该堆栈由在隔离的Docker容器中运行的三个主要服务组成:

  1. 统一Nginx代理:充当中央网关。它根据URL路径路由流量。
  2. Context7 MCP服务器:提供文档和代码上下文。
  3. SearXNG MCP服务器:提供网络搜索功能。

主要特点

  • 零端口暴露:所有端口号都被抽象到 .env 文件,以获得最大的安全性和灵活性。
  • 动态配置:用途 nginx.conf.template 在启动时自动注入环境变量。
  • 零Docker套接字依赖:代理不需要 /var/run/docker.sock,大大提高了安全性。
  • 统一访问:两个MCP服务器都聚合在一个入口点后面。
  • 强化安全:
    • 容器运行 read_only: true 文件系统。
    • 功能被丢弃(cap_drop: ALL).
    • 不允许特权升级(no-new-privileges: true).
    • 内部服务器不暴露于主机/互联网;只有代理是可访问的。

入门指南

先决条件

  • OrbStack (或Docker桌面)
  • SearXNG的Olares实例(配置于 .env)

安装

  1. 启动堆栈:

    docker-compose up -d
    
  2. 验证服务:

    docker-compose ps
    

连接到客户

泽德

Zed已配置为使用以下终结点:

  • 背景7: http://localhost:${GATEWAY_PORT}/context7/mcp
  • SearXNG: http://localhost:${GATEWAY_PORT}/searxng/mcp

您可以在Zed中验证这些设置 settings.json 文件(cmd+,).

配置文件

  • docker-compose.yml:主编排文件。对所有网络设置使用环境变量。
  • nginx.conf.template:动态配置代理的路由模板。
  • .env: 唯一的地方 其中存储了机密、URL和端口号。

故障排除

  • 港口繁忙:如果 ${GATEWAY_PORT} 已在使用中,只需在 .env 文件并重新启动。
  • 配置同步:如果在中更改端口 .env,跑 docker-compose up -d 以重新生成代理配置。