AI & MCP

Prompt template in MCP: cosa sono e perché un catalogo non li espone

Un prompt template in MCP è un modello di messaggi che il server pubblica e l'utente sceglie, con argomenti compilati dal client. Non è una funzione del modello.

In sintesi

  • Un template è composto da nome, descrizione, argomenti dichiarati e messaggi restituiti da prompts/get.
  • La scelta spetta all'utente: il modello non vede i template finché il client non li compila.
  • Il server EneUI restituisce una lista vuota e prompts/get risponde -32601.

Un prompt template in MCP è un modello di messaggio che il server pubblica e l'utente sceglie, con gli argomenti compilati dal client. Non è una funzione del modello: è una scorciatoia per una richiesta ricorrente.

Due metodi, un solo uso

La specifica prevede prompts/list, che elenca nome, descrizione e argomenti, e prompts/get, che restituisce i messaggi già compilati. La scelta parte dall'utente, non dal modello.

  • Elencare: il client costruisce un menu o un comando slash con i template disponibili.
  • Compilare: gli argomenti dichiarati diventano testo dentro i messaggi.
  • Restituire: prompts/get consegna messaggi, non un risultato di ricerca.

Perché EneUI risponde con una lista vuota

Il catalogo è in sola lettura e le sue ricette stanno nella documentazione: la sequenza degli strumenti è su /agents e il file agent-skill.md la ripete per un client che fa un solo fetch. Un template in più sarebbe una copia da tenere allineata a mano.

curl -s https://ui.eneawork.it/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"prompts/list"}'

curl -s https://ui.eneawork.it/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"prompts/get","params":{"name":"review"}}'

La prima chiamata restituisce {"prompts":[]}; la seconda -32601, perché prompts/get non è nel dispatcher. La risposta initialize dichiara solo la capacità tools, quindi nessun client si aspetta altro.

Quando un template conviene

Conviene quando i passi sono fissi e cambiano solo gli argomenti, per esempio «rivedi questo componente» con nome e libreria. Se la ricetta dipende dal record, serve un tool che legga il record e non un testo da adattare.

Il template è testo non fidato

Il contenuto di un prompt arriva dal server. Un server può inserire istruzioni che l'utente non ha scritto, e il client dovrebbe mostrarle prima di consegnarle al modello: la fiducia non è nel template, è nella revisione umana.

Il catalogo EneUI

I record che un template citerebbe sono verificabili: form, hero e l'icona abacus della libreria icons-tabler, licenza MIT. Sono 111.985 componenti, 1.556 blocchi e 12.808 icone letti il 1 novembre 2026.

La limitazione

Un server senza prompt lascia il client con una tavolozza vuota: nessun errore, nessun avviso, solo []. Il protocollo non richiede prompt, quindi la lista vuota è conforme e insieme poco informativa.

Dove continuare

Le primitive sono spiegate in che cos'è MCP; il confronto con le resource è in resources e tools in MCP; lo schema dei tool è in progettare un tool MCP. Il server scritto a mano è in come costruire un server MCP.

Domande frequenti

Che differenza c'è tra prompt e tool in MCP?

Il tool restituisce dati su richiesta del modello; il prompt restituisce messaggi su scelta dell'utente. Il primo esegue un'azione, il secondo prepara una richiesta.

Perché EneUI non espone prompt?

Perché le sue ricette sono documentazione, non dati: la sequenza dei tool sta su /agents e in agent-skill.md, dove è più facile da aggiornare di un template replicato.

Un client può funzionare senza prompt?

Sì. La capacità prompts è opzionale; un client che riceve una lista vuota mostra un menu vuoto e continua a usare i tool.

I prompt possono contenere istruzioni pericolose?

Sì. Il testo arriva dal server e può includere istruzioni non scritte dall'utente, quindi il client dovrebbe mostrarlo prima dell'invio.

Cosa risponde prompts/get su EneUI?

-32601, metodo non trovato. Il dispatcher implementa prompts/list e restituisce una lista vuota, ma non implementa la lettura.