Firecrawl MCP 用 mcp-oauth 登录,密钥走 bearer 不要拼进 URL
交互主路径:codex mcp add firecrawl --url https://mcp.firecrawl.dev/v2/mcp-oauth,再 mcp login。无账号用 /v2/mcp;CI 才 bearer_token_env_var = FIRECRAWL_API_KEY。不要把密钥拼进 URL,也不要同时加两台 firecrawl。
Firecrawl 官方给 Codex 的交互主路径是托管 Streamable HTTP + 浏览器登录,不是本地 npx:
codex mcp add firecrawl --url https://mcp.firecrawl.dev/v2/mcp-oauth
codex mcp login firecrawl
[mcp_servers.firecrawl]
url = "https://mcp.firecrawl.dev/v2/mcp-oauth"
enabled = true
这条 URL 是客户端配置值,不要在浏览器里直接打开。Codex 会自己拉起登录,让你选团队并批准。进会话后用 /mcp 确认 firecrawl 已连接。改过已有连接时,先新开会话再试。
三种托管入口不要混:
https://mcp.firecrawl.dev/v2/mcp-oauth:有人在场时登录。新发的 OAuth token 只认这个 audience。https://mcp.firecrawl.dev/v2/mcp:无账号 keyless,只有 Search / Scrape / Parse,按 IP 限流。- 同一条
/v2/mcp再加bearer_token_env_var:无人值守、要完整工具面时用 API key。
不要同时加两台名叫 firecrawl 的服务器。codex mcp add 同名会覆盖。也不要再开一台 firecrawl_oauth 之类的第二张表。/v2/mcp 和 /v2/mcp-oauth 的 token 不能混用;audience 对不上或缺失会 fail closed。旧 token 若是发给 /v2/mcp 的,只继续在那条上用。
无账号先试:
codex mcp add firecrawl --url https://mcp.firecrawl.dev/v2/mcp
keyless 连上后应看到 firecrawl_search、firecrawl_scrape、firecrawl_parse。要完整工具或更高限额,换成登录或 API key,不要叠第二台。
CI / 脚本不能开浏览器时,密钥走 bearer_token_env_var。永远不要把 key 拼进 URL,也不要写进 http_headers 或 env 字面量:
[mcp_servers.firecrawl]
url = "https://mcp.firecrawl.dev/v2/mcp"
bearer_token_env_var = "FIRECRAWL_API_KEY"
enabled = true
键里是变量名。变量必须在启动 Codex 的那个进程里,Codex 不读 .env。不要和已经 mcp login 的 OAuth 写在同一张表。OAuth 返回 401 先重新 codex mcp login firecrawl;对 OAuth 地址发一条未登录请求,401 是预期。API key 路径 401 时,先换启动 Codex 那个进程里的密钥,再新开会话。
只要本机进程或自建 Firecrawl API 才跑本地 stdio。官方要求 Node.js 22+。密钥用 env_vars 转发,不要抄旧页把 fc- 写进 env 表:
[mcp_servers.firecrawl]
command = "npx"
args = ["-y", "firecrawl-mcp"]
env_vars = ["FIRECRAWL_API_KEY"]
enabled = true
自建 API 再加 FIRECRAWL_API_URL。本地 HTTP 是 http://localhost:3000/mcp,那是给已经起好的进程用的,不是托管 /v2/mcp。Windows 上 spawn npx ENOENT 时,把 command 改成 where npx 看到的 npx.cmd 绝对路径。
文献检索技能是可选的:官方写 npx skills add firecrawl/skills@firecrawl-research-index。那是 Agent Skills 安装器,可能改所有检测到的客户端,不是 Codex /plugins 主路径。不确定就别装。
不要做这些:
- 不要把
https://mcp.firecrawl.dev/v2/mcp-oauth当网页打开。 - 不要把 API key 拼进 URL 或
Authorization: Bearer写进http_headers。 - 不要抄
mcpServersJSON,也不要抄 Claude 的--transport http。 - 不要套
mcp-remote。 - 不要给它
required = true挂全局。 - 不要一上来
--yolo。抓站结果会进上下文。
网页 Cloud 不读 ~/.codex/config.toml。改完新开会话。用 codex mcp get firecrawl 看传输是 streamable_http。会话里 /mcp 应显示已连接。