Langfuse 产品 MCP 用 Basic 头,不要抄 http_headers 里的 token
产品地址是 cloud.langfuse.com/api/public/mcp,要项目级 pk/sk 的 Basic Auth。Codex 用 env_http_headers,不要把 token 写进 http_headers。bearer_token_env_var 会发 Bearer,对这台不对口。不是 langfuse-docs。
Langfuse 产品 MCP 管项目里的 traces / prompts / datasets,不是文档检索。官方给 Codex 的示例把 Authorization: Basic … 写进 http_headers,不要抄进仓库。
能跑 shell 时,官方更推荐 Agent Skill + npx langfuse-cli。仍要协议工具、或不想把完整 CLI 交给模型时,再接这台 Streamable HTTP。
EU 默认:
[mcp_servers.langfuse]
url = "https://cloud.langfuse.com/api/public/mcp"
enabled = true
[mcp_servers.langfuse.env_http_headers]
Authorization = "LANGFUSE_MCP_AUTHORIZATION"
美区换成 https://us.cloud.langfuse.com/api/public/mcp,日本 jp.cloud.langfuse.com,HIPAA hipaa.cloud.langfuse.com。自建用你自己的 HTTPS 域名加 /api/public/mcp。表名用 langfuse,不要和文档那张 langfuse-docs 写成一台。
鉴权是 Basic Auth,不是 Bearer,也不是 OAuth。不要 codex mcp login langfuse,也不要 bearer_token_env_var:那条会发出 Authorization: Bearer …,这里会 401。
密钥必须是项目级的 Public Key + Secret Key(pk-lf- / sk-lf-),组织级或纯 Bearer 不行。先在启动 Codex 的那个进程里准备整段头值(含 Basic 前缀):
export LANGFUSE_MCP_AUTHORIZATION="Basic $(printf '%s:%s' "$LANGFUSE_PUBLIC_KEY" "$LANGFUSE_SECRET_KEY" | base64 | tr -d '\n')"
键里是变量名。Codex 不读 .env。变量缺失时这颗头会被静默丢掉,请求仍会发出去,随后 401。不要把 pk-lf- / sk-lf- 写进 http_headers、env 或 URL。
连上后让它 list all prompts in the project,应走 listPrompts。默认带读写工具。只要读时用 enabled_tools 做允许名单,不要把写工具留给 --yolo。
自建若 403,多半是反代丢掉了公开 Host;那是服务端 LANGFUSE_MCP_ALLOWED_HOSTS,不是 Codex 配置键。
不要做这些:
- 不要抄官方 TOML 把 Basic token 写进
http_headers。 - 不要抄 Claude 的
--header "Authorization: Basic …":shell 会把密钥展开写进配置。 - 不要抄
mcpServersJSON 或--transport http。 - 不要和
https://langfuse.com/api/mcp那台无鉴权文档 MCP 搞混。 - 不要给它
required = true挂全局。 - 不要一上来
--yolo。写 prompt / 改 dataset 都是项目数据。
网页 Cloud 不读 ~/.codex/config.toml。改完新开会话。用 codex mcp get langfuse 看传输是 streamable_http。