Skip to content

Send the duckdb-mcp Bearer token from headless runs - #161

Merged
cboettig merged 2 commits into
mainfrom
headless-mcp-auth-token
Nov 7, 2026
Merged

cboettig merged 2 commits into
mainfrom
headless-mcp-auth-token

Conversation

@cboettig

@cboettig cboettig commented Nov 7, 2026

Copy link
Copy Markdown
Member

Since 2026-11-07 the public MCP endpoints (duckdb-mcp, dev-duckdb-mcp, experimental-duckdb-mcp, ca30x30-mcp) return 401 without Authorization: Bearer <token> (SchmidtDSE/geo-query#453). Every matrix cell therefore exited rc=1 within seconds.

  • run.js reads MCP_AUTH_TOKEN (or config.mcp_auth_token) and sends it as a Bearer header. The token is never logged or written to the transcript. A 401 now exits 3 with a clear message.
  • matrix-job.yaml mounts the token from Secret duckdb-mcp-auth (key MCP_AUTH_TOKEN, optional).
  • The CHANGELOG and headless/README.md document the variable.

Most headless benchmarking is moving to geo-agent-benchmark (#91). That repo's runner needs the same token.

Test

One-cell matrix Job hmx-geo-agent-template-mcpauth-test-20261107-022418 with PROXY_BRANCH=headless-mcp-auth-token, MCP_URL=https://duckdb-mcp.nrp-nautilus.io/mcp (mcp-data-server v0.9.2), model qwen3. The cell completed in 70 s with 5 tool calls (get_schema, query), no error and no 401.

The public duckdb-mcp endpoints require a token since geo-query#453, and the
runner had no way to send one, so every cell exited rc=1 within seconds.
run.js reads MCP_AUTH_TOKEN (or config.mcp_auth_token) and passes it to the
MCP client as a Bearer header; it is never logged. A 401 now exits 3 with a
clear message instead of an unexplained crash. The matrix Job mounts the token
from the duckdb-mcp-auth Secret (optional).
@cboettig
cboettig merged commit ca08d89 into main Nov 7, 2026
1 check passed
@cboettig
cboettig deleted the headless-mcp-auth-token branch November 7, 2026 05:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant