MCP provides two features that dramatically improve usability for both humans and LLMs: the completion/complete method for autocompletion suggestions, and the _meta field for attaching human-friendly metadata like titles and icons to tools, resources, and prompts.
The completion/complete method allows clients to request autocompletion suggestions for prompt arguments and resource template parameters. When a user starts typing a value, the Host can query the server for valid completions — similar to IDE autocomplete.
// Client requests completions for a prompt argument:
const result = await client.complete({
ref: { type: "ref/prompt", name: "generate_report" },
argument: { name: "department", value: "Sal" }
});
// Server returns: { completion: { values: ["Sales", "Salary Admin"], hasMore: false, total: 2 } }
Servers can also provide completions for resource template parameters, helping users discover valid URIs without memorizing exact patterns.
Every tool, resource, and prompt can include a _meta field with a title property — a human-friendly display name used by Host UIs instead of the machine-oriented identifier.
server.tool(
"search_kb", // Machine name (used in code)
"Search knowledge base articles",
{ query: z.string() },
handler,
{ _meta: { title: "Knowledge Base Search" } } // Human-friendly UI title
);
Hosts like Claude Desktop and Cursor render the title in their UI, making tools more discoverable and user-friendly. The _meta field can also carry icons for tools and resources, providing visual affordances in the Host application's tool picker.