容器化MCP服务器

MCP服务器容器化解决方案,提供隔离、安全、一致性和资源管理的Docker部署方案,适用于网络诊断工具和模型协议服务。

  • by LeonFaith
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 LeonFaith/mcp-container-demo

使用说明

MCP服务器容器演示

这演示了如何在Docker容器中运行MCP(模型上下文协议)服务器。

容器化MCP服务器的好处

  • 隔离:每台服务器都在自己的环境中运行
  • 安全:有限的资源访问和非root执行
  • 一致性:不同机器上的相同环境
  • 资源管理:CPU和内存限制
  • 轻松更新:拉取新映像以更新服务器

文件

  • mcp-server.py -配备网络诊断工具的简单MCP服务器
  • Dockerfile -容器定义与安全最佳实践
  • docker-compose.yml -多容器编排
  • scripts/ -用于管理的实用程序脚本

快速开始

# Build and start the MCP server
docker-compose up --build

# Run in background
docker-compose up -d

# View logs
docker-compose logs -f mcp-network-tools

# Stop services
docker-compose down

# Remove everything including volumes
docker-compose down -v

手动Docker命令

# Build the image
docker build -t mcp-network-tools .

# Run with security settings
docker run -d \
  --name mcp-server \
  --memory="128m" \
  --cpus="0.5" \
  --read-only \
  --tmpfs /tmp:noexec,nosuid,size=50m \
  --security-opt no-new-privileges:true \
  --user 1000:1000 \
  mcp-network-tools

# Interactive debugging
docker run -it --rm mcp-network-tools /bin/bash

安全功能

  • 非root用户执行
  • 只读文件系统
  • 资源限制(CPU、内存)
  • 没有新特权
  • 隔离网络
  • 健康检查
  • 日志控制

测试MCP服务器

# Test ping tool
echo '{"method": "tools/call", "params": {"name": "ping", "arguments": {"host": "8.8.8.8"}}}' | docker exec -i mcp-network-tools-server python3 /app/mcp-server.py

# Test DNS lookup
echo '{"method": "tools/call", "params": {"name": "dns_lookup", "arguments": {"hostname": "google.com"}}}' | docker exec -i mcp-network-tools-server python3 /app/mcp-server.py

生产注意事项

  1. 图像注册表:推送到私有注册表进行生产
  2. 秘密管理:使用Docker secrets或外部秘密管理
  3. 监控:添加Prometheus指标
  4. 备份:定期容器映像和数据备份
  5. 更新:具有回滚功能的自动映像更新