AI & MCP

Prompt templates in MCP: what they are and why a catalogue ships none

An MCP prompt template is a message pattern the user picks, with arguments filled by the client. It is not a tool, and a read-only catalogue ships none.

Key points

  • A template is a name, a description, declared arguments and the messages that prompts/get returns.
  • The user chooses: the model never sees the template until the client fills it in.
  • The EneUI server returns an empty list and prompts/get answers -32601.

An MCP prompt template is a message pattern a server publishes and the user picks, with arguments filled in by the client. It is not a model function: it is a shortcut for a recurring request.

Two methods, one purpose

The specification defines prompts/list, which lists name, description and arguments, and prompts/get, which returns the filled messages. The user starts the exchange, not the model.

  • List: the client builds a menu or a slash command from the available templates.
  • Fill: the declared arguments become text inside the messages.
  • Return: prompts/get hands back messages, not a search result.

Why EneUI answers with an empty list

The catalogue is read-only and its recipes live in the documentation: the tool sequence is at /agents and the agent-skill.md file repeats it for a client that makes a single fetch. One more template would be a copy kept in sync by hand.

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"}}'

The first call returns {"prompts":[]}; the second returns -32601, because prompts/get is not in the dispatcher. The initialize response declares the tools capability only, so no client expects more.

When a template pays

It pays when the steps are fixed and only the arguments change, for example “review this component” with a name and a library. If the recipe depends on the record, you need a tool that reads the record, not text to adapt.

The template is untrusted text

A prompt's content arrives from the server. A server can insert instructions the user never wrote, and the client should show them before handing them to the model: trust sits with human review, not with the template.

The EneUI catalogue

The records a template would cite are verifiable: forms, heroes and the icons-tabler abacus icon, MIT licence. That is 111,985 components, 1,556 blocks and 12,808 icons read on 1 November 2026.

The limitation

A server without prompts leaves the client with an empty palette: no error, no warning, just []. The protocol does not require prompts, so an empty list complies and tells the reader nothing.

Where to continue

The primitives are explained in what MCP is; the comparison with resources is in resources and tools in MCP; the tool schema is in designing an MCP tool. The hand-written server is in how to build an MCP server.

Frequently asked questions

What is the difference between a prompt and a tool in MCP?

A tool returns data when the model asks; a prompt returns messages when the user chooses it. The first performs an action, the second prepares a request.

Why does EneUI expose no prompts?

Because its recipes are documentation, not data: the tool sequence lives at /agents and in agent-skill.md, where it is easier to update than a replicated template.

Can a client work without prompts?

Yes. The prompts capability is optional; a client that receives an empty list shows an empty menu and keeps using the tools.

Can prompts carry dangerous instructions?

Yes. The text comes from the server and can include instructions the user never wrote, so the client should show it before sending.

What does prompts/get answer on EneUI?

-32601, method not found. The dispatcher implements prompts/list and returns an empty list, but it does not implement reading.