Atlas / MCP servers / arasanirohithreddy / fluent-ui-plugin

fluent-ui-pluginBLOCK

mcp/arasanirohithreddy/fluent-ui-plugin

Agents, skills and MCP tools to build and adopt Microsoft Fluent 2 (Fluent UI 2.0) across Web, native iOS/Android/Windows, Power BI and Power Platform - plus Fluent 1 (v8) support, v8-to-v9 migration and Figma. Works in Copilot CLI, VS Code, Cursor, Claude, Gemini and more.

Verdict
BLOCK
Grade
F
Trust score
57 /100
Exposed tools
29 27r · 2w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
1
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://github.com/ArasaniRohithReddy/fluent-ui-plugin/actions/workflows/ci.yml) [](https://github.com/ArasaniRohithReddy/fluent-ui-plugin/releases/latest) [](LICENSE) [](CONTRIBUTING.md) [](https://github.com/ArasaniRohithReddy/fluent-ui-plugin/discussions)

Agents · Skills · MCP tools that help developers, designers, and UI engineers implement Microsoft Fluent 2 (Fluent UI 2.0) correctly and fast, across Web, Power BI, Power Platform, and native iOS / Android / Windows, from any AI IDE.

🌐 Live site (itself a Fluent UI React v9 app, built with this plugin): [arasanirohithreddy.github.io/fluent-ui-plugin](https://arasanirohithreddy.github.io/fluent-ui-plugin/) · Install & usage guide · Per-host matrix

Version: 1.0.0 · License: MIT · Fluent 2 is the core of everything here: every surface applies the same design language (tokens, Segoe UI type ramp, spacing, corner radius, elevation, motion, accessibility).

Why this exists

Fluent 2 is large and precise: the right component, the right token, the right theme, and accessibility, every time. Doing that by hand is slow and error-prone. fluent-ui turns the official Fluent 2 design system into grounded, executable help: apply the design-language foundations (color, typography, layout, elevation, iconography, motion, shapes, material, content, responsibl

Read from source at commit e3896e509e6bOBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add fluent-ui-plugin-site --env GH_TOKEN=${GH_TOKEN} --env GITHUB_TOKEN=${GITHUB_TOKEN} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "fluent-ui-plugin-site": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "GH_TOKEN": "${GH_TOKEN}",
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}
03

Exposed tools (29)

27 read · 2 write · 0 destructive.

ToolRiskDescription
fluent_accessibility_checklistread
fluent_design_guidanceread
fluent_figma_guidanceread
fluent_generate_coderead
fluent_generate_powerbi_themeread
fluent_generate_themeread
fluent_get_componentread
fluent_get_configread
fluent_get_imagesread
fluent_get_tokenread
fluent_icon_searchread
fluent_init_configread
fluent_list_tokensread
fluent_migration_guidanceread
fluent_native_componentread
fluent_native_guidanceread
fluent_pbir_apply_themewrite
fluent_pbir_auditread
fluent_pbir_normalize_inlineread
fluent_pbir_verifyread
fluent_powerbi_visualsread
fluent_powerplatform_guidanceread
fluent_recallread
fluent_rememberread
fluent_scaffold_pbipread
fluent_search_componentsread
fluent_set_configwrite
fluent_v8_guidanceread
fluent_v8_lookupread
04

Trust audit

BLOCKgrade F · trust 57/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (4 observation(s))
Shell
declared (2 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (18)

CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
skills/fluent-figma/SKILL.md:35
Auth belongs to **the host's OAuth flow** (remote) or **the signed-in Figma desktop session** (local). This plugin writes a URL and a `type` — nothing else. Never ask for, store, cache, proxy, or forw
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
mcp/dist/tools/icons.js:484
description: 'Find the right Fluent 2 system icon and get an export name that actually compiles. Search by what the icon should DEPICT ("trash", "send email", "user") — Fluent icons are literal metaph
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
mcp/src/tools/icons.ts:529
'Find the right Fluent 2 system icon and get an export name that actually compiles. Search by what the icon should DEPICT ("trash", "send email", "user") — Fluent icons are literal metaphors named for
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
skills/fluent-figma/SKILL.md:41
**Local / desktop** — `http://127.0.0.1:3845/mcp`, transport `http`. Figma now calls this niche — "some specific organization and enterprise use cases." Needs the **Figma desktop app running** with **
MEDIUMPrompt injection · prompt.hidden_style · CWE-94, CWE-1427
skills/fluent-v8/SKILL.md:61
- **`<Dialog hidden>` is inverted** — `hidden` defaults to `true`, so pass `hidden={!isVisible}`. `Panel`/`Modal` use `isOpen` (default closed). Renaming `hidden`→`open` in a migration produces an alw
MEDIUMPrompt injection · prompt.hidden_style · CWE-94, CWE-1427
skills/fluent-v8/SKILL.md:91
Check which library you actually have (§1) · call `initializeIcons()` **once** at entry · theme through **`ThemeProvider`**, not `Customizer`, and give `createTheme` **all 50 palette slots** · style a
MEDIUMPrompt injection · prompt.hidden_style · CWE-94, CWE-1427
skills/fluent-v8/references/collisions-and-traps.md:84
1. **`<Dialog hidden>` is inverted.** `hidden` **defaults to `true`** — the dialog is hidden unless you pass `hidden={false}`. `Panel` and `Modal` use `isOpen` (default closed). Getting this backwards
MEDIUMPrompt injection · prompt.hidden_style · CWE-94, CWE-1427
skills/fluent-v8/references/collisions-and-traps.md:89
<Dialog hidden={!isVisible} onDismiss={close}                                  // ✅ inverted
LOWInventory / provenance · inv.hidden_file · CWE-1104
docs/.nojekyll
.nojekyll
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
templates/pbip/FluentReport.Report/.platform
.platform
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
templates/pbip/FluentReport.SemanticModel/.platform
.platform
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
hosts/figma.md:24
| Endpoint | `https://mcp.figma.com/mcp` | `http://127.0.0.1:3845/mcp` |
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
hosts/figma.md:67
Auth: start the `figma` server in the MCP view → browser opens → **Allow Access**. VS Code requires **GitHub Copilot enabled** on the account to use MCP at all. Figma's own doc also shows an optional
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
mcp/package.json
@modelcontextprotocol/sdk, zod, @types/node, typescript
Why it matters. 4 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
site/package.json
@vitejs/plugin-react, vite
Why it matters. 2 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.hide_from_user · CWE-94, CWE-1427
AGENTS.md:50
- **Show, don't just tell:** when the user asks to *see* or get a *link* to a Fluent 2 diagram, anatomy, do/don't example, or Motion video, call `fluent_get_images` (filter by `owner`/`kind`/`type`) a
Why it matters. asks the agent to act without the user's knowledge
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
hosts/figma.md:16
**2. We never handle credentials.** Auth is the **host's** OAuth flow (remote) or the **signed-in Figma desktop session** (local). Write a URL and a `type` — nothing else. Never write an `Authorizatio
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
INFOInventory / provenance · inv.oversize · CWE-1104
mcp/data/fluent-components.json
mcp/data/fluent-components.json
Why it matters. 1056280 bytes not read

Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.

Audited 2026-10-11 · audit v0.4.1 · source sha e3896e509e6bfull audit observations/trust-audit/mcp-server/arasanirohithreddy__fluent-ui-plugin.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11e3896e509e6bBLOCKF57first audit
06

Questions

What is the fluent-ui-plugin MCP server?

Agents, skills and MCP tools to build and adopt Microsoft Fluent 2 (Fluent UI 2.0) across Web, native iOS/Android/Windows, Power BI and Power Platform - plus Fluent 1 (v8) support, v8-to-v9 migration and Figma. Works in Copilot CLI, VS Code, Cursor, Claude, Gemini and more.

What tools does fluent-ui-plugin expose?

29 in total: 27 read-only, 2 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is fluent-ui-plugin safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (57/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does fluent-ui-plugin need?

It reads GH_TOKEN and GITHUB_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does fluent-ui-plugin run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as fluent-ui-plugin-site at 1.2.0.

How current is this page?

The grade is for one exact copy of the source (e3896e509e6b), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement