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_headersenv 或 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 会把密钥展开写进配置。
  • 不要抄 mcpServers JSON 或 --transport http
  • 不要和 https://langfuse.com/api/mcp 那台无鉴权文档 MCP 搞混。
  • 不要给它 required = true 挂全局。
  • 不要一上来 --yolo。写 prompt / 改 dataset 都是项目数据。

网页 Cloud 不读 ~/.codex/config.toml。改完新开会话。用 codex mcp get langfuse 看传输是 streamable_http。

来源