容器化 MCP Server!

大家好!我是韩老师。

本文是 MCP 系列文章的第五篇,之前的四篇是:

写在最前:容器化 MCP Server,有用。但是,你不一定需要。

WHY

如果你在开发一个 local MCP Server,并且有以下的任何一种情况:

  • 需要安装多个 toolchain,才能运行 local MCP Server
  • 用于开发 local MCP Server 的语言,没有像 npx 或者 uv 那样一键运行程序的工具

那么,容器化 MCP Server,对你的用户是有用的。

反之,如果你已经用主流的 Node.js 或者 Python 来开发 local MCP Server,并且没有其他额外的依赖。

那么,你也许并不需要容器化。

WHAT

local MCP Server 其实就是个 Node.js/Python/PHP/Go/Java/... 开发的 Console App 而已,通过 stdin/stdout 与 MCP Client 交互,没有什么特别的地方。

所以,一般来说,你只需要一个 Dockerfile 即可。

HOW

既然是容器化一个普通的 Console App,那么,一切就变得很简单了。

以下是 Code Runner MCP Server 的 Dockerfile :

复制代码
 1 ## Stage 1: Builder
 2 FROM node:lts-alpine AS builder
 3 
 4 # Set working directory
 5 WORKDIR /app
 6 
 7 # Copy all files into the container
 8 COPY . .
 9 
10 # Install dependencies without running scripts
11 RUN npm install --ignore-scripts
12 
13 # Build the TypeScript source code
14 RUN npm run build
15 
16 ## Stage 2: Runtime
17 FROM node:lts-alpine
18 
19 WORKDIR /app
20 
21 # Install Python and other programming languages
22 RUN apk add --no-cache \
23     python3 \
24     go \
25     php \
26     ruby
27 
28 # Copy only the necessary files from the builder stage
29 COPY --from=builder /app/dist ./dist
30 COPY package*.json ./
31 
32 # Install only production dependencies
33 RUN npm install --production --ignore-scripts
34 
35 # Use a non-root user for security (optional)
36 RUN adduser -D mcpuser
37 USER mcpuser
38 
39 # Set the entrypoint command
40 CMD ["node", "./dist/index.js"]

这,就是一个标准的 multi-stage builds 的 Dockerfile。

由于 Code Runner MCP Server 需要支持多种编程语言的运行,我在 Dockerfile 里面,预先安装了几个常用的编程语言的解释器/编译器。

这样,用户在使用的时候,唯一需要安装的,就是 Docker 而已:

复制代码
 1 {
 2   "mcp": {
 3     "inputs": [],
 4     "servers": {
 5       "mcp-server-code-runner": {
 6         "command": "docker",
 7         "args": [
 8           "run",
 9           "--rm",
10           "-i",
11           "formulahendry/mcp-server-code-runner"
12         ]
13       }
14     }
15   }
16 }

完整的代码,可以参考 Code Runner MCP Server 的 repo,完全开源:

https://github.com/formulahendry/mcp-server-code-runner

相关推荐
xn71335 小时前
别再把 MCP Roots 当安全沙箱:一个符号链接就能逃逸目录
人工智能·后端·mcp
xyj29175964117 小时前
在Trae中配置数据库MCP
数据库·ai·mcp
孟无岐10 小时前
LayaAir-MCP 插件上手指南:让 AI 直接操控你的 LayaAir IDE
ai编程·游戏开发·mcp·layaair·workbuddy·layaair-mcp
YIAN1 天前
从手写 Agent 工具到 MCP 协议:一文搞懂大模型跨进程跨语言工具调用
后端·agent·mcp
SLD_Allen1 天前
20个 Agent 工程概念(系统能力篇)
agent·hooks·沙箱·mcp·fde
冬奇Lab2 天前
MCP 系列(05):Resources 和 Prompts 进阶——动态数据、参数化 URI 与多轮模板
人工智能·llm·mcp
先吃饱再说2 天前
组合多个远程 MCP Server:让 Agent 同时调用高德地图、Chrome DevTools 和文件系统
langchain·llm·mcp
先吃饱再说2 天前
跨进程调用工具:MCP + LangChain 让 Agent 不再“锁死”在单一语言
langchain·llm·mcp
暗不需求2 天前
目前最火AI协议-> MCP 协议实战:从原理到落地,让 AI 拥有"超能力"
面试·ai编程·mcp
许我半盏清茶2 天前
基于 Ollama + Vectra + MCP 从零搭建本地 RAG 知识库
javascript·人工智能·mcp