[FEATURE] Render MCP tool `title` field in /mcp tool list and tool call headers
Resolved 💬 4 comments Opened Mar 22, 2026 by ArnaudKleinveld Closed Apr 20, 2026
Problem
MCP tools registered with a title field (per the MCP spec) display their raw snake_case registration name in Claude Code's /mcp tool list and tool call headers, not the human-readable title.
For example, an MCP server registers a tool:
mcp.registerTool("create_case_study", {
title: "Create case study",
description: "Submit a case study...",
inputSchema: { ... },
});
Expected in /mcp tool list: Create case study
Actual in /mcp tool list: create_case_study
The MCP SDK (v1.12+) supports title in registerTool and includes it in the tools/list response. Claude Code receives it but doesn't render it.
Why This Matters
- MCP servers following the convention of short, descriptive tool names (like
health,create_process,event_log) display as raw identifiers — functional but not polished - The GitHub MCP server's tools appear more readable because their names happen to be human-parseable, but this is incidental, not by design
- Tool
titleexists in the MCP spec specifically for human-readable display — honoring it would improve UX for all MCP servers that set it
Proposed Behavior
- In
/mcptool list: showtitleif available, fall back to tool name if not - In tool call headers during execution: show
title(with raw name available in verbose mode) - In permission prompts: use
titlefor readability
This is a minimal, non-breaking change — tools without title continue to show the raw name.
Related
- #33004 proposed a broader display customization system (colors, icons, per-tool overrides). This issue is narrower: just render the
titlefield that MCP servers already provide.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗