Collapse duplicate MCP surfaces across host variants #2
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
| name: Validate catalog | |
| # Blocks a PR that introduces a duplicate surface — the same server listed twice | |
| # under cosmetic host variants (slack.com/mcp vs mcp.slack.com/mcp) or two labels | |
| # for one endpoint. Scoped to that failure class via --fail-on, so the 700+ | |
| # pre-existing data-quality findings stay non-blocking (still printed). | |
| on: | |
| pull_request: | |
| paths: | |
| - "domains/**" | |
| - "scripts/batch/**" | |
| - "src/lib/dedup.ts" | |
| - ".github/workflows/validate-catalog.yml" | |
| jobs: | |
| duplicates: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| - name: Install dependencies | |
| run: bun install --frozen-lockfile | |
| - name: Dedup unit tests | |
| run: bun test src/lib/dedup.test.ts | |
| # The validator pulls in the catalog seed (output/catalog-seeds.json), a | |
| # gitignored generated file. normalize regenerates it from domains/. | |
| - name: Generate catalog data | |
| run: bun run normalize | |
| - name: Validate catalog for duplicate surfaces | |
| run: bun run validate:duplicates |