openai-mcp-server
openai-mcp-server
一个 MCP 服务器,将 OpenAI API 接入任何 MCP 客户端——Claude Desktop、Claude Code、Cowork、Cursor,或任何其他支持该协议的工具。
九个工具:文本生成、聊天补全、模型发现、图像生成与编辑、转写、语音合成、嵌入和内容审核。
为什么会有这个项目
Claude 插件目录中没有官方的 OpenAI 插件。这个服务器就是它的对应替代品,作为一个普通的开源项目,你可以掌握并扩展它。
Related MCP server: OpenAI Assistant MCP Server
工具
工具 | 作用 | 只读 |
| 通过 Responses API 生成文本——指令、推理强度、强制 JSON、响应链 | 否 |
| 通过 Chat Completions 发送显式消息历史 | 否 |
| 列出你的密钥可用的模型 ID,支持筛选和分页 | 是 |
| 从提示创建图像并写入磁盘 | 否 |
| 编辑或合成现有图像,可选使用遮罩 | 否 |
| 转写本地音频文件 | 否 |
| 将语音合成到音频文件 | 否 |
| 嵌入文本用于语义搜索,写入 JSON | 否 |
| 根据 OpenAI 的审核策略检查文本 | 是 |
每个工具都接受 response_format: "markdown" | "json" ——markdown 用于阅读,json 用于处理。所有工具还会返回 structuredContent,因此理解输出 schema 的客户端无需解析即可获得结构化数据。
环境要求
Node.js 20 或更高版本
具有可用余额的 OpenAI API 密钥
安装
git clone <your-repo-url> openai-mcp-server
cd openai-mcp-server
npm install
npm run build验证构建:
node dist/index.js --version # prints 1.0.0
node dist/index.js --help # lists all environment variables配置你的 MCP 客户端
服务器通过 stdio 使用 MCP 协议,因此客户端会将其作为子进程启动。
Claude Desktop
编辑 claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"openai": {
"command": "node",
"args": ["/absolute/path/to/openai-mcp-server/dist/index.js"],
"env": {
"OPENAI_API_KEY": "sk-proj-...",
"OPENAI_MCP_OUTPUT_DIR": "/Users/you/openai-mcp-output"
}
}
}
}之后请重启 Claude Desktop。
Claude Code
claude mcp add openai \
--env OPENAI_API_KEY=sk-proj-... \
-- node /absolute/path/to/openai-mcp-server/dist/index.js任何其他 MCP 客户端
将客户端指向 node /absolute/path/to/dist/index.js,并在环境中设置 OPENAI_API_KEY。
配置
只有 OPENAI_API_KEY 是必需的。可复制的模板见 .env.example。
变量 | 默认值 | 用途 |
| — | 必填。 你的 OpenAI API 密钥 |
| OpenAI 默认端点 | 备用端点(Azure、网关、代理) |
| — | 组织 ID |
| — | 项目 ID |
|
| 生成文件的输出目录 |
| 仅输出目录 | 冒号分隔的绝对路径,服务器可从中 读取 文件 |
|
| 每个请求的超时时间 |
|
| 临时故障的重试次数 |
|
| 默认文本模型 |
|
| 默认图像模型 |
|
| 默认嵌入模型 |
|
| 默认转写模型 |
|
| 默认语音模型 |
|
| 默认审核模型 |
模型 ID 会变。 OpenAI 会添加、重命名和停用模型,不同项目的访问权限也不同。所有默认值都可覆盖,而且 openai_list_models 会报告你的密钥实际可以访问的模型——如果某个调用报错“model not found”,先从那里查起。
安全模型
两个刻意设计的约束:
文件系统是沙箱化的。 读取本地文件的工具(openai_edit_image、openai_transcribe_audio)只接受位于 OPENAI_MCP_ALLOWED_DIRS 内的绝对路径。路径在检查前会通过 realpath 进行规范化,因此符号链接和 ../ 路径遍历都无法逃逸。输出目录始终允许访问;其他目录只有在你主动添加后才允许。请尽量保持该列表精简。
二进制输出绝不进入对话。 图像、音频和嵌入向量会写入磁盘,只返回路径。否则单个 base64 PNG 或 3072 维向量会淹没模型的上下文窗口。
API 密钥只从环境变量读取——它永远不会出现在工具参数、日志行或错误消息中。
示例
用自然语言向 MCP 客户端提问,它会选择合适的工具。
“使用 OpenAI 服务器将这个文本总结成三句话。”
→ openai_generate_text
“我可以使用哪些 OpenAI 嵌入模型?”
→ openai_list_models 并使用 filter="embedding"
“生成一只蓝色狐狸的透明 PNG 标志。”
→ openai_generate_image 并使用 background="transparent"
“用德语转写 ~/Documents/audio/interview.m4a。”
→ openai_transcribe_audio 并使用 language="de" ——这要求该目录位于 OPENAI_MCP_ALLOWED_DIRS 中
“将这些 40 条产品描述进行嵌入,以便我对它们进行聚类。”
→ openai_create_embeddings,然后读取它报告的 JSON 文件
开发
npm run dev # watch mode via tsx
npm run typecheck # tsc --noEmit, strict
npm test # unit tests, no network calls
npm run build # compile to dist/测试套件涵盖配置解析、文件系统沙箱(包括符号链接逃逸和路径穿越)、错误格式化和响应整形。它不会访问 OpenAI API。
项目结构
src/
├── index.ts entry point, server assembly, CLI flags
├── config.ts environment parsing and validation
├── client.ts OpenAI client construction
├── constants.ts defaults, limits, response formats
├── errors.ts API errors → actionable agent messages
├── files.ts sandboxed read/write
├── format.ts tool result shaping, character limit
└── tools/
├── text.ts generate_text, chat_completion
├── models.ts list_models
├── images.ts generate_image, edit_image
├── audio.ts transcribe_audio, text_to_speech
└── analysis.ts create_embeddings, moderate_content添加工具
编写带
.strict()的 Zod schema,并为每个字段添加.describe()。通过
registerTool(name, config, handler)注册工具,包括title、description、inputSchema、outputSchema和annotations。使用
toolResult(...)返回,以保证 Markdown/JSON 处理及字符限制的一致性;用errorResult(...)捕获错误。在
src/index.ts中添加注册调用,并在test/中编写测试。
故障排查
问题 | 原因 |
客户端不显示工具 | 配置文件中的路径不正确,或项目未构建( |
| 密钥未在客户端的 |
| 路径不在 |
生成时出现 | 模型 ID 对你的密钥不可用——运行 |
| 稍后重试,或检查项目配额 |
服务器将日志输出到 stderr;stdout 承载 JSON-RPC 流,必须保持干净。
许可证
MIT —— 参见 LICENSE。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables interaction with OpenAI's Chat Completion and Assistants APIs, supporting assistant management, file operations, and direct queries to GPT models through standardized MCP tools.92
- AlicenseAqualityCmaintenanceProvides access to OpenAI's ChatGPT API with web search capabilities for Claude and other MCP clients. Supports various GPT models with configurable parameters like reasoning effort, temperature, and streaming mode.1103MIT
- AlicenseBqualityDmaintenanceEnables MCP-compatible clients to leverage OpenAI's multimodal capabilities (vision, image generation, speech-to-text, text-to-speech) through file-oriented tools with a security-first architecture.101MIT
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Connect MCP clients to 2,000+ AI models without managing provider API keys.
MCP server for AI dialogue using various LLM models via AceDataCloud
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/piorkowskim79/openai-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server