使用说明(Markdown格式)

  • 项目简介

    • 该仓库实现了一个 MCP 服务器,聚合 nerdctl、podman、docker 三种容器运行时的工具接口,通过 MCP 标准向 LLM 客户端提供统一的资源管理、工具调用与提示模板渲染能力,支持本地 STDIO 模式和云端 HTTP 模式两种传输方式。
  • 主要功能点

    • 资源与工具管理:统一暴露各运行时的能力,动态检测并连接 runtimes,提供元工具如 container_list、container_detect、container_version 等。
    • 工具注册与执行:将各运行时的工具(如运行、停止、查看日志、管理镜像、网络、卷等)注册到 MCP 服务器,按参数定义自动生成输入模式并执行对应的外部命令。
    • 提示模板与输出:支持将运行结果以 JSON、文本等格式返回给客户端,便于在 LLM 对话中渲染结果。
    • 双模传输:提供 STDIO(本地 MCP 客户端)和 Streamable HTTP(远端/云端部署)两种传输模式,便于不同部署场景。
    • 安全与容错:对外部命令做白名单限制、实现简单的超时、重试、速率限制与日志输出等机制,提升鲁棒性。
  • 安装步骤

    • 先确保系统具备 Deno 运行环境。
    • 将代码克隆到本地或云端环境。
    • 运行本地 MCP 客户端:deno task start
    • 运行 HTTP/云端 MCP 部署:deno task serve
    • 根据本地环境选择相应运行时(nerdctl、podman、docker)并确保可执行命令在路径中可用。
  • 服务器配置(JSON 配置示例注释)

    • 服务器配置用于 MCP 客户端连接该 MCP 服务器时的启动信息(JSON,不需要客户端端的实现细节)。
    • JSON 配置包含 serverName、command、args、transport 等字段,用于描述如何启动和连接到 MCP 服务器。
    • 下面提供一个准确的配置示例说明字段含义,实际使用时请按需调整。

    { "serverName": "polyglot-container-mcp", "description": "多运行时容器管理 MCP 服务器", "command": "deno", "args": ["task", "start"], "transport": "stdio", "env": { "CONTAINER_RUNTIME": "" // 可选,优先使用的运行时,留空则自动选择 }, "notes": "本配置用于本地 STDIO 模式运行。若要切换到 HTTP 模式,请将 transport 设置为 http,并按需要配置端口等参数。" }

    说明:

    • serverName: MCP 服务器的名称,应与实现中的名称保持一致,便于客户端查询与日志追踪。
    • command/args: 启动服务器的命令及参数。对于本仓库,标准本地启动为 deno task start。
    • transport: 客户端需要根据所选传输模式与服务器交互。stdio 为本地直连,http 则通过 Streamable HTTP 进行远程通信。
    • env: 运行时环境变量,可用于指定首选容器运行时(如 nerdctl、podman、docker)等。
    • notes: 额外说明,帮助 MCP 客户端理解部署场景。
  • 基本使用方法

    • 本地开发与调试:使用 STDIO 模式启动服务器,客户端通过标准输入输出与 MCP 服务交互。
    • 远端部署:将服务器以 HTTP 模式部署,客户端通过流式 HTTP 与 MCP 服务通信,支持会话管理、SSE 流式返回等特性。
    • 客户端通常需要配置一个 MCP 服务器信息(serverName、command、args 等)来启动与连接,具体细节请参考上方配置示例。
  • 备注

    • 本实现具备完整的 MCP 服务器能力,含元工具、适配器工具注册、HTTP 与 STDIO 双模式传输,以及基本的容错与日志功能,符合 MCP 服务器的核心功能要求。

信息

分类

网页与API