A database server should let the model run queries on demand, offer the schema as context the application attaches, and provide a worked-examples template users pick from a menu. Which primitive mapping fits?
Select an answer to reveal the explanation.
Short Explanation
Match each job to who's in the driver's seat. The model drives tools, the application drives resources, and the user drives prompts. Once you ask "who triggers this?", the mapping falls right out.
Full Explanation
MCP's three server primitives differ by who controls them. Tools are model-controlled: the language model discovers and invokes them, so query execution on demand belongs in a tool, which can also validate inputs and enforce access controls. Resources are application-controlled context addressed by URI, so a schema the application attaches belongs in a resource. Prompts are user-controlled templates the user explicitly selects, typically from a menu or slash command, so a worked-examples template belongs in a prompt. Making query execution a resource fails because resources are read for context by the application; they are not actions the model invokes with arguments. Making the schema a tool shifts it to model control, contradicting the requirement that the application attach it. Making query execution a prompt fails because prompts return messages for the conversation; they do not execute operations. Turning the examples into a tool also removes the user's menu choice. Putting the schema in a prompt and the examples in a resource swaps the control models, so the user would have to invoke the schema while the application attaches the template. Exam caveat: a prompt can embed or link the schema resource for context. Operational check: confirm tools/list shows the query tool, resources/list shows the schema, and prompts/list shows the template.