fix(eng): count plugin MCP servers in both catalogs - #2706
Open
AClerbois wants to merge 2 commits into
Open
Conversation
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.
Contributor
There was a problem hiding this comment.
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.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
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.
Problem
Plugin item counts are wrong in both catalogs, in two different ways.
eng/update-readme.mjsnever counted MCP servers at all — it summed agents, skills and extensions only.eng/generate-website-data.mjsdid count them, but only whenplugin.jsondeclaresextensions["com.github.awesome-copilot"].mcpServers.That leaves two gaps:
context-maticis in exactly this state today: its.mcp.jsonis the centrepiece of the plugin, and it is invisible to both catalogs.awesome-copilotreads 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.mjskeeps only thecom.github.copilotnamespace when building the served manifest, socom.github.awesome-copilot.mcpServersis stripped at publish time and never reaches clients. It only ever influenced these counters.Change
Resolve the MCP config in this order:
extensions["com.github.awesome-copilot"].mcpServersmcp.json— the name the Agent Plugin spec defines.mcp.json— the legacy name still used in this repoThe first readable file wins, so there is no double counting. Supporting both filenames means counts stay correct while plugins migrate from
.mcp.jsontomcp.json, rather than breaking on whichever convention a given plugin has adopted.Both generators share the same resolution order, so the catalogs agree.
Effect
awesome-copilotcontext-maticNo plugin files are modified — only the two generators and the regenerated
docs/README.plugins.md..github/plugin/marketplace.jsonis unaffected, as it carries no item counts.Verification
npm run plugin:validate— all 93 plugins and the external catalog validnpm run buildis idempotent: a second run produces no further changes, which is whatvalidate-readmechecksdocs/README.plugins.mdagainstwebsite/public/data/plugins.jsonfor every local plugin — no divergence remainsNotes for maintainers
This deliberately stays out of the way of the
mcp.jsonuplift 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.