settings — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited settings (Hook) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<div align="center">
English | 简体中文
🚀 Integrate OpenAI-compatible API's powerful search capabilities into Claude via MCP protocol, break through knowledge limitations, and access real-time information
Features • Quick Start • Usage • Troubleshooting
</div>
OpenAI Search MCP is a high-performance Node.js/TypeScript MCP server that connects your OpenAI-compatible API to Claude, Claude Code, and other AI assistants. The backend model must provide search capability (search is always performed by your configured endpoint). Web fetching supports three engines: LLM (default, uses the same model’s browse capability), Tavily, and Firecrawl—selectable via the fetch_engine parameter when you need dedicated crawl services.
fetch_engine for real HTTP crawl and anti-bot handlingWhy offer multiple fetch engines? In practice, (1) LLM fetch is often slower than dedicated crawl APIs (e.g. ~14s vs ~1s for Tavily/Firecrawl). (2) LLM may use cached or inferred content and can add irrelevant text, so the result may not match the live page. When you need fast, faithful, unmodified content, use fetch_engine=tavily or fetch_engine=firecrawl.
npx command, minimal config| Feature | Official WebSearch | OpenAI Search MCP |
|---|---|---|
| Search Quality | Generic | AI Enhanced 🧠 |
| Web Fetching | Basic | Deep Extraction 📄 |
| Startup Speed | Slower | < 1 second ⚡ |
| Customization | Fixed | Highly Configurable ⚙️ |
| Cost | Paid | Use Your Own API Key 💰 |
No installation required, run the latest version directly:
npx openai-search-mcpnpm install -g openai-search-mcp
openai-searchThis project uses the OpenAI API format. You need an API endpoint that is compatible with OpenAI's API specification.
Options:
You will need:
OPENAI_API_URL: Your API endpoint URL (e.g., https://api.openai.com/v1)OPENAI_API_KEY: Your API key for that endpointOPENAI_MODEL: The model identifier (default: gpt-4o)Edit ~/.config/claude/claude_desktop_config.json (macOS/Linux) or %APPDATA%\claude\claude_desktop_config.json (Windows). Pick one of the three scenarios below and copy the matching config.
Scenario 1: Use LLM for fetch only (default) No Tavily/Firecrawl; web_fetch uses your OpenAI-compatible model. Only required vars.
{
"mcpServers": {
"openai-search": {
"type": "stdio",
"command": "npx",
"args": ["-y", "openai-search-mcp"],
"env": {
"OPENAI_API_URL": "https://api.openai.com/v1",
"OPENAI_API_KEY": "your-api-key-here",
"OPENAI_MODEL": "gpt-4o"
}
}
}
}Scenario 2: Use Tavily as default fetch engine Set FETCH_ENGINE=tavily and Tavily keys so that when fetch_engine is not passed, Tavily is used.
{
"mcpServers": {
"openai-search": {
"type": "stdio",
"command": "npx",
"args": ["-y", "openai-search-mcp"],
"env": {
"OPENAI_API_URL": "https://api.openai.com/v1",
"OPENAI_API_KEY": "your-api-key-here",
"OPENAI_MODEL": "gpt-4o",
"FETCH_ENGINE": "tavily",
"TAVILY_API_KEY": "tvly-your-tavily-key",
"TAVILY_API_URL": "https://api.tavily.com"
}
}
}
}Scenario 3: Use Firecrawl as default fetch engine Set FETCH_ENGINE=firecrawl and Firecrawl keys so that when fetch_engine is not passed, Firecrawl is used.
{
"mcpServers": {
"openai-search": {
"type": "stdio",
"command": "npx",
"args": ["-y", "openai-search-mcp"],
"env": {
"OPENAI_API_URL": "https://api.openai.com/v1",
"OPENAI_API_KEY": "your-api-key-here",
"OPENAI_MODEL": "gpt-4o",
"FETCH_ENGINE": "firecrawl",
"FIRECRAWL_API_KEY": "your-firecrawl-api-key",
"FIRECRAWL_API_URL": "https://api.firecrawl.dev/v2"
}
}
}
}OPENAI_API_URL, OPENAI_API_KEY; OPENAI_MODEL is optional (default gpt-4o).FETCH_ENGINE=llm|tavily|firecrawl; when unset, defaults to llm. You can still pass fetch_engine per call to override.TAVILY_API_KEY; Scenario 3 requires FIRECRAWL_API_KEY. The *_API_URL values usually need not be changed.Important:
https://your-api-endpoint.com/v1 with your actual API endpointyour-api-key-here with your actual API keyAfter configuration, completely quit and restart Claude Desktop.
In Claude conversation, type:
Show openai-search config infoOr
Search for latest TypeScript 5.5 featuresweb_search - Web SearchExecute intelligent search and return structured results.
Parameters:
query (required) - Search keywordsplatform (optional) - Specify platform like "github", "stackoverflow"min_results (optional) - Minimum results, default 3max_results (optional) - Maximum results, default 10Usage Examples:
Search for latest Next.js 15 updates
Search TypeScript 5.5 new features, return 5 results
Search for openai-search projects on GitHubweb_fetch - Web FetchingExtract complete content from a URL and return it as Markdown. You can choose which engine performs the fetch:
Parameters:
url (required) - Web page URL to fetchfetch_engine (optional) - "llm" | "tavily" | "firecrawl". When omitted, the server default is used (env FETCH_ENGINE, default llm).TAVILY_API_KEY). Typically faster and returns real page content.FIRECRAWL_API_KEY). Typically faster and returns real page content.Usage Examples:
Fetch README from https://github.com/lie5860/openai-search-mcp
Fetch https://example.com using Tavily (fetch_engine=tavily)
Get full doc from https://www.typescriptlang.org/docs (default LLM)get_config_info - Configuration DiagnosticsGet current configuration and connection status.
Returns:
default (current default fetch engine from FETCH_ENGINE), and whether Tavily/Firecrawl are configuredUsage Examples:
Show openai-search config infoswitch_model - Model SwitchingDynamically switch AI models.
Parameters:
model (required) - Model ID (e.g., "gpt-4o", "gpt-4o-mini")Usage Examples:
Switch to gpt-4o-mini model
Switch model to gpt-4otoggle_builtin_tools - Tool ManagementDisable/Enable Claude's built-in search tools.
Parameters:
action (optional) - "on" disable built-in tools, "off" enable built-in tools, "status" view statusUsage Examples:
Disable official WebSearch tool
View current tool status# Clone repository
git clone https://github.com/lie5860/openai-search-mcp.git
cd openai-search-mcp
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run development server
npm run dev
# Self-test (run after build)
npm run test-server # Config + search + LLM fetch
npm run test-search # Search + LLM fetch
npm run test-fetch # All fetch engines (llm / tavily / firecrawl)openai-search-mcp/
├── src/
│ ├── server.ts # MCP server main entry
│ ├── config/ # Configuration management
│ ├── providers/ # OpenAI-compatible API provider
│ ├── utils/ # Utilities (fetch polyfill, retry, logger)
│ └── types/ # TypeScript type definitions
├── bin/
│ └── openai-search.js # CLI command entry
├── dist/ # Build output directory
├── package.json
├── tsconfig.json
└── README.md| Variable | Description | Required | Default |
|---|---|---|---|
OPENAI_API_URL | OpenAI-compatible API endpoint (must support search) | Yes | - |
OPENAI_API_KEY | API key for your endpoint | Yes | - |
OPENAI_MODEL | Model identifier | No | gpt-4o |
DEBUG | Debug mode | No | false |
OPENAI_LOG_LEVEL | Log level | No | INFO |
TAVILY_API_KEY | Tavily API key (for web_fetch with fetch_engine=tavily) | No | - |
TAVILY_API_URL | Tavily API base URL | No | https://api.tavily.com |
FIRECRAWL_API_KEY | Firecrawl API key (when using firecrawl as default or per call) | No | - |
FIRECRAWL_API_URL | Firecrawl API base URL | No | https://api.firecrawl.dev/v2 |
FETCH_ENGINE | Default fetch engine when fetch_engine is not passed | No | llm |
Error: ❌ Connection failed or API error
Solutions:
OPENAI_API_URL is correct and points to an OpenAI-compatible endpointOPENAI_API_KEY is valid for your API providerget_config_info tool for diagnosticsError: Cannot find module
Solutions:
# Reinstall dependencies
npm install
# Rebuild
npm run buildError: EACCES
Solutions:
# Linux/macOS use sudo
sudo npm install -g openai-search-mcp
# Or recommend using npx (no permissions needed)
npx openai-search-mcpError: ReferenceError: fetch is not defined
Cause: fetch API not properly initialized in Node.js environment
Solutions:
node --version # Should be >= 18.0.0npm update openai-search-mcp
# Or use npx directly
npx openai-search-mcphttps://github.com/lie5860/openai-search-mcp/issues
Edit ~/.claude/CLAUDE.md and add the following for better experience:
# OpenAI Search MCP Usage Guide
## Activation
- Prioritize OpenAI Search for web search needs
- Auto-activate when latest information is needed
- Use web_fetch for web content extraction
## Tool Selection Strategy
| Scenario | Recommended Tool | Parameters |
|----------|-----------------|------------|
| Quick search | web_search | min_results=3, max_results=5 |
| Deep research | web_search + web_fetch | Search first, then fetch key pages |
| Specific platform | web_search | Set platform parameter |
| Complete docs | web_fetch | Fetch URL directly |
## Output Guidelines
- **Must cite sources**: `[Title](URL)`
- **Time-sensitive info**: Note retrieval date
- **Multi-source validation**: Cross-validate important info
- **No fabrication**: Clearly state when no results found
## Error Handling
- No results → Relax query or change keywords
- Connection failed → Use get_config_info to diagnose
- Timeout → Reduce max_results or retry| Metric | Python Version | Node.js Version (This Project) |
|---|---|---|
| Cold Start | ~2-3 seconds | < 1 second ⚡ |
| Memory Usage | ~50MB | < 30MB 💾 |
| Package Size | ~15MB | ~5MB 📦 |
| Type Safety | Type hints | Full TypeScript 🔒 |
| Deployment | Needs virtual env | npx one-click run 🚀 |
Contributions, issues, and feature requests are welcome!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)This project is licensed under the MIT License.
This project is based on GuDaStudio/GrokSearch (MIT License). Big thanks to the original author for the excellent work!
Key Changes:
Important Note: This project uses the OpenAI API format and requires an OpenAI-compatible API endpoint.
The original project (Python version) is equally excellent. If you're more familiar with the Python ecosystem, we recommend using the original version:
<div align="center">
If this project helps you, please give it a ⭐️ Star!
Made with ❤️ by lie5860
</div>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.