Skip to content

fix(mcp): never 402 the MCP endpoint (0.6.3) - #94

Merged
ralyodio merged 1 commit into
masterfrom
fix/mcp-open-path
Nov 11, 2026
Merged

ralyodio merged 1 commit into
masterfrom
fix/mcp-open-path

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

claude.ai's connector submission failed with "Couldn't register with p0dcasters's sign-in service". The server is no-auth (openmcp.json says auth: none), but the x402 crawl gateway answers /api/mcp 402 for training UA tokens (anthropic-ai, ClaudeBot), bare Chrome/ strings with no Sec-Fetch-Mode, and so on. A connector client reads a non-2xx without WWW-Authenticate as needing sign-in, finds no OAuth metadata (all 404), and DCR fails.

  • /api/mcp added to gateway openPaths (/.well-known/ already was)
  • per-caller MCP budget in lib/throttle.ts unchanged (300/min)
  • tests: MCP endpoint never sold for anthropic-ai/ClaudeBot/spoofed Chrome/Lightpanda; /.well-known never 402

🤖 Generated with Claude Code

Connector clients read a 402/403 with no WWW-Authenticate as 'needs
sign-in', find no OAuth metadata, and fail. claude.ai's custom-connector
submission hit 'Couldn't register with p0dcasters's sign-in service'.
/api/mcp is now an open path; its throttle budget is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

0 finding(s) in the 3 file(s) this pull request changes.

Nothing in the files this pull request changes.

46 pre-existing finding(s) elsewhere in the repository — **HIGH**: 3 | **MEDIUM**: 37 | **LOW**: 6

Not introduced by this pull request.

Severity Rule Location
HIGH secret-database-url .github/workflows/ci.yml:28
HIGH js-ssrf-outbound-request public/sw.js:45
HIGH js-ssrf-outbound-request src/app/api/audio/route.ts:34
MEDIUM sql-template-interpolation scripts/build_live.py:16
MEDIUM sql-template-interpolation scripts/build_live.py:28
MEDIUM sql-string-concatenation scripts/export_indie.py:221
MEDIUM sql-template-interpolation scripts/load_directory.mjs:84
MEDIUM sql-template-interpolation scripts/load_directory.mjs:112
MEDIUM sql-template-interpolation scripts/load_directory.mjs:173
MEDIUM js-unescaped-html-sink src/app/about/page.tsx:101
MEDIUM sql-template-interpolation src/app/category/[category]/page.tsx:62
MEDIUM js-unescaped-html-sink src/app/category/[category]/page.tsx:75
MEDIUM sql-template-interpolation src/app/language/[lang]/page.tsx:64
MEDIUM sql-template-interpolation src/app/language/[lang]/page.tsx:78
MEDIUM js-unescaped-html-sink src/app/language/[lang]/page.tsx:91
MEDIUM js-unescaped-html-sink src/app/layout.tsx:153
MEDIUM sql-template-interpolation src/app/networks/[slug]/page.tsx:47
MEDIUM sql-template-interpolation src/app/networks/[slug]/page.tsx:49
MEDIUM js-unescaped-html-sink src/app/networks/[slug]/page.tsx:62
MEDIUM sql-template-interpolation src/app/networks/page.tsx:23

…and 26 more; the full set is in the SARIF artifact.

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit c0c6bd4 into master Nov 11, 2026
5 checks passed
@ralyodio
ralyodio deleted the fix/mcp-open-path branch November 11, 2026 21:21
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