agid-llm-ui MCP Server

agid-llm-ui MCP Server

MCP server to help AI assistants generate Italian PA user interfaces by providing components, recipes, accessibility rules, and validation for Bootstrap Italia and Web Components.

Category
访问服务器

README

agid-llm-ui — un design system LLM-first per la PA italiana

LLM-first: un esperimento per aiutare gli assistenti AI (Claude, Cursor, Copilot…) a generare interfacce della PA più vicine alle linee guida di design AgID, cercando di tenere conto dell'accessibilità. I componenti e i materiali per gli LLM sono generati da un'unica fonte machine-readable.

LLM-first — an experiment to help AI assistants generate Italian-PA UIs closer to the AgID design guidelines. Components and LLM-facing materials are generated from a single machine-readable spec.

License: EUPL 1.2 status non ufficiale componenti <!-- Dopo il primo push, abilita anche il badge CI: CI -->

🔗 Galleria + demo (GitHub Pages): https://andreaderuvo.github.io/agid-llm-ui/ · home di un Comune generata col design system


Da dove nasce

Il punto di partenza sono alcune caratteristiche di Bootstrap Italia (il design system ufficiale della PA), osservate senza pretese:

  • il design e l'accessibilità sono ottimi, ma il markup è verboso e molte regole stanno nella documentazione, non nei componenti;
  • i vari kit di framework (React, Angular, web components) sono mantenuti a mano, senza un'unica fonte machine-readable, quindi tendono a rincorrere;
  • gli assistenti AI non conoscono Bootstrap Italia e spesso generano markup generico e non conforme.

Questo progetto è un esperimento per provare un approccio diverso: descrivere i componenti in una spec machine-readable e generare da lì gli artefatti — inclusi quelli che aiutano un LLM a produrre UI più conformi. Non pretende di essere completo né una soluzione definitiva: è un punto di partenza aperto ai contributi.

Come funziona, in breve: da sota/spec/ un piccolo codegen produce i Web Components (con l'accessibilità e il comportamento — focus, tastiera, stato — gestiti da macchine a stati Zag.js), i wrapper tipizzati, il CSS dai token, la documentazione, i contratti di validazione, la galleria e i dati per il server MCP. Cambiando la spec, gli artefatti si riallineano.

Note più estese: VISION.md.

⚠️ Progetto community, non ufficiale. Non affiliato né approvato da AgID o Designers Italia. Costruito sopra Bootstrap Italia (licenza BSD-3-Clause) nel rispetto della relativa attribuzione. "AgID" è usato solo in senso descrittivo; il prefisso it- è provvisorio.

🤖 Realizzato in gran parte in vibe coding, insieme a un assistente AI — coerente con lo spirito LLM-first del progetto. Da leggere e verificare con spirito critico, non come codice "pronto per la produzione".

Perché è più integrabile con gli LLM dei kit AgID originali

I kit ufficiali (Bootstrap Italia, design-react-kit…) sono pensati per sviluppatori umani. Rispetto a quelli, qui l'LLM parte avvantaggiato per ragioni concrete:

  1. La conoscenza arriva all'LLM in forma machine-readable. MCP, llms.txt e i contratti mettono componenti e regole nel contesto del modello. I kit originali hanno solo documentazione per umani: l'LLM deve "ricordarsela" e spesso sbaglia.
  2. Molto meno boilerplate. <it-dialog> è un tag; l'equivalente in Bootstrap Italia sono ~20 righe di div annidati con classi. Meno token da generare = meno errori.
  3. Accessibilità incapsulata (corretta per costruzione). L'LLM non può "dimenticare" gli ARIA/focus/tastiera: li fornisce il componente (macchine Zag). Col markup grezzo l'a11y è convenzione, e i modelli la perdono.
  4. Un solo tag, tutti i framework. <it-…> funziona in React/Vue/Angular/HTML: l'LLM non deve scegliere fra react-kit, angular-kit o vanilla.
  5. Loop di verifica. validate_snippet fa autocorreggere l'LLM contro il design system — non esiste nei kit originali.

In una riga: i kit originali si possono usare con un LLM, ma glielo devi spiegare ogni volta; qui la spiegazione è integrata e verificabile.

Per chi sviluppa — cosa devi fare, in pratica

Scegli lo scenario che ti riguarda.

A) Voglio che l'AI mi generi UI conformi (Cursor, Claude, VS Code…)

  1. Builda una volta:
    git clone https://github.com/andreaderuvo/agid-llm-ui.git
    cd agid-llm-ui && npm install && npm run build
    
  2. Collega il server MCP al tuo editor → vedi Usare il server MCP.
  3. Chiedi in italiano, es. «pagina di un servizio comunale conforme ad AgID con un form e una tabella». L'assistente usa i tool e genera markup conforme, preferendo i tag <it-…>.

B) Voglio solo i componenti nel mio sito/app (anche senza AI)

I componenti sono Web Components: HTML puro, funzionano in React, Vue, Angular o HTML.

npm install && npm run build && node sota/codegen.mjs
# poi prendi da sota/dist/ : it-tokens.css, it-components.js, it-behavioral.bundle.js

Nella tua pagina:

<link rel="stylesheet" href="it-tokens.css">
<script defer src="it-components.js"></script>
<script defer src="it-behavioral.bundle.js"></script>

<it-button variant="success">Invia</it-button>
<it-dialog trigger="Apri" title="Conferma">Vuoi procedere?</it-dialog>
<it-datatable page-size="10" searchable> …una &lt;table&gt; nativa… </it-datatable>

ℹ️ Pubblicazione su npm/CDN: prevista, non ancora fatta. Per ora si builda in locale e si prendono i file da sota/dist/.

C) Uso OpenAI o un altro strumento

  • Se parla MCP (OpenAI Agents SDK / Responses API, VS Code Copilot…): fai come in A.
  • Altrimenti: usa i componenti come in B e passa sota/dist/llms.txt come contesto all'LLM.

Non sai da dove partire? Apri la galleria sota/dist/index.html: per ogni componente trovi anteprima dal vivo, props e codice da copiare.

Cosa contiene

  • 49 componenti verificati (render + accessibilità), ~20 interattivi su Zag (dialog, menu, select, combobox, datepicker, tabs, toast, steps, slider, datatable…) + presentazionali (card, table, header, footer, breadcrumb…).
  • Server MCP con 9 tool — serve sia il markup Bootstrap Italia grezzo (v1) sia i Web Components AI-first (v2):
Tool A cosa serve
list_components / search_component / get_component_code Componenti Bootstrap Italia (markup + a11y)
list_recipes / get_page_recipe Ricette di pagina dei modelli PA
get_accessibility_rules Regole WCAG 2.1 AA / AgID
list_webcomponents / get_webcomponent Componenti AI-first universali (consigliati)
validate_snippet Valida uno snippet e suggerisce i tag conformi (loop di autocorrezione)

Architettura: una fonte → tutti gli artefatti

sota/spec/  (design token DTCG + manifest dei componenti = fonte unica)
   │  node sota/codegen.mjs
   ├─ Web Components (a11y incapsulata, Zag dentro)
   ├─ wrapper React tipizzati
   ├─ CSS dai token
   ├─ llms.txt            (doc per LLM)
   ├─ contracts.json      (validazione → MCP)
   ├─ galleria (GitHub Pages)
   └─ dati per il server MCP

Dettagli: VISION.md.

Installazione

git clone https://github.com/andreaderuvo/agid-llm-ui.git
cd agid-llm-ui
npm install
npm run build            # compila il server MCP
node sota/codegen.mjs    # genera componenti, galleria, llms.txt, contratti

Usare il server MCP

MCP è uno standard aperto: questo server funziona con qualsiasi client compatibile — Claude (Desktop/Code), Cursor, VS Code (GitHub Copilot agent), Windsurf, Cline, Zed, JetBrains AI… Non è legato a un solo editor.

Provalo con l'Inspector:

npm run inspect

Claude Code:

claude mcp add agid-llm-ui -- node /percorso/assoluto/agid-llm-ui/dist/index.js

Cursor / Claude Desktop / altri client — aggiungi al file di configurazione MCP:

{
  "mcpServers": {
    "agid-llm-ui": {
      "command": "node",
      "args": ["/percorso/assoluto/agid-llm-ui/dist/index.js"]
    }
  }
}

Poi, nell'editor: «Crea una pagina di un servizio comunale conforme ad AgID» → l'assistente usa i tool e genera markup conforme, preferendo i Web Components.

Galleria in locale: apri sota/dist/index.html (o servila con un web server statico).

Contribuire

Aggiungere un componente presentazionale = un file spec (sota/spec/components/*.json). Uno interattivo = una macchina Zag + un piccolo Web Component. Vedi CONTRIBUTING.md.

Roadmap

  • [x] Catalogo Bootstrap Italia (~50 componenti)
  • [x] validate_snippet (loop di conformità)
  • [x] llms.txt generato dalla spec
  • [x] Galleria + demo (mini-sito comunale) su GitHub Pages
  • [x] Selettore lingua IT/EN (i18n) e color theming live
  • [x] Demo PWA (installabile / offline)
  • [ ] Componenti mancanti: input-ora, transfer, cookiebar, video-player
  • [ ] Rules pack (.cursor/rules, AGENTS.md) + registry.json (shadcn)
  • [ ] Adapter Vue / Angular / Svelte generati dalla spec
  • [ ] render_check (screenshot headless → verifica visiva) nel loop MCP
  • [ ] Submission al catalogo Developers Italia

Riferimenti

Bootstrap Italia · Designers Italia · Zag.js · Model Context Protocol

Licenza

EUPL-1.2 — la licenza raccomandata per il software della PA europea.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选