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生产注意事项
- 图像注册表:推送到私有注册表进行生产
- 秘密管理:使用Docker secrets或外部秘密管理
- 监控:添加Prometheus指标
- 备份:定期容器映像和数据备份
- 更新:具有回滚功能的自动映像更新
