OpenAI网关服务

基于FastMCP运行时封装的OpenAI服务网关,提供聊天补全、图像生成和音频合成功能,支持HTTP/SSE传输和Azure Blob存储。

  • by fargo-family
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 fargo-family/openai-mcp

使用说明

OpenAI FastMCP网关

此存储库封装了官方 openai Python SDK和 fastmcp 运行时间(根据 external/)在经过身份验证的HTTP/SSE传输上公开三个MCP工具——聊天完成、图像生成和音频合成。

项目布局

  • external/:反映上游 openai/openai-python 和 jlowin/fastmcp 来源。
  • src/openai_fastmcp/:自定义FastMCP服务器、配置加载器和OpenAI服务包装器。
  • Dockerfile:安装供应商依赖项并运行的生产映像 python -m openai_fastmcp.
  • azure-pipelines.yml:CI定义,通过Azure DevOps将容器构建/推送到Docker Hub。

设置

  1. 复制示例环境文件并编辑机密:
    cp .env.example .env
    
  2. 安装依赖项(从本地安装 external/ 树):
    pip install -r src/requirements.txt
    
  3. 运行服务器:
    python -m openai_fastmcp
    

FastMCP服务器监听 0.0.0.0:8000 默认情况下,以及 需要 每个请求都包括 Authorization: Bearer $MCP_SERVER_API_KEY.

码头工人

docker build -t fastmcp-openai .
docker run --env-file .env -p 8000:8000 fastmcp-openai

Azure OpenAI

集 AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_KEY,以及(可选) AZURE_OPENAI_API_VERSION。每个功能部署的覆盖可通过以下方式获得:

  • AZURE_OPENAI_CHAT_DEPLOYMENT
  • AZURE_OPENAI_IMAGE_DEPLOYMENT
  • AZURE_OPENAI_AUDIO_DEPLOYMENT

让那些未设置的选项回归到通用选项 OPENAI_*_MODEL 默认值。

Azure Blob存储

媒体制作工具(generate_image, synthesize_speech, generate_video)将输出上传到Azure Blob存储,并仅返回生成的公共Blob URL——不包括原始base64有效载荷。配置以下环境变量(与中所述的变量匹配 src/README.md)因此服务器可以存储和共享这些资产:

  • AZURE_STORAGE_CONNECTION_STRING
  • AZURE_BLOB_CONTAINER
  • AZURE_BLOB_PUBLIC_BASE_URL
  • (可选) AZURE_BLOB_PATH_PREFIX, AZURE_BLOB_IMAGE_ROOT, AZURE_BLOB_AUDIO_ROOT, AZURE_BLOB_VIDEO_ROOT

如果缺少这些变量,媒体工具会引发运行时错误,提醒您配置存储。

MCP工具

工具 目的
chat_completion 聊天完成API,可选系统提示,JSON模式,采样旋钮,元数据传递。
generate_image gpt图像/DALL·E风格图像生成。将资产上传到Azure Blob存储并返回可共享的URL
synthesize_speech 使用音频语音端点进行文本到语音转换。将音频片段上传到Azure Blob存储并返回可共享的URL
generate_video 短片生成(Sora)。将MP4/缩略图资产上传到Azure Blob存储并返回可共享的URL
list_supported_models 报告用于每种功能(聊天/图像/音频/视频)的配置模型/部署。

视频生成仅在使用api.openai.com(Sora)时可用。Azure OpenAI目前缺少 /videos 端点,因此该工具在Azure模式下引发运行时错误。

从以下位置调用服务器 mcp.json

在代理客户端内注册此服务器时,请在传输定义中包含标头。示例片段:

{
  "servers": {
    "fastmcp-openai": {
      "transport": {
        "type": "sse",
        "url": "http://localhost:8000/mcp",
        "headers": {
          "Authorization": "Bearer ${env:MCP_SERVER_API_KEY}"
        }
      }
    }
  }
}

大多数MCP客户端(Claude Desktop、VS Code MCP等)支持 ${env:VAR} 扩张;否则,用实际的共享密钥替换该值。如果您通过Streamable HTTP连接,请添加相同的 headers 该运输配置内的块。

管道

azure-pipelines.yml 检查子模块,构建Docker镜像,并推送两者 latest 并为Docker Hub构建特定的标签。提供两个管道变量/秘密:

  • DOCKERHUB_SERVICE_CONNECTION:Docker注册表服务连接的名称。
  • DOCKERHUB_REPOSITORY:例如。 my-org/fastmcp-openai.