使用说明
MCP OpenAI服务器
一个模型上下文协议(MCP)服务器,使Claude CLI在遇到具有挑战性的问题时能够无缝地咨询OpenAI模型。这种集成允许Claude在利用OpenAI的模型(如o3、o1或gpt-4)提供替代视角或专业帮助的同时维护其对话上下文。
特性
- 无缝集成:Claude CLI可以在不丢失上下文的情况下向OpenAI模型请求帮助
- 智能选型:模糊搜索和动态模型发现
- 许可证管理:自动上下文窗口跟踪和警告
- 速率限制:使用指数回退实现OpenAI推荐的模式
- 流媒体支持:实时响应流媒体,提供更好的用户体验
- 错误处理:通过自动重试进行优雅的错误恢复
先决条件
- Node.js 18.0.0或更高版本
- OpenAI API密钥,可访问您要使用的模型
- Claude CLI已配置为支持MCP服务器
安装
1.克隆存储库
git clone https://github.com/jsindy/mcp-openai.git
cd mcp-openai
2.安装依赖项
npm install
3.设置环境变量
创建一个 .env 根目录中的文件:
cp .env.example .env
编辑 .env 文件并添加您的OpenAI API密钥:
OPENAI_API_KEY=sk-your-api-key-here
4.建设项目
npm run build
配置
所需的环境变量
OPENAI_API_KEY-您的OpenAI API密钥(必需)
可选环境变量
OPENAI_DEFAULT_MODEL-未指定时使用的默认模型(默认值:gpt-4-turbo-preview)OPENAI_BASE_URL-OpenAI API的自定义基本URL(对代理有用)OPENAI_ORGANIZATION-您的OpenAI组织IDOPENAI_MAX_RETRIES-最大重试次数(默认值:5)OPENAI_TIMEOUT-请求超时(毫秒)(默认值:30000)OPENAI_DEFAULT_MAX_TOKENS-响应的默认最大令牌数(默认值:4096)OPENAI_TEMPERATURE-模型响应的默认温度(默认值:0.7)
示例.env安装程序
# Required
OPENAI_API_KEY=sk-your-api-key-here
# Optional
OPENAI_DEFAULT_MODEL=gpt-4-turbo-preview
OPENAI_ORGANIZATION=org-your-org-id
OPENAI_MAX_RETRIES=5
OPENAI_TIMEOUT=30000
OPENAI_DEFAULT_MAX_TOKENS=4096
OPENAI_TEMPERATURE=0.7
使用Claude CLI
将MCP服务器添加到Claude CLI
您可以在全局(用户范围)或本地(项目范围)将MCP OpenAI服务器添加到Claude CLI。
选项1:全局安装(推荐)
将服务器添加到全局Claude CLI配置中,使其在所有会话中都可用:
# Add to global config with environment variable for API key
claude mcp add --scope user openai node /path/to/mcp-openai/dist/index.js -e OPENAI_API_KEY=$OPENAI_API_KEY
# Or if you prefer to use the .env file in the mcp-openai directory
claude mcp add --scope user openai node /path/to/mcp-openai/dist/index.js
选项2:本地安装
仅将服务器添加到当前项目中:
# Add to local project config
claude mcp add openai node /path/to/mcp-openai/dist/index.js -e OPENAI_API_KEY=$OPENAI_API_KEY
验证安装
检查服务器是否已成功添加:
claude mcp list
# Should show: openai: node /path/to/mcp-openai/dist/index.js
删除服务器(如果需要)
要从配置中删除服务器,请执行以下操作:
# Remove from global config
claude mcp remove --scope user openai
# Remove from local config
claude mcp remove openai
2.启动Claude CLI
配置后,只需启动Claude CLI:
claude
MCP OpenAI服务器将在需要时自动启动。
3.交互示例
当Claude遇到具有挑战性的问题时,它可以参考OpenAI模型:
User: Help me optimize this complex TypeScript generic type that's causing performance issues.
Claude: This is a complex type inference issue. Let me consult OpenAI's o3 model for additional perspective.
[Claude invokes askOpenAI tool]
Claude: Based on OpenAI's analysis, the issue stems from recursive type instantiation. Here's an optimized solution...
可用工具
1. 问OpenAI
用特定的上下文或问题咨询OpenAI模型。
参数:
model(可选):要使用的OpenAI模型(例如,“o3”、“gpt-4”、“gpt-4-turbo”)context(必填):要发送给OpenAI的问题上下文或问题systemPrompt(可选):自定义系统提示以指导模型的行为includeConversationHistory(可选):是否包含以前的交易所(默认:false)maxTokens(可选):响应的最大令牌数
示例用法:
// Basic usage
await askOpenAI({
context: "Explain the differences between TypeScript conditional types and mapped types"
});
// With specific model
await askOpenAI({
model: "o3",
context: "Debug this complex React hooks race condition: [code snippet]",
systemPrompt: "You are an expert React developer specializing in concurrent rendering."
});
// With token limit
await askOpenAI({
model: "gpt-4-turbo",
context: "Analyze this architecture design...",
maxTokens: 2000
});
2.列出OpenAI模型
列出所有可用的OpenAI模型及其功能。
参数:
filter(可选):按名称模式过滤模型
示例用法:
// List all available models
await listOpenAIModels();
// Filter for specific models
await listOpenAIModels({ filter: "gpt-4" });
// Returns: gpt-4, gpt-4-turbo, gpt-4-turbo-preview, etc.
await listOpenAIModels({ filter: "o" });
// Returns: o3, o1-preview, o1-mini, etc.
示例响应:
{
"models": [
{
"id": "gpt-4-turbo-preview",
"contextWindow": 128000,
"maxOutputTokens": 4096,
"description": "Latest GPT-4 Turbo preview with improved performance"
},
{
"id": "o3",
"contextWindow": 200000,
"maxOutputTokens": 4096,
"description": "Advanced reasoning model with large context window"
}
],
"totalCount": 15
}
模型选择
模糊匹配
服务器实现了模型名称的智能模糊匹配:
"o3"→ 匹配可用的最新o3变体"gpt4"→ 火柴"gpt-4-turbo-preview""gpt-4"→ 匹配精确型号或最新版本"turbo"→ 匹配最新涡轮增压车型
模型快捷方式
常用快捷键会自动展开:
"o3" → "gpt-4-o3-latest"
"o1" → "o1-preview"
"4" → "gpt-4-turbo-preview"
"3.5" → "gpt-3.5-turbo"
"mini" → "o1-mini"
默认模型选择
如果没有指定模型,服务器将:
- 使用配置的默认模型(如果已设置)
- 退回到功能最强大的可用型号
- 更喜欢具有较大上下文窗口的较新模型
许可证管理
自动令牌计数
服务器在发送请求之前会自动计数令牌:
- 用途
tiktoken用于精确的代币计数 - 考虑系统提示、上下文和响应空间
- 为克劳德的延续保留代币
令牌限制警告
Warning: Context uses 14,500 of 16,000 tokens (90.6%)
Warning: Approaching token limit. Consider using a model with larger context window.
自动截断
当上下文超出限制时:
Error: Context exceeds o3's 200k token limit by 5,000 tokens.
Action: Truncating oldest conversation history...
Warning: Removed 3 previous exchanges to fit within token limit.
模型切换建议
Token limit exceeded for gpt-4 (8k).
Suggestion: Switch to gpt-4-turbo (128k) or o3 (200k) for larger context.
错误处理
速率限制(429个错误)
服务器实现了具有抖动的指数回退:
OpenAI rate limit reached. Retrying in 2.3 seconds...
Retry 1 of 5...
Success!
常见错误及解决方法
| 错误 | 原因 | 解决方案 |
|---|---|---|
Invalid API key |
API密钥丢失或不正确 | 请检查您的 OPENAI_API_KEY 环境变量 |
Model not found: o5 |
请求的模型不存在 | 使用 listOpenAIModels 查看可用型号 |
Context too large |
超出模型的令牌限制 | 使用具有更大上下文的模型或减少输入 |
Rate limit exceeded |
请求太多 | 服务器将自动重试并回退 |
Network timeout |
连接缓慢或API问题 | 服务器将重试;检查您的互联网连接 |
自动恢复
服务器自动处理:
- 网络中断(最多5次重试)
- 速率限制(指数回退)
- API临时错误(具有优雅的回退)
发展
从源头构建
# Install dependencies
npm install
# Build TypeScript files
npm run build
# Watch mode for development
npm run dev
以开发模式运行
# Start TypeScript compiler in watch mode
npm run dev
# In another terminal, run the server
npm start
项目结构
mcp-openai/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── openai-client.ts # OpenAI API wrapper
│ ├── models.ts # Model management and fuzzy search
│ ├── rate-limiter.ts # Retry and backoff logic
│ ├── token-counter.ts # Token calculation utilities
│ ├── context-manager.ts # Context handling and truncation
│ └── types.ts # TypeScript interfaces
├── dist/ # Compiled JavaScript files
├── package.json # Node.js configuration
├── tsconfig.json # TypeScript configuration
└── .env # Environment variables (create from .env.example)
运行测试
npm test
代码检查
npm run lint
故障排除
服务器无法启动
- 检查Node.js版本:
node --version(必须为18.0.0+) - 验证构建已完成:
npm run build - 如果使用HTTP传输,请检查端口冲突
API关键问题
# Test your API key
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY"
型号不可用
某些型号需要特定的访问级别:
- GPT-4型号可能需要GPT-4 API访问权限
- o3/o1型号可能需要预览权限
- 检查您的OpenAI帐户权限
令牌计数不匹配
如果令牌计数似乎不正确:
- 确保您使用的是最新版本
tiktoken版本 - 不同的模型可能使用不同的标记器
- 系统提示和格式化添加令牌
连接问题
对于连接问题:
- 检查防火墙设置
- 验证代理配置(如果适用)
- 使用curl测试API的直接访问
- 查看OpenAI API状态页
调试
通过设置启用调试日志记录:
DEBUG=mcp:* node dist/index.js
许可证
该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取详细信息。
贡献
欢迎投稿!请阅读我们的 贡献指南 在提交pull请求之前。
支持
有关问题和功能请求,请使用 GitHub问题 页面。
有关MCP的问题,请参阅 模型上下文协议文档.
有关OpenAI API文档,请访问 OpenAI API参考.