Inventory every built-in remote MCP entry for #986 Phase 1 - #1515
Open
KristianYe wants to merge 1 commit into
Open
KristianYe wants to merge 1 commit into
KristianYe wants to merge 1 commit into
Conversation
Replace the 231-row probe appendix in docs/MCP-CATALOG-STATUS.md with the full inventory the #986 plan asks for: all 288 entries with auth, provenance, category, Featured flag, what an automated smoke could do with the entry (yes / key-fixture / oauth-manual / tenant / dead-suspect) and the date and kind of the last verification. The 57 entries the 2026-09-14 discovery probe could not cover (51 api_key, the four third-party platforms, two self-hosted templates) were swept on 2026-09-16: an MCP initialize with no key, the same with an invalid key attached the way fleet attaches a real one, and fleet's own add-time validation replayed with that key. New findings recorded in the audit table: F14 — 25 of the 51 api_key vendors accept an invalid key through the add-time check (initialize + tools/list) and reject it only at the first tool call; F15 — 19 api_key entries also publish OAuth protected-resource metadata; C10 — Composio's documented URL redirects; C11 — Synter Ads' URL serves an HTML page (the one dead-suspect entry); V4 — two docs_url links answer 403/500 to a plain GET. docs/MCP-CATALOG.md now says the add-time key check proves the key only where the vendor checks it at the handshake; docs/README.md names the inventory. Docs only; no catalog data or code changes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed, and why
#986's plan starts with an inventory: a matrix of every built-in remote MCP entry with its auth, provenance, category, Featured flag, whether CI could exercise it, and when it was last verified. Until now the record (
docs/MCP-CATALOG-STATUS.md, from #1006) covered only the 231 official OAuth, tenant and open entries the discovery probe could reach. This PR replaces that appendix with the full 288-row inventory and classifies each entry for Phase 2 (yes12 ·key-fixture53 ·oauth-manual182 ·tenant40 ·dead-suspect1).To fill the missing 57 rows (51
api_key, the four third-party platforms, two self-hosted templates), each was swept on 2026-09-16 with three checks: an MCPinitializewith no key, the same with an invalid key attached exactly the way fleet attaches a real one, and fleet's own add-time validation (remotemcp.probeServer: initialize + tools/list over the SSRF-safe client) replayed with that key. The third-party OAuth entries went throughmcpoauth.Discover; everydocs_urlwas fetched.Five findings are added to the audit table:
docs/MCP-CATALOG.mdnow says the check proves the key only where the vendor checks it at the handshake./mcp; fleet refuses redirects. Needs a real server id before the catalog changes.docs_urlanswer 403 / 500 to a plain GET (bot walls, most likely).Docs only. No catalog data or code changes; no operator action.
How you verified it
mcpoauth.CanonicalResourceURI/Discover/SafeHTTPClient, and a replay ofremotemcp.probeServerthroughinternal/mcpwith a bogus key); the raw JSONL outputs are kept off-repo with the Test oauth flow with official MCPs #1006 audit. Results: all 51 api_key endpoints alive; 26 reject the bogus key at the handshake, 25 accept it; Zapier and Make discover cleanly.git diff --checkis clean.make lint/make testis exercised by a docs-only diff; not run.Scope and deviations
Shipped: the Phase 1 matrix with the columns the issue lists, plus a probe-verdict and notes column carried over from the 2026-09-14 appendix so no information from #1501 is lost. The issue's
can CI hit?vocabulary (yes / oauth-manual / tenant / dead-suspect) gained one value,key-fixture, because "yes (api_key with fixture)" is not true of any entry today — no fixture exists — and saying so is more useful to Phase 2 than folding those 53 rows intoyes.Deferred, on purpose: every fix the findings point at (F14 add-time check, F15 auth re-typing, C10/C11 catalog data, V4 links) — Phase 2/4 work, each its own PR when asked. The helper tools are not committed; Phase 2's
scripts/mcp-catalog-lint.shis the place for a repo-owned checker.they become (there is no changelog file — ADR-0061): they prefill the
squash commit message, which
release.ymlpublishes as the releasenotes, with breaking changes and operator actions stated plainly
docs/<FEATURE>.md) added, if this ships a feature — n/a, docs onlydocs/adr/, if this adds, weakens orreverses an invariant — required in the same PR — n/a
🤖 Generated with Claude Code