Best MCP Servers for OpenAI Codex in 2026
Firecrawl, Bright Data, Zyte, and Crawlora compared as Codex CLI MCP servers: config.toml syntax, install commands, tool counts, and which fits which job.
Firecrawl's own Codex quickstart and a combined "Best MCP Servers for Claude Code and Codex" roundup both landed within the last two weeks, and OpenAI has supported MCP in Codex since early 2025 — but nobody's published a Codex-specific buyer's guide for web-data MCP servers with real config, not a repackaged Claude Code post. This one pulls every command from each vendor's own docs and Codex's own docs, checked directly in September 2026.
Codex's MCP config
Codex stores MCP server definitions in a TOML file at ~/.codex/config.toml (applies everywhere) or a project-scoped .codex/config.toml for trusted repos. Each server gets its own [mcp_servers.<name>] table.
You don't have to hand-edit the file: codex mcp add <name> --env VAR=VALUE -- <command> [args...] registers a stdio server from the command line, and codex mcp list or the in-session /mcp command confirms what's connected.
Codex supports two server shapes:
- Stdio (local process):
command,args, and an[mcp_servers.<name>.env]table — a child process Codex launches and talks to over stdin/stdout, the same shape asnpx-based servers everywhere else. - Streamable HTTP (remote):
url, plus one ofauth = "oauth"(browser sign-in flow),bearer_token_env_var(points at a host env var holding a static token), orhttp_headers(static key-value headers) for auth.codex mcp add <name> --url <url>registers these too.
What to evaluate, for Codex specifically
- OAuth vs static key: Firecrawl's Codex path is a hosted OAuth server, no key handling on your machine at all. Bright Data and Crawlora use a static token — an env var either way, but one you generate and rotate yourself.
- Process or no process: stdio servers spawn an npx child process per Codex session; Streamable HTTP servers are one config block and nothing running locally.
- Codex surfaces: config.toml is described as shared across the CLI and IDE extension, so a server you add once should show up in both — worth a quick /mcp check in whichever surface you actually use daily.
- Generic crawl-to-markdown versus structured platform data versus a code-generation plugin: Firecrawl and Bright Data return data directly through tool calls; Zyte's Codex add-on hands you a Scrapy project to run and maintain yourself, while its hosted MCP server returns data through tool calls.
- Tool count versus tool relevance: a 32-tool or 4,204-tool catalog is only useful if Codex's tool picker and your prompt actually reach for the right one — narrower, task-specific servers can be easier for an agent to use correctly.
The contenders
| Tool | Format | Coverage | Config | Best for |
|---|---|---|---|---|
| Firecrawl MCP | Remote MCP server, OAuth | Search/scrape/crawl/extract/interact on any URL | url-based, https://mcp.firecrawl.dev/v2/mcp-oauth, codex mcp login firecrawl for browser OAuth | Generic crawl-to-markdown with zero key management |
| Bright Data | Local MCP server (32 tools) | 1,200+ pre-built scrapers + proxy/anti-bot infra | command-based, npx -y @brightdata/mcp, API_TOKEN in env | Anti-bot-hardened extraction at scale |
| Zyte MCP | Remote MCP server, sign-in | Zyte API fetch/extract/search + Scrapy Cloud tools | url-based, codex mcp add zyte --url https://mcp.zyte.com/v1/mcp, then codex mcp login zyte | Live fetch/extract on Zyte API, or Scrapy Cloud monitoring, from Codex |
| Zyte Codex add-on | Codex plugin (not MCP) | Generates a deployable Scrapy project from a prompt | Zyte's own Codex add-on, installed separately from MCP | Teams that want a maintained scraper codebase, not live tool calls |
| Crawlora | Remote MCP server | One platform per entry (9 tools for web on October 19), or 3 tools on /mcp/agent; the full 4,204 tools across 497 platform groups is more than Codex reads | url-based, https://mcp.crawlora.net/mcp/family/web or /mcp/agent, bearer_token_env_var pointing at your key | Structured JSON from named platforms, pay-on-success, nothing to run locally |
Firecrawl MCP: OAuth, no key to paste
Firecrawl's Codex quickstart skips the usual FIRECRAWL_API_KEY-in-env pattern entirely: codex mcp add firecrawl --url https://mcp.firecrawl.dev/v2/mcp-oauth followed by codex mcp login firecrawl opens a browser sign-in, you pick a team, and Codex is connected — no local process, no key to generate or store. A keyless mode also exists for search/scrape/parse without an account at all. Choose it when the job is "read this page or these docs into context" and you'd rather not manage a token.
Bright Data: the standard stdio path, 32 tools
Bright Data's Codex setup is the conventional command-based entry: codex mcp add brightdata --env API_TOKEN=YOUR_API_KEY -- npx -y @brightdata/mcp, or the equivalent hand-written [mcp_servers.brightdata] block with env = { API_TOKEN = "..." }. This part changed in October 2026. Version 3.0.0 (October 11) removed the 46 per-platform web_data_* tools in favor of one scraper workflow, search_scrapers then get_scraper_details then run_scraper, that its README says covers 1,200+ pre-built scrapers. Version 3.1.0 (October 15) removed PRO_MODE, so every tool is on by default and an old config that still sets it is ignored. The README for 4.1.0 (October 20) lists 32 tools across search, scraping, scrapers, a remote browser and a support assistant, and GROUPS or TOOLS environment variables narrow that set. Choose it for a stubborn, anti-bot-protected target where reliability matters more than keeping the setup process-free.
Zyte: a hosted MCP server, and a separate Scrapy generator
Update, October 5, 2026: an earlier version of this post said Zyte had no MCP server for Codex. On September 30, 2026 Zyte launched an official hosted one, and its docs list Codex CLI as a supported client: codex mcp add zyte --url https://mcp.zyte.com/v1/mcp, then codex mcp login zyte to sign in with your Zyte account. The tools are fetch_http and fetch_page for retrieval, extract_from_http and extract_from_browser for structured extraction, search, pricing and usage tools, and a group of Scrapy Cloud tools for running and monitoring spiders. Using the server is free; what your agent does through it is billed at Zyte API prices (Scrapy Cloud jobs at Scrapy Cloud prices), new users get a $5 trial credit for one month, and only organizations with an active Zyte API or Scrapy Cloud plan are offered. We have not signed in or listed its tools in Codex ourselves. Choose it if you already pay for Zyte API or Scrapy Cloud and want fetch, extraction and spider monitoring inside Codex.
Zyte's July 22, 2026 Codex add-on is a different product. It is not an MCP server you call at runtime: it's a plugin that takes a natural-language description of what to extract and hands back a complete, tested Scrapy project with page objects and spiders — the same workflow Zyte ships for Claude Code, just wired into Codex now. Choose the add-on if what you actually want out of Codex is a maintainable scraper codebase to own, not live structured data back in the conversation.
Crawlora: one config block, no process, 497 platform groups
Update, October 19, 2026: an earlier version of this post pointed Codex at the full endpoint, https://mcp.crawlora.net/mcp. We have since logged what Codex 0.156.1 asks that server for. It sends one tools/list request, gets back the first page of 1000 tools (abcau_article through flashscore_news, alphabetically) with a nextCursor, and never asks for the rest. For Codex that means web_search, the youtube_* tools and everything else after flashscore_news is simply not there. Claude Code, Grok Build and Pi all followed the cursor in the same test. Later the same day: Codex 0.162.0 and later do follow the cursor (the fix for openai/codex#28858), but in four of four runs Codex 0.163.0 stopped after the third of four pages, so web_search (on page four) still did not arrive. The advice to use /mcp/family/web or /mcp/agent stands. The measurements are in our cross-client study.
Since the evening of October 19, the hosted server also recognises Codex by its User-Agent and serves it the three-tool agent profile on the plain https://mcp.crawlora.net/mcp URL, so a Codex config that already points there works again, with call_tool reaching every platform. Codex asks you to approve each call_tool call, because a generic dispatcher cannot be marked read-only. The explicit URLs below stay the clearer choice.
Crawlora's MCP server serves narrower views of the same tools on the same host, and Codex reads those in full. /mcp/family/<family> exposes one platform (web for search, scrape, crawl and map; the family is the first segment of the REST route, so /api/v1/youtube/search is youtube), and /mcp/agent exposes three tools (search_tools, get_tool, call_tool) that reach every platform. Codex declared all 9 web tools and all 3 agent tools in our test, which used a stand-in model, so it shows what Codex requests and declares and not how a model behaves. Add one entry per platform, or the agent endpoint as a single entry, with a static bearer token and nothing extra to launch:
[mcp_servers.crawlora]
url = "https://mcp.crawlora.net/mcp/family/web"
bearer_token_env_var = "CRAWLORA_API_KEY"
export CRAWLORA_API_KEY="your_key_here"
The current catalog covers 4,204 MCP tools across 497 platform groups — search, maps, e-commerce, social, finance, travel, jobs, media, app stores, and reviews — returning normalized JSON and billed only on success, with 2,000 free credits a month and no card. Choose it when Codex needs a number or a record from a named platform (a price, a ranking, a listing, a filing) rather than a page to read or a spider to maintain.
How to choose, by job
- Pulling a page or a doc into context with zero key setup → Firecrawl MCP's OAuth path.
- Extracting from a stubborn, named site at real volume → Bright Data, local process and all.
- Pulling a price, ranking, listing, or filing from a known platform as clean JSON → Crawlora MCP.
- Live fetch, extraction or Scrapy Cloud monitoring on Zyte API → Zyte's hosted MCP server, documented for Codex CLI.
- Owning a Scrapy codebase instead of calling tools live → Zyte's Codex add-on (the plugin, separate from its MCP server).
- Working across the Codex CLI and IDE extension →
config.tomlis shared, but verify with/mcpin whichever surface you use, since Codex hasn't published surface-specific caveats.
Add structured web data to Codex
4,204 MCP tools across 497 platform groups, one API key, billed only on success. 2,000 free credits a month, no card.
Sources
Related reading
- Best Web Scraping MCP Servers & Skills for Claude Code in 2026: the same three-plus-one comparison, Claude Code's config shape.
- Best MCP Servers for Warp in 2026: another terminal-first agent, same vendors.
- Best MCP Servers for Gemini CLI in 2026.
- Best MCP Servers for Grok Build in 2026: another terminal agent, with a measurement of how its tool search ranks a large catalog.
- Crawlora vs Firecrawl · Crawlora vs Bright Data · Crawlora vs Zyte.
- Give your AI agent live web data with MCP.
Frequently asked questions
What's the best MCP server for web scraping with Codex?
It depends on the job. Firecrawl's Codex quickstart connects over hosted OAuth with no API key to manage — good for reading arbitrary pages or docs. Bright Data is built for anti-bot-hardened extraction across 40+ named platforms via a standard stdio server. Zyte has a hosted MCP server documented for Codex CLI (launched September 30, 2026) for live fetch/extract calls, plus a separate Codex add-on that generates a complete Scrapy project from a prompt. Crawlora fits when you want structured JSON from named platforms without maintaining a parser, billed only on success.
Where does Codex read its MCP server config from?
A TOML file at ~/.codex/config.toml (global) or a project-scoped .codex/config.toml, with each server under its own [mcp_servers.<name>] table. codex mcp add <name> registers a server from the command line, and codex mcp list or the in-session /mcp command confirms what's connected.
How do I install Firecrawl's MCP server for Codex?
Run codex mcp add firecrawl --url https://mcp.firecrawl.dev/v2/mcp-oauth followed by codex mcp login firecrawl, which opens a browser OAuth flow — no API key to generate or paste. A keyless mode also covers search/scrape/parse without an account.
Does Zyte work with Codex?
Yes, two ways. Since September 30, 2026 Zyte has an official hosted MCP server at https://mcp.zyte.com/v1/mcp that its docs list for Codex CLI: codex mcp add zyte --url https://mcp.zyte.com/v1/mcp, then codex mcp login zyte (billed at Zyte API rates, no separate MCP fee; needs an organization with an active Zyte API or Scrapy Cloud plan). Separately, Zyte's July 2026 Codex add-on is a plugin that turns a natural-language extraction request into a complete, tested Scrapy project rather than returning data through live tool calls.
How do I install Crawlora's MCP server for Codex?
Add a [mcp_servers.crawlora] table to ~/.codex/config.toml with url = "https://mcp.crawlora.net/mcp/family/web" (or "https://mcp.crawlora.net/mcp/agent" for a three-tool endpoint that reaches every platform) and bearer_token_env_var = "CRAWLORA_API_KEY", then export that env var with a free API key from crawlora.net (2,000 credits/month, no card). Avoid the full /mcp endpoint in Codex 0.156.1: it reads only the first 1000 tools, which leaves out web_search.
