-
Notifications
You must be signed in to change notification settings - Fork 192
Description
Summary
When using manual conflict resolution with tool overrides, the ToolOverride struct supports overriding name and description, but not annotations.title. MCP clients (e.g., Claude Desktop) display the title annotation as the primary label for tools, so overridden tools still show the original backend's title.
Problem
In a vMCP aggregating 8 backends that all run the same Slack MCP server image (for demo purposes), each backend's tools are renamed via overrides to give them unique, domain-specific identities:
- workload: jira
overrides:
channels_list:
name: jira_list_projects
description: "List Jira projects and boards"The tool name becomes jira_list_projects and the description becomes "List Jira projects and boards", but the UI still displays "List Channels" as the tool's label — because that's the annotations.title from the original Slack MCP server, which passes through unchanged.
Expected behavior
ToolOverride should support a title field (or a broader annotations override) so that the human-readable label displayed by MCP clients can be customized:
- workload: jira
overrides:
channels_list:
name: jira_list_projects
description: "List Jira projects and boards"
annotations:
# override only the title annotation - all others pass through.
title: "List Jira Projects" Current ToolOverride struct
type ToolOverride struct {
Name string `json:"name,omitempty" yaml:"name,omitempty"`
Description string `json:"description,omitempty" yaml:"description,omitempty"`
}Suggested change
Add a Title field to ToolOverride and apply it to Annotations.Title during processBackendTools / resolveToolWithOverride.