feat: add fluentui-blazor plugin bundling the skill and the official MCP server - #2675
feat: add fluentui-blazor plugin bundling the skill and the official MCP server#2675AClerbois wants to merge 11 commits into
Conversation
Bundle the existing skills/fluentui-blazor skill with the official Fluent UI Blazor MCP server (NuGet: Microsoft.FluentUI.AspNetCore.McpServer, launched via dnx) so users get usage guidance plus live component, enum, icon, documentation, and v4-to-v5 migration lookup from a single plugin install. The skill is referenced, not copied; skills/fluentui-blazor/ is unchanged. Regenerated marketplace.json and docs/README.plugins.md via npm run build.
🔒 PR Risk Scan ResultsScanned 4 changed file(s).
✅ No matching risk patterns were detected in changed files.
|
There was a problem hiding this comment.
Pull request overview
Adds a curated Fluent UI Blazor plugin combining the existing skill with the official MCP server.
Changes:
- Adds plugin metadata, documentation, and MCP configuration.
- Registers the plugin in generated catalogs.
- Provides component, icon, documentation, and migration tooling.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
plugins/fluentui-blazor/README.md |
Documents installation and usage. |
plugins/fluentui-blazor/plugin.json |
Defines bundled resources and metadata. |
plugins/fluentui-blazor/.mcp.json |
Configures the NuGet MCP server. |
docs/README.plugins.md |
Adds the plugin catalog entry. |
.github/plugin/marketplace.json |
Registers the marketplace package. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
update-readme.mjs summed agents, skills and extensions but ignored composition.mcpServers, while generate-website-data.mjs already counted MCP entries. The README and website catalogs therefore disagreed for any plugin declaring an MCP server. Mirror the website generator logic, including the .mcp.json path form and multi-server files, so both catalogs report the same totals. Affects awesome-copilot (4 to 5 items) and fluentui-blazor (1 to 2 items).
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.
Suppressed comments (1)
plugins/fluentui-blazor/README.md:45
- This claims the server reads documentation from the project's library version, but line 15 correctly explains that it serves the version it was built against and can mismatch the project. Reword this so users do not expect the server to adapt automatically to their referenced package.
- The **MCP server** supplies the facts that go stale — exact parameter names, enum values, the 142+ component surface, and the icon catalog — read from the library version in use rather than recalled.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated no new comments.
Suppressed comments (3)
plugins/fluentui-blazor/README.md:45
- The server does not read documentation from the library version in the user's project. Its documentation is generated at package build time and embedded in the pinned MCP package, which is why line 15 warns that mismatched project versions are inaccurate. Reword this claim so users do not infer that the server adapts automatically to their installed library.
- The **MCP server** supplies the facts that go stale — exact parameter names, enum values, the 142+ component surface, and the icon catalog — read from the library version in use rather than recalled.
plugins/fluentui-blazor/.mcp.json:7
- This pins a v5 release candidate while the bundled skill explicitly targets version 4 (
skills/fluentui-blazor/SKILL.md:15) and includes v4 API examples such as the constructor-free icon syntax at line 64. Installing the plugin therefore gives the agent conflicting instructions for ordinary v5 development. The skill needs to be updated or made version-aware before it is bundled with this v5-only server.
"Microsoft.FluentUI.AspNetCore.McpServer@5.0.0-rc.5-26219.1",
plugins/fluentui-blazor/README.md:14
- This does not describe the command that the plugin actually launches:
.mcp.jsonpins an exact prerelease and adds--yes. With no stable package available, manually running the documented unversioned command may not resolve and cannot reproduce the plugin setup. Refer readers to the pinned configuration instead of presenting a different command.
This issue also appears on line 45 of the same file.
- The plugin starts its bundled MCP server by running `dnx Microsoft.FluentUI.AspNetCore.McpServer`. The first launch downloads the package from nuget.org.
…ugin spec Rename .mcp.json to mcp.json at the plugin root and add the https://agent-plugins.org/schemas/1.0.0/mcp.schema.json reference, matching the Agent Plugin MCP server specification. Drop the manifest mcpServers reference, since clients discover mcp.json without it. Also correct a README claim that the server reads the library version in use. Its documentation is generated at package build time and serves the version it was built against, which is what the Prerequisites section already stated.
…Clerbois/awesome-copilot into feature/fluentui-blazor-plugin
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated no new comments.
Suppressed comments (1)
plugins/fluentui-blazor/plugin.json:29
- The manifest only declares the skill, so
mcp.jsonis not part of the plugin composition. Installation will therefore expose no MCP server despite the plugin description/README, and the generated catalog correctly remains at1 items. Add"mcpServers": "./mcp.json"in this namespace and regenerate the catalog outputs.
"skills": [
"./skills/fluentui-blazor/"
]
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated no new comments.
Suppressed comments (2)
plugins/fluentui-blazor/README.md:14
- This prerequisite shows an invocation that does not match the bundled configuration. Because the package is currently prerelease-only, the unversioned command shown here can fail to resolve, while
mcp.jsonpins the RC package and passes--yes. Document the exact command users will actually run so troubleshooting instructions remain reproducible.
- The plugin starts its bundled MCP server by running `dnx Microsoft.FluentUI.AspNetCore.McpServer`. The first launch downloads the package from nuget.org.
docs/README.plugins.md:65
- This generated row is still stale: the manifest now contributes one skill and one MCP server, and the updated generator computes
2. Commit the output from the updated build so the checked-in catalog agrees with the manifest and website data.
| [fluentui-blazor](../plugins/fluentui-blazor/README.md) | Build Blazor apps with the Microsoft Fluent UI Blazor library. Bundles the fluentui-blazor skill for correct usage patterns (providers, service registration, icons, dialogs, data grid, theming) with the official Fluent UI Blazor MCP server for live lookup of components, parameters, enums, icons, and documentation, plus v4-to-v5 migration guidance. | 1 items | fluentui, blazor, dotnet, components, aspnetcore, mcp, model-context-protocol, migration, icons, theming |
…est reference Re-adding extensions[com.github.awesome-copilot].mcpServers to plugin.json makes the item counter include the bundled MCP server, so the fluentui-blazor row goes from 1 to 2 items. The generated file was not refreshed at the time, which failed the validate-readme check.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated no new comments.
Suppressed comments (1)
plugins/fluentui-blazor/README.md:14
- This prerequisite documents an unversioned launch command, but the bundled configuration actually runs the package pinned to
5.0.0-rc.5-26219.1. That distinction affects reproducibility and which component-library documentation users receive, so show the exact command configured by the plugin.
- The plugin starts its bundled MCP server by running `dnx Microsoft.FluentUI.AspNetCore.McpServer`. The first launch downloads the package from nuget.org.
…i-blazor Clients discover the plugin-root mcp.json on their own, and the com.github.awesome-copilot namespace is stripped from the served manifest by materialize-plugins.mjs, so the field had no effect on the published plugin. Regenerate docs/README.plugins.md in the same commit: the item counter keys off the manifest field, so the row goes back from 2 to 1 item and validate-readme would otherwise fail.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated no new comments.
Suppressed comments (2)
docs/README.plugins.md:65
- The regenerated row is still stale: the new
countMcpServerslogic counts this plugin's one skill plus its one MCP server, so running the updated generator produces2 items, not1 items. Commit the regenerated output so the checked-in catalog matches the build result.
| [fluentui-blazor](../plugins/fluentui-blazor/README.md) | Build Blazor apps with the Microsoft Fluent UI Blazor library. Bundles the fluentui-blazor skill for correct usage patterns (providers, service registration, icons, dialogs, data grid, theming) with the official Fluent UI Blazor MCP server for live lookup of components, parameters, enums, icons, and documentation, plus v4-to-v5 migration guidance. | 1 items | fluentui, blazor, dotnet, components, aspnetcore, mcp, model-context-protocol, migration, icons, theming |
plugins/fluentui-blazor/mcp.json:9
- This pins one specific RC, which contradicts the PR description's documented
dnx Microsoft.FluentUI.AspNetCore.McpServer --yes --prereleasebehavior and its plan to remove--prereleaseat GA. A pin will not pick up later RC or GA releases, while the documented command will. Please decide which update policy is intended and align the manifest and PR documentation.
"Microsoft.FluentUI.AspNetCore.McpServer@5.0.0-rc.5-26219.1",
"--yes"
Drop extensions[com.github.awesome-copilot].mcpServers from plugin.json as requested in review: clients discover the plugin-root mcp.json on their own, and materialize-plugins.mjs strips this namespace from the served manifest, so the field never reached clients. Revert the item-counter change to eng/update-readme.mjs and regenerate. Counting MCP servers is a repo-wide concern and now lives in its own pull request, so this one only adds the plugin.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 5 out of 5 changed files in this pull request and generated no new comments.
Suppressed comments (3)
plugins/fluentui-blazor/plugin.json:28
- This bundles a skill that explicitly targets Fluent UI Blazor v4 (
skills/fluentui-blazor/SKILL.md:15) with a server pinned to5.0.0-rc.5. Users therefore receive version-conflicting guidance despite the plugin advertising correct, version-aware usage. Update the skill for v5 or make it version-aware before shipping this bundle.
"./skills/fluentui-blazor/"
plugins/fluentui-blazor/plugin.json:27
- The composition declares only the skill, so the installer does not bundle
mcp.jsoneven though the plugin description and README promise the MCP server. Declare the MCP configuration here, as the existingawesome-copilotplugin does.
"skills": [
docs/README.plugins.md:65
- After the MCP configuration is declared, this generated count must be 2, but
eng/update-readme.mjs:801-805currently omitscomposition.mcpServers, so rebuilding will continue to emit 1 while website data counts both resources. Count configured MCP servers in the generator and regenerate this row.
| [fluentui-blazor](../plugins/fluentui-blazor/README.md) | Build Blazor apps with the Microsoft Fluent UI Blazor library. Bundles the fluentui-blazor skill for correct usage patterns (providers, service registration, icons, dialogs, data grid, theming) with the official Fluent UI Blazor MCP server for live lookup of components, parameters, enums, icons, and documentation, plus v4-to-v5 migration guidance. | 1 items | fluentui, blazor, dotnet, components, aspnetcore, mcp, model-context-protocol, migration, icons, theming |
What this adds
A new curated plugin,
fluentui-blazor, that bundles two things this repo already relates to but that users currently have to find and wire up separately:skills/fluentui-blazor/skill — referenced, not copied.skills/fluentui-blazor/is untouched by this PR.Microsoft.FluentUI.AspNetCore.McpServer(MIT, maintained in microsoft/fluentui-blazor), declared as a stdio server launched throughdnx.Result: one command gets a working Fluent UI Blazor setup.
Why bundle them
The skill and the MCP server cover different failure modes, and each is noticeably weaker alone:
ServiceLifetime.Transientthrowing,FluentSelectnot behaving likeInputSelect, design tokens needingOnAfterRenderAsync. That's judgement, not lookup.Installed separately, a user typically ends up with a skill that names components the agent then invents parameters for. Bundled, the agent has both the "how to use this library correctly" guidance and a way to check itself.
MCP tools the server contributes:
list_components,search_components,get_component_details,list_categories,list_enums,get_enum_values,get_component_enums,search_icons,list_all_icon_names,get_icon_details,get_icon_usage,list_documentation,search_documentation,get_documentation_topic,get_version_info,check_project_version,get_migration_overview,get_migration_guide,list_component_migrations,get_component_migration.Files
plugins/fluentui-blazor/plugin.json./.mcp.jsonunderextensions["com.github.awesome-copilot"]plugins/fluentui-blazor/.mcp.jsonplugins/awesome-copilot/.mcp.json)plugins/fluentui-blazor/README.md.github/plugin/marketplace.jsonnpm run builddocs/README.plugins.mdnpm run buildNote on the
dnxargs--prereleaseis required today: the package currently publishes only5.0.0-rc.*versions, anddnxdefaults to stable-only, so it would otherwise fail to resolve. We'll drop the flag in a follow-up once5.0.0GA ships — happy to do that on request instead if maintainers prefer to hold the plugin until GA.Alternative: external plugin
As Fluent UI Blazor maintainers we're equally happy to host this as an external plugin via
plugins/external.jsonand the issue-based review workflow, if that's the better fit for a vendor-maintained MCP server. Just say the word and we'll withdraw this PR and open a submission issue instead.Contributing checklist
main(notstaged); PR targetsmainplugin.jsonnameextensions["com.github.awesome-copilot"]; no materialized files or symlinks inplugins/skills/fluentui-blazor/SKILL.md)$schema,name,description,version,keywords,author,repository,licensenpm run plugin:validatepasses — All 94 plugins and the external catalog are validnpm run buildrun; regeneratedmarketplace.jsonanddocs/README.plugins.mdare includedplugins/external.jsonnot modifiedskills/fluentui-blazor/not modified