通过MCP配置提高Claude Code的生产力

先说结论:你可以直接告诉Claude Code你的需求,它可以自己在工程目录下配置好。最后记得让它更新工程的CLAUDE.md文件

🎯 推荐方案:本地 MCP 服务器 + Docker 命令转发

方案一:通过 Docker CLI 包装(最简单)

在宿主机上创建一个 MCP 服务器,让它执行 docker exec 命令来操作容器内的编译环境:

bash
# 1. 添加一个自定义 MCP 服务器
claude mcp add docker-build-server -- 
  python3 -m mcp_docker_bridge

# 2. MCP 服务器代码示例 (mcp_docker_bridge.py)
python
# 简单的 MCP 服务器示例
import subprocess
import json

async def execute_in_docker(container_name, command):
    """在 Docker 容器内执行命令"""
    cmd = ["docker", "exec", "-i", container_name, "sh", "-c", command]
    result = subprocess.run(cmd, capture_output=True, text=True)
    return result.stdout, result.stderr

# 注册工具供 Claude Code 调用
tools = [
    {
        "name": "docker_build",
        "description": "在 Docker 容器内执行编译命令",
        "parameters": {
            "command": {"type": "string", "description": "要执行的编译命令,如 'make' 或 'gcc main.c'"}
        }
    }
]

方案二:使用现成的 MCP 服务器(推荐)

有几个现成的 MCP 服务器可以直接解决你的需求:

1. MCP Docker Controller(最匹配)

bash
# 安装并配置
claude mcp add docker-controller -- 
  npx -y @modelcontextprotocol/server-docker

这个服务器可以直接管理 Docker 容器、执行命令、查看日志等。

2. MCP Shell Server(灵活但需谨慎)

bash
# 添加 shell 服务器
claude mcp add shell-server -- 
  npx -y @modelcontextprotocol/server-shell

# 然后在 Claude Code 中这样使用:
# "在 my-container 容器内执行 cd /project && make"

方案三:远程 MCP + Docker 内部署(最灵活)

如果你想更彻底地解决,可以:

  1. 在 Docker 容器内运行 MCP 服务器(作为 HTTP 服务)

  2. Claude Code 通过 HTTP 连接(你需要容器对外暴露端口)

bash
# 在 Dockerfile 或容器内
FROM your-build-env
RUN npm install -g @modelcontextprotocol/sdk
COPY mcp-server-http.py /app/
CMD ["python3", "/app/mcp-server-http.py", "--port", "3000"]

# 启动容器时暴露端口
docker run -p 3000:3000 your-image

# 在宿主机 Claude Code 中添加远程 MCP
claude mcp add --transport http docker-build http://localhost:3000/mcp

💡 实际使用示例

配置好后,你可以在 Claude Code 中这样自然对话:

你问: "帮我在 Docker 容器 my-container 中编译项目,项目在 /workspace,编译命令是 make"

Claude 会:

  1. 自动调用 MCP 服务器的 docker_exec 工具

  2. 执行 docker exec my-container make -C /workspace

  3. 返回编译日志和错误信息

  4. 如果出错,还能帮你分析并尝试修复

⚠️ 需要注意的问题

  1. 路径映射:确保宿主机和容器的路径对应关系清晰,MCP 返回的文件路径需要能被 Claude Code 理解

  2. 权限问题:MCP 服务器需要有权执行 docker 命令(可能需要将用户加入 docker 组)

  3. 交互式编译:如果编译过程需要用户输入,可能需要特殊处理

  4. 性能考虑:频繁的 docker exec 调用会有一定开销

🎁 额外建议

如果想要更专业的体验,可以创建一个专门针对你项目的 MCP 服务器:

python
# 自定义工具示例
async def compile_project(build_type="debug"):
    # 1. 同步代码到容器
    # 2. 执行 cmake/make
    # 3. 收集编译产物
    # 4. 返回结果和错误日志
    pass

 

posted @ 2026-06-04 16:25  雪地飞行棋  阅读(46)  评论(0)    收藏  举报