OpenAI兼容MCP网关
本地Python MCP服务器,为 gpt, claude,以及 gemini,同时仍调用任何OpenAI风格 chat/completions 后端在下面。
这意味着每个目标都可以独立配置:
- 自己的API基础URL
- 它自己的API密钥或API密钥env var
- 它自己的默认模型
- 它自己的标头、查询参数和端点路径
如果你愿意:
gpt->OpenAI直接claude->OpenRoutergemini->电子中心
你可以用每个目标一个部分来干净利落地做到这一点。
工具
服务器公开:
provider_statuslist_gpt_modelslist_claude_modelslist_gemini_modelschat_gptchat_claudechat_geminisimple_gpt_chatsimple_claude_chatsimple_gemini_chat
配置
默认情况下,服务器读取 config/providers.toml.
存储库仅包含一个安全的示例文件,位于 config/providers.example.toml. 创建您的本地 config/providers.toml 从那个例子中,把你真正的钥匙放在那里。
用以下内容覆盖配置路径:
$env:OPENAI_COMPAT_MCP_CONFIG="C:\path\to\providers.toml"该文件有意固定形状。没有任意提供程序注册表。
[server]
name = "OpenAI-Compatible MCP Gateway"
timeout_seconds = 60
[gpt]
base_url = "https://api.openai.com/v1"
api_key_env = "OPENAI_API_KEY"
model = "gpt-4.1-mini"
[claude]
base_url = "https://api.anthropic.com/v1/openai"
api_key_env = "ANTHROPIC_API_KEY"
model = "claude-sonnet-4-5"
[gemini]
base_url = "https://generativelanguage.googleapis.com/v1beta/openai"
api_key_env = "GEMINI_API_KEY"
model = "gemini-2.5-flash"引导您的本地配置:
Copy-Item config\\providers.example.toml config\\providers.toml每个 gpt, claude,以及 gemini 支持:
base_urlmodelapi_key_envapi_keychat_completions_pathmodels_pathapi_key_headerapi_key_prefixapi_key_query_nameheadersquerydefault_bodytimeout_secondsenabled
备选路线示例
如果你想让所有三个目标都通过OpenRouter或另一个兼容OpenAI的集线器,请将这些部分分开,只需将它们指向不同的模型:
[gpt]
base_url = "https://openrouter.ai/api/v1"
api_key_env = "OPENROUTER_API_KEY"
model = "openai/gpt-4.1-mini"
headers = { "HTTP-Referer" = "https://example.com", "X-Title" = "Local MCP Gateway" }
[claude]
base_url = "https://openrouter.ai/api/v1"
api_key_env = "OPENROUTER_API_KEY"
model = "anthropic/claude-sonnet-4"
headers = { "HTTP-Referer" = "https://example.com", "X-Title" = "Local MCP Gateway" }
[gemini]
base_url = "https://openrouter.ai/api/v1"
api_key_env = "OPENROUTER_API_KEY"
model = "google/gemini-2.5-flash"
headers = { "HTTP-Referer" = "https://example.com", "X-Title" = "Local MCP Gateway" }安装
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -e .[dev]跑
对于stdio MCP:
openai-compat-mcp对于可流式传输的HTTP:
$env:OPENAI_COMPAT_MCP_TRANSPORT="streamable-http"
openai-compat-mcp可选远程承载身份验证
如果你通过HTTP公开服务器,你可能需要一个应用级承载令牌。
设置:
$env:OPENAI_COMPAT_MCP_BEARER_TOKEN="replace-this-with-a-long-random-token"可选,但建议用于远程/面向公众的设置:
$env:OPENAI_COMPAT_MCP_PUBLIC_BASE_URL="https://your-domain.example.com"行为:
stdio模式不受影响- HTTP MCP请求必须发送
Authorization: Bearer provider_status报告是否启用了远程承载身份验证
MCP客户端配置示例
{
"mcpServers": {
"openai-compat-gateway": {
"command": "C:\\Users\\anuji\\Documents\\codex\\.venv\\Scripts\\openai-compat-mcp.exe",
"env": {
"OPENAI_COMPAT_MCP_CONFIG": "C:\\Users\\anuji\\Documents\\codex\\config\\providers.toml",
"OPENAI_API_KEY": "sk-...",
"ANTHROPIC_API_KEY": "sk-ant-...",
"GEMINI_API_KEY": "..."
}
}
}
}备注
- 网关使用直接HTTP请求,而不是供应商SDK。
- 请求是非流式的
chat/completions. list_*_models取决于配置的后端公开GET /models.
