[Bug] MCP resource templates display static title instead of individual resource names in Claude Desktop

Resolved 💬 4 comments Opened Dec 7, 2025 by ichabodcole Closed Feb 8, 2026

Bug Description
Bug: Claude Desktop shows template title instead of individual resource names for MCP resource templates

Summary
When using MCP resource templates, Claude Desktop displays the template's static title for all resources instead of the individual name field returned by the template's list callback.

Expected behavior
Each resource should display its own name (e.g., "my-document-title", "another-doc") as returned in the list callback's resources[].name field.

Actual behavior
All resources from the template display the same name - the template's registration title (e.g., "Operator Documents" for every document).

Works correctly in

  • Claude Code
  • MCP Inspector

Code example

// Template list callback returns unique names per resource:
list: async () => ({
  resources: docs.map(doc => ({
    uri: `operator://documents/${doc.id}`,
    name: doc.title || '(Untitled)',  // ← This is ignored by Claude Desktop
    // ...
  }))
})

// But template registration has static title:
server.registerResource('documents-template', docTemplate, {
  title: 'Operator Documents',  // ← Claude Desktop uses this for ALL resources
  // ...
})

Impact
Users cannot distinguish between resources when selecting them via the + icon in Claude Desktop - they all appear with the same name.

Environment Info

  • Platform: darwin
  • Terminal: zed
  • Version: 2.0.60
  • Claude 1.0.1768 (67d013) 2025-12-05T23:47:07.000Z

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗