MCP服务器运行器

FastMCP Runner是一个通用的OCI基础运行器,用于拉取和运行MCP服务器容器镜像,无需Docker守护进程,适用于Hugging Face Spaces等环境。

  • by drengskapur
  • Dockerfile
  • 本地部署
  • 更新于
在 GitHub 查看 drengskapur/fastmcp-runner

使用说明

FastMCP运行器

用于MCP(模型上下文协议)服务器的通用基于OCI的运行器。从注册表中提取容器映像并运行它们,而不需要Docker守护进程。

概述

FastMCP Runner是一个引导容器,在运行时拉取并执行MCP服务器映像。它适用于任何打包为容器映像的MCP服务器,而不仅仅是FastMCP应用程序。这对于像Hugging Face Spaces这样的环境很有用,在这些环境中,你不能直接运行任意的Docker镜像。

文档

完整文档可在 fastmcp-runner.readthedocs.io

快速开始

docker run \
  -e IMAGE=ghcr.io/your-org/your-mcp-server:latest \
  -e PORT=8000 \
  -e REGISTRY_USER=username \
  -e REGISTRY_PASSWORD=token \
  -p 8000:8000 \
  ghcr.io/drengskapur/fastmcp-runner:latest-stable

对于公共图像,省略 REGISTRY_USER 和 REGISTRY_PASSWORD.

图像标记

标签 描述 用例
latest 基于每次主推 开发、分期
latest-stable 通过发布工作流程进行推广 生产
vX.Y.Z 特定版本 固定部署

环境变量

变量 必填 描述
IMAGE 是 要拉取并运行的完整OCI映像引用
PORT 是 MCP服务器的端口(1-65535)
REGISTRY_USER 否 专用注册表身份验证的用户名
REGISTRY_PASSWORD 否 专用注册表身份验证的密码/令牌
MCP_TRANSPORT 否 运输类型: streamable-http (默认)或 sse
MCP_HOST 否 绑定地址(默认值: 0.0.0.0)
MCP_PATH 无 MCP端点路径(默认值: /mcp)
HEALTHCHECK_PATH 否 健康检查路径(默认: /health)
LOG_LEVEL 否 日志记录级别: debug, info, warn, error
LOG_FORMAT 否 日志格式: text 或 json
MCP_ENV_* 否 传递变量(在传递给应用程序之前去掉前缀)

运作原理

  1. 验证所需的环境变量
  2. 向注册表进行身份验证(如果提供了凭据),然后清除凭据
  3. 获取图像配置以确定入口点和环境
  4. 提取应用程序目录(/app, /data, /home, /opt,网站包)
  5. 删除非root用户(UID 1000)的权限
  6. 执行映像的配置入口点/命令

安全

  • 身份验证后立即清除凭据
  • 应用程序以非root用户身份运行(UID 1000)
  • 从提取中排除的系统目录(仅复制应用程序路径)
  • 基础图像: 长城狼基地
  • 所有图片均已Sigstore联名签名

验证图像签名

cosign verify ghcr.io/drengskapur/fastmcp-runner:latest-stable \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  --certificate-identity-regexp 'https://github.com/drengskapur/fastmcp-runner/.*'

需求

目标图像必须具有:

  • 启动MCP服务器的有效入口点或命令
  • 可提取路径中的应用程序代码(/app, /opt, /home,或网站包)
  • 服务器必须绑定到 0.0.0.0 并从读取端口 PORT 环境变量

许可证

Apache 2.0