找回密码
 立即注册
首页 业界区 业界 容器化 MCP Server!

容器化 MCP Server!

泻缥 前天 22:22
大家好!我是韩老师。
本文是 MCP 系列文章的第五篇,之前的四篇是:

  • Code Runner MCP Server,来了!
  • 从零开始开发一个 MCP Server!
  • 一键安装 MCP Server!
  • 再见,SSE!你好,Streamable HTTP!
写在最前:容器化 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. 1 ## Stage 1: Builder
  2. 2 FROM node:lts-alpine AS builder
  3. 3
  4. 4 # Set working directory
  5. 5 WORKDIR /app
  6. 6
  7. 7 # Copy all files into the container
  8. 8 COPY . .
  9. 9
  10. 10 # Install dependencies without running scripts
  11. 11 RUN npm install --ignore-scripts
  12. 12
  13. 13 # Build the TypeScript source code
  14. 14 RUN npm run build
  15. 15
  16. 16 ## Stage 2: Runtime
  17. 17 FROM node:lts-alpine
  18. 18
  19. 19 WORKDIR /app
  20. 20
  21. 21 # Install Python and other programming languages
  22. 22 RUN apk add --no-cache \
  23. 23     python3 \
  24. 24     go \
  25. 25     php \
  26. 26     ruby
  27. 27
  28. 28 # Copy only the necessary files from the builder stage
  29. 29 COPY --from=builder /app/dist ./dist
  30. 30 COPY package*.json ./
  31. 31
  32. 32 # Install only production dependencies
  33. 33 RUN npm install --production --ignore-scripts
  34. 34
  35. 35 # Use a non-root user for security (optional)
  36. 36 RUN adduser -D mcpuser
  37. 37 USER mcpuser
  38. 38
  39. 39 # Set the entrypoint command
  40. 40 CMD ["node", "./dist/index.js"]
复制代码
 
这,就是一个标准的 multi-stage builds 的 Dockerfile。
由于 Code Runner MCP Server 需要支持多种编程语言的运行,我在 Dockerfile 里面,预先安装了几个常用的编程语言的解释器/编译器。
这样,用户在使用的时候,唯一需要安装的,就是 Docker 而已:
  1. 1 {
  2. 2   "mcp": {
  3. 3     "inputs": [],
  4. 4     "servers": {
  5. 5       "mcp-server-code-runner": {
  6. 6         "command": "docker",
  7. 7         "args": [
  8. 8           "run",
  9. 9           "--rm",
  10. 10           "-i",
  11. 11           "formulahendry/mcp-server-code-runner"
  12. 12         ]
  13. 13       }
  14. 14     }
  15. 15   }
  16. 16 }
复制代码
 
完整的代码,可以参考 Code Runner MCP Server 的 repo,完全开源:
https://github.com/formulahendry/mcp-server-code-runner
 
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册