教你如何实现容器化 MCP Server

 更新时间:2025年05月01日 11:26:39   作者:formulahendry  
这篇文章主要介绍了如何将MCPServer容器化,以便于开发和运行,但并不适用于所有的开发环境

大家好!我是韩老师。

写在最前:容器化 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 :

## Stage 1: Builder
FROM node:lts-alpine AS builder

# Set working directory
WORKDIR /app

# Copy all files into the container
COPY . .

# Install dependencies without running scripts
RUN npm install --ignore-scripts

# Build the TypeScript source code
RUN npm run build

## Stage 2: Runtime
FROM node:lts-alpine

WORKDIR /app

# Install Python and other programming languages
RUN apk add --no-cache \
    python3 \
    go \
    php \
    ruby

# Copy only the necessary files from the builder stage
COPY --from=builder /app/dist ./dist
COPY package*.json ./

# Install only production dependencies
RUN npm install --production --ignore-scripts

# Use a non-root user for security (optional)
RUN adduser -D mcpuser
USER mcpuser

# Set the entrypoint command
CMD ["node", "./dist/index.js"]

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

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

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

{
  "mcp": {
    "inputs": [],
    "servers": {
      "mcp-server-code-runner": {
        "command": "docker",
        "args": [
          "run",
          "--rm",
          "-i",
          "formulahendry/mcp-server-code-runner"
        ]
      }
    }
  }
}

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

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

到此这篇关于教你如何实现容器化 MCP Server的文章就介绍到这了,更多相关容器化 MCP Server内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nodejs搭建本地http服务器教程

    nodejs搭建本地http服务器教程

    本篇文章主要介绍了nodejs搭建本地http服务器教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • 深入理解Node.js的HTTP模块

    深入理解Node.js的HTTP模块

    最近在工作中接触到了Node.js标准库提供了http模块,所以这篇文章想总结下Node.js的HTTP模块,方便大家和自己以后使用的时候参考借鉴。有需要的朋友们下面来一起看看吧。
    2016-10-10
  • nodejs实现OAuth2.0授权服务认证

    nodejs实现OAuth2.0授权服务认证

    本篇文章主要介绍了nodejs实现OAuth2.0授权服务认证,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • nodejs通过phantomjs实现下载网页

    nodejs通过phantomjs实现下载网页

    这篇文章主要介绍了nodejs通过phantomjs实现下载网页的方法,有需要的小伙伴可以参考下。
    2015-05-05
  • Node接收电子邮件的实例代码

    Node接收电子邮件的实例代码

    本篇文章主要介绍了Node接收电子邮件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • node.js中的fs.futimes方法使用说明

    node.js中的fs.futimes方法使用说明

    这篇文章主要介绍了node.js中的fs.futimes方法使用说明,本文介绍了fs.futimes方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node.js中的CommonJS模块化规范详解

    Node.js中的CommonJS模块化规范详解

    这篇文章主要介绍了Node.js中的CommonJS模块化规范,本文主要介绍了 CommonJS 规范在 Node 中的简单应用,主要就是导入和导出模块,需要的朋友可以参考下
    2023-02-02
  • node.js中的querystring.stringify方法使用说明

    node.js中的querystring.stringify方法使用说明

    这篇文章主要介绍了node.js中的querystring.stringify方法使用说明,本文介绍了querystring.stringify的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node.js API详解之 net模块实例分析

    Node.js API详解之 net模块实例分析

    这篇文章主要介绍了Node.js API详解之 net模块,结合实例形式分析了Node.js API中net模块基本函数、用法与使用技巧,需要的朋友可以参考下
    2020-05-05
  • node.js中的fs.link方法使用说明

    node.js中的fs.link方法使用说明

    这篇文章主要介绍了node.js中的fs.link方法使用说明,本文介绍了fs.link的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12

最新评论