Skip to content

fix(eng): count plugin MCP servers in both catalogs - #2706

Open
AClerbois wants to merge 2 commits into
github:mainfrom
AClerbois:feature/count-plugin-mcp-servers
Open

fix(eng): count plugin MCP servers in both catalogs#2706
AClerbois wants to merge 2 commits into
github:mainfrom
AClerbois:feature/count-plugin-mcp-servers

Conversation

@AClerbois

Copy link
Copy Markdown
Contributor

Problem

Plugin item counts are wrong in both catalogs, in two different ways.

eng/update-readme.mjs never counted MCP servers at all — it summed agents, skills and extensions only. eng/generate-website-data.mjs did count them, but only when plugin.json declares extensions["com.github.awesome-copilot"].mcpServers.

That leaves two gaps:

  • A plugin that ships a plugin-root config file without the manifest entry has its MCP server counted nowhere. context-matic is in exactly this state today: its .mcp.json is the centrepiece of the plugin, and it is invisible to both catalogs.
  • For plugins that do declare the manifest entry, the two catalogs disagree. awesome-copilot reads 4 items in the README and 5 on the website.

The manifest entry is a poor thing to key off in any case: materialize-plugins.mjs keeps only the com.github.copilot namespace when building the served manifest, so com.github.awesome-copilot.mcpServers is stripped at publish time and never reaches clients. It only ever influenced these counters.

Change

Resolve the MCP config in this order:

  1. An inline object under extensions["com.github.awesome-copilot"].mcpServers
  2. A path given by that same field
  3. A plugin-root mcp.json — the name the Agent Plugin spec defines
  4. A plugin-root .mcp.json — the legacy name still used in this repo

The first readable file wins, so there is no double counting. Supporting both filenames means counts stay correct while plugins migrate from .mcp.json to mcp.json, rather than breaking on whichever convention a given plugin has adopted.

Both generators share the same resolution order, so the catalogs agree.

Effect

Plugin Before After Why
awesome-copilot 4 (README) / 5 (site) 5 / 5 catalogs now agree
context-matic 2 / 2 3 / 3 its MCP server was counted nowhere

No plugin files are modified — only the two generators and the regenerated docs/README.plugins.md. .github/plugin/marketplace.json is unaffected, as it carries no item counts.

Verification

  • npm run plugin:validate — all 93 plugins and the external catalog valid
  • npm run build is idempotent: a second run produces no further changes, which is what validate-readme checks
  • Compared docs/README.plugins.md against website/public/data/plugins.json for every local plugin — no divergence remains

Notes for maintainers

This deliberately stays out of the way of the mcp.json uplift discussed in #2675: it renames nothing, adds no validation, and touches no plugin manifest. It only makes counting correct under both conventions, so it should compose with that work rather than conflict with it. Happy to fold it into the uplift instead if you would rather have it there.

The README generator ignored MCP servers entirely, and the website generator
only counted them when plugin.json declared extensions[com.github.awesome-copilot]
.mcpServers. Plugins that ship a plugin-root config file without that manifest
entry had their MCP server counted nowhere, and the two catalogs disagreed for
plugins that did declare it.

Resolve an explicit manifest reference first, then fall back to a plugin-root
config file, preferring the spec-named mcp.json over the legacy .mcp.json so
counts stay correct while plugins migrate between the two conventions.

Corrects awesome-copilot (4 to 5 items) and context-matic (2 to 3 items). No
plugin files are modified.
@AClerbois
AClerbois requested a review from aaronpowell as a code owner August 18, 2026 18:14
Copilot AI balanced review requested due to automatic review settings August 18, 2026 18:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates both catalog generators to count MCP servers consistently across manifest references and plugin-root configuration files.

Changes:

  • Adds MCP server counting to the README generator.
  • Adds plugin-root MCP config discovery to website data generation.
  • Regenerates affected plugin counts.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
eng/update-readme.mjs Counts MCP servers in README plugin totals.
eng/generate-website-data.mjs Resolves MCP configs for website catalog items.
docs/README.plugins.md Updates affected plugin item counts.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread eng/update-readme.mjs Outdated
Comment thread eng/generate-website-data.mjs Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 18, 2026 18:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

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.

2 participants