内容
# OpenAI MCP 服务器
本 MCP(模型内容协议)服务器通过 HTTP、HTTPS 和 STDIO 传输模式提供对 OpenAI API 功能的访问。
## 功能特点
- 多种传输模式支持(HTTP、HTTPS 和 STDIO)
- 通过 HTTP 头进行动态配置
- 根据 API 文档自动生成工具
- 支持 Docker,方便部署
- 跨平台 Node.js 二进制编译
- 生产环境就绪的部署工作流
## 前置条件
- Node.js 18.0.0 或更高版本
- npm 包管理器
- pkg(用于二进制编译,由构建脚本自动安装)
## 构建项目
### 使用构建脚本(推荐)
1. 使构建脚本可执行:
```bash
chmod +x build.sh
```
2. 运行构建脚本:
```bash
./build.sh
```
这将:
- 使用 `npm install` 安装依赖项
- 全局安装 pkg 以进行二进制编译
- 使用 `pkg` 构建项目,目标为 Node.js 18 Linux x64
- 在 `bin/mcp-server` 中创建可执行二进制文件
- 生成带有正确路径的 `mcp-stdio.json`
- 使用 GZip 压缩二进制文件以减小体积
## 运行 MCP 服务器
服务器可以根据 **TRANSPORT** 环境变量以三种模式运行:[STDIO, HTTP, HTTPS]。
### 配置 MCP 服务器的传输模式
| 传输模式 | 用例 | 配置文件 |
|----------------|----------|----------------------|
| **STDIO** | 直接集成 | `mcp-stdio.json` |
| **STDIO/HTTP** | 直接运行 Docker 镜像 | `mcp-docker.json` |
| **HTTP** | 本地/远程服务器上的 Web 服务 | `mcp-http.json` |
| **HTTPS** | 使用 SSL/TLS 的安全 Web 服务 | `mcp-https.json` |
### 方法 1:直接二进制/节点执行
**最适合**:STDIO 模式,用于本地开发和直接 Cursor 集成
**步骤 1:构建服务器**
```bash
# 选项 A:使用构建脚本(推荐)
chmod +x build.sh
./build.sh
# 选项 B:手动构建
npm install
npm install -g pkg
pkg main.js --targets node18-linux-x64 --output bin/mcp-server --no-warnings --compress GZip
chmod +x bin/mcp-server
```
**步骤 2:配置 Cursor**
使用生成的 `mcp-stdio.json` 文件:
```json
{
"mcpServers": {
"OpenAI-mcp-server-stdio": {
"command": "/path/to/your/project/bin/mcp-server",
"env": {
"API_BASE_URL": "https://your-api-base-url",
"BEARER_TOKEN": "your-bearer-token"
// 替代身份验证选项(仅使用一个):
// "API_KEY": "your-api-key",
// "BASIC_AUTH": "your-basic-auth-credentials",
}
}
}
}
```
### 方法 2:Docker 模式(容器化部署)
**最适合**:HTTP 或 HTTPS Docker 模式,用于生产部署、扩展和一致的环境
**步骤 1:构建 Docker 镜像**
```bash
docker build -t OpenAI-mcp-server .
```
***选项 A:让代理直接运行容器:***
```json
{
"mcpServers": {
"OpenAI-mcp-server-docker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-p", "8080:8080",
"-e", "API_BASE_URL=https://your.api.url",
"-e", "BEARER_TOKEN=your-token-here",
// 替代身份验证选项(仅使用一个):
// "-e", "API_KEY=your-api-key",
// "-e", "BASIC_AUTH=your-basic-auth-credentials",
"OpenAI-mcp-server"
]
}
}
}
```
***选项 B:手动运行容器:***
```bash
docker run -d \
--name OpenAI-mcp-server \
-p 8080:8080 \
-e API_BASE_URL="https://your-api-base-url" \
-e BEARER_TOKEN="your-bearer-token" \
// 替代身份验证选项(仅使用一个):
// "-e", "API_KEY=your-api-key",
// "-e", "BASIC_AUTH=your-basic-auth-credentials",
-e TRANSPORT="http" \
-e PORT="8080" \
OpenAI-mcp-server
```
***选项 C:Docker Compose(推荐)***
```bash
# 构建并启动容器
docker-compose up --build
# 或在分离模式下运行
docker-compose up -d --build
```
**步骤 2:配置 MCP 服务器**
- HTTP 模式 `mcp-http.json`
```json
{
"mcpServers": {
"OpenAI-mcp-server-http": {
"url": "http://localhost:8080/mcp" 或 "http://remote-server:8080/mcp",
"headers": {
"API_BASE_URL": "https://your-api-base-url",
"BEARER_TOKEN": "your-bearer-token"
// 替代身份验证选项(仅使用一个):
// "API_KEY": "your-api-key",
// "BASIC_AUTH": "your-basic-auth-credentials",
}
}
}
}
```
- HTTPS 模式 `mcp-https.json`
```json
{
"mcpServers": {
"OpenAI-mcp-server-https": {
"url": "https://localhost:8443/mcp" 或 "https://remote-server:8443/mcp",
"headers": {
"API_BASE_URL": "https://your-api-base-url",
"BEARER_TOKEN": "your-bearer-token",
"CERT_FILE": "./certs/cert.pem",
"KEY_FILE": "./certs/key.pem"
// 替代身份验证选项(仅使用一个):
// "API_KEY": "your-api-key",
// "BASIC_AUTH": "your-basic-auth-credentials",
}
}
}
}
```
#### HTTPS 模式所需环境变量:
- `TRANSPORT`: 设置为 "http" 或 "https" **(必填)**
- `PORT`: 服务器端口 **(必填)**
- `CERT_FILE`: SSL 证书文件路径(适用于 HTTPS 模式)
- `KEY_FILE`: SSL 私钥文件路径(适用于 HTTPS 模式)
#### 通过 HTTP 头进行配置:
在 HTTP 模式下,每个请求的 API 配置通过 HTTP 头提供:
- `API_BASE_URL`: **(必填)** API 的基准 URL
- `BEARER_TOKEN`: 身份验证的 Bearer Token
- `API_KEY`: API 密钥
- `BASIC_AUTH`: 基本身份验证凭证
服务器将在配置的端口上启动,并具有以下端点:
- `/mcp`: MCP 通信的 HTTP/HTTPS 端点(需要 `API_BASE_URL` 头)
- `/`: 健康检查端点
**注意**:除非 API 明确不需要身份验证,否则应提供至少一个身份验证头(`BEARER_TOKEN`、`API_KEY` 或 `BASIC_AUTH`)。
## 开发
使用自动重新加载进行开发:
```bash
npm run dev
```
## 环境变量大小写敏感性
服务器支持大写和小写的传输环境变量:
- `TRANSPORT`(大写)- 首先检查
- `transport`(小写)- 如果未设置大写,则使用小写作为备用
有效值:"http", "HTTP", "https", "HTTPS", "stdio" 或未设置(默认为 STDIO)
## 身份验证
### HTTP 模式
身份验证通过每个请求的 HTTP 头提供:
- `BEARER_TOKEN`: Bearer Token
- `API_KEY`: API 密钥
- `BASIC_AUTH`: 基本身份验证
### STDIO 模式
身份验证通过环境变量提供:
- `BEARER_TOKEN`: Bearer Token
- `API_KEY`: API 密钥
- `BASIC_AUTH`: 基本身份验证
## 健康检查
在 HTTP 模式下运行时,可以在根端点 (`/`) 检查服务器健康状态。
预期响应:`{"status":"ok"}`
## 传输模式总结
### HTTP 模式(TRANSPORT=http 或 TRANSPORT=HTTP)
- 使用 HTTP 服务器
- 为每个请求提供 HTTP 头进行配置
- 每个请求需要 `API_BASE_URL` 头
- 端点:`/mcp`
- 通过 `PORT` 环境变量配置端口(默认为 8080)
### HTTPS 模式(TRANSPORT=https 或 TRANSPORT=HTTPS)
- 使用带有 SSL/TLS 加密的 HTTPS 服务器
- 为每个请求提供 HTTP 头进行配置
- 每个请求需要 `API_BASE_URL` 头
- 端点:`/mcp`
- 通过 `PORT` 环境变量配置端口(默认为 8443)
- **需要 SSL 证书和私钥文件(CERT_FILE 和 KEY_FILE)**
### STDIO 模式(TRANSPORT=stdio 或未设置)
- 使用标准输入/输出进行通信
- 仅通过环境变量进行配置
- 需要 `API_BASE_URL` 环境变量
- 适用于命令行用法