模块化Docker服务器

该项目在独立的Docker容器中运行多个模型上下文协议(MCP)服务器,以提高模块化和可维护性。

  • by gaurav18115
  • Shell
  • 本地部署
  • 更新于
在 GitHub 查看 gaurav18115/docker-mcp-servers

使用说明

MCP服务器-模块化Docker设置

该项目在单独的Docker容器中运行多个模型上下文协议(MCP)服务器,以实现更好的模块化和可维护性。

建筑

每个MCP服务器都在自己的具有HTTP/SSE端点的容器中运行:

  • 文件系统:文件系统操作(端口8801)✅
  • 顺序思维:顺序思维能力(端口8803)✅
  • 版本控制系统:Git操作(端口8804)✅
  • 时间:与时间相关的操作(端口8805)✅
  • 获取:HTTP获取操作(端口8806)✅
  • 记忆:基于内存的操作(端口8802)⚠️ (未找到可执行文件)
  • 一切:具有所有功能的组合服务器(端口8807)⚠️ (未找到可执行文件)

目录结构

mcp-servers/
├── docker-compose.yml          # Orchestrates all services
├── data/                       # Shared data directory for filesystem server
├── test-mcp-servers.py         # Test script for server verification
├── .modelcontextrc.json        # MCP configuration for Cursor IDE
├── filesystem/
│   └── Dockerfile             # Filesystem server container (mcp-proxy)
├── sequential-thinking/
│   └── Dockerfile             # Sequential thinking server container (mcp-proxy)
├── git/
│   ├── Dockerfile             # Git server container (Python + Flask)
│   └── http_wrapper.py        # HTTP wrapper for stdio server
├── time/
│   ├── Dockerfile             # Time server container (Python + Flask)
│   └── http_wrapper.py        # HTTP wrapper for stdio server
├── fetch/
│   ├── Dockerfile             # Fetch server container (Python + Flask)
│   └── http_wrapper.py        # HTTP wrapper for stdio server
├── memory/
│   └── Dockerfile             # Memory server container (supergateway)
└── everything/
    └── Dockerfile             # Everything server container (supergateway)

安装方法

  • npm包+mcp代理: filesystem, sequential-thinking (通过mcp代理的HTTP/SSE)
  • Python包+Flask: git, time, fetch (通过自定义包装器的HTTP/SSE)
  • GitHub源码+超级网关: memory, everything (当前失败-找不到可执行文件)

用法

启动所有服务器

docker-compose up --build -d

启动特定服务器

docker-compose up --build -d filesystem

查看日志

docker-compose logs -f

停止所有服务器

docker-compose down

测试服务器连接

python3 test-mcp-servers.py

游标IDE集成

该项目旨在与Cursor IDE的MCP(模型上下文协议)集成。

Cursor IDE的设置

  1. 启动MCP服务器:

    docker-compose up --build -d
    
  2. 测试服务器连接:

    python3 test-mcp-servers.py
    
  3. 配置游标IDE:

    选项A:将配置复制到主目录

    # macOS/Linux
    cp .modelcontextrc.json ~/.modelcontextrc.json
    
    # Windows
    copy .modelcontextrc.json %USERPROFILE%\.modelcontextrc.json
    

    选项B:在游标设置中配置

    • 打开光标IDE
    • 转到设置(Cmd/Ctrl+,)
    • 搜索“MCP”或“模型上下文协议”
    • 设置项目的配置路径 .modelcontextrc.json
  4. 重新启动游标IDE

游标中可用的MCP工具

配置后,Cursor将可以访问:

  • 文件系统操作 (读/写文件)
  • Git操作 (提交、分支等)
  • 时间函数 (当前时间、时区信息)
  • HTTP获取功能 (网络请求)
  • 顺序思维 (逐步推理)

端口和端点

  • 8801:文件系统服务器- http://localhost:8801/sse
  • 8802:内存服务器- http://localhost:8802/sse (⚠️ 不工作)
  • 8803:顺序思维服务器- http://localhost:8803/sse
  • 8804:Git服务器- http://localhost:8804/sse
  • 8805:时间服务器- http://localhost:8805/sse
  • 8806:获取服务器- http://localhost:8806/sse
  • 8807:一切服务器- http://localhost:8807/sse (⚠️ 不工作)

健康检查端点

所有服务器都提供健康检查端点:

  • Python服务器: http://localhost:PORT/health
  • Node.js服务器:没有健康端点(改用SSE端点)

这种方法的好处

  1. 模块化:每个服务器都是隔离的,可以独立更新
  2. 可扩展性:易于扩展的个人服务
  3. 调试:独立的日志和更容易的故障排除
  4. 资源管理:更好地控制每个服务的资源分配
  5. Docker最佳实践:遵循集装箱化最佳实践
  6. HTTP/SSE支持:所有服务器都公开HTTP/SSE端点,便于集成
  7. 混合技术:支持基于Node.js和Python的MCP服务器
  8. 游标IDE集成:已准备好与Cursor的MCP功能一起使用

当前状态

✅ 工作服务器:

  • 文件系统(Node.js+mcp代理)
  • 顺序思维(Node.js+mcp代理)
  • git(Python+Flask包装器)
  • 时间(Python+Flask包装器)
  • fetch(Python+Flask包装器)

⚠️ 问题:

  • 内存:在超级网关容器中找不到可执行文件
  • everything:在supergateway容器中找不到可执行文件

故障排除

服务器连接问题

  1. 检查服务器是否正在运行:

    docker-compose ps
    
  2. 测试服务器连接:

    python3 test-mcp-servers.py
    
  3. 检查服务器日志:

    docker-compose logs
    
  4. 测试单个服务器:

    curl http://localhost:8801/sse  # filesystem
    curl http://localhost:8804/health  # git
    

游标IDE问题

  1. 验证MCP配置:

    • 检查光标的MCP配置设置
    • 确保配置文件路径正确
    • 配置更改后重新启动Cursor
  2. 检查服务器状态:

    • 启动Cursor之前,确保所有服务器都在运行
    • 使用测试脚本验证连接

后续步骤

要修复其余服务器,请执行以下操作:

  1. 调查为什么基于GitHub的服务器没有正确创建可执行文件
  2. 考虑对所有Node.js服务器使用mcp代理,而不是supergateway
  3. 为Node.js服务器添加适当的健康端点