MCP Tool Naming: Three Formats, One Gotcha

Day 29 · Week 6 · MCP — System Integration

Slack Message — copy & paste

🤖 Tip #29 — MCP tool names look different in each platform — get the format wrong and tools silently fail to resolve.

#29 Claude Code

The Three Naming Formats

  • **Claude Code format (double underscore)**
    • Pattern: mcp__plugin_<plugin>_<server>__<tool>
    • Example: mcp__plugin_dx-aem_AEM__getNodeContent
    • Project-level servers skip the plugin prefix: mcp__ado__wit_get_work_item
  • **Copilot CLI and VSCode format (slash)**
    • Pattern: server/tool
    • Example: AEM/getNodeContent, ado/wit_get_work_item
    • Same format for both platforms
  • **The gotcha**Agent templates that need to work in both Claude Code and Copilot must include both naming formats in the tools section. Unrecognized names are silently ignored, so having both doesn't cause errors.
Naming Prefix Cross-Platform
#29 MCP — System Integration

Cross-Platform Survival Guide

  1. 1 **Include both formats in cross-platform templates**
    • Claude Code: mcp__plugin_dx-aem_AEM__getNodeContent
    • Copilot CLI: AEM/getNodeContent
  2. 2 **Debugging in Claude Code**Use ToolSearch("+AEM") to find the real prefixed name. If a tool 'doesn't exist,' the naming format is the first thing to check.
  3. 3 **Debugging in Copilot CLI**MCP tools appear as server/tool in tool lists. Compare against what your agent file references.
  4. 4 **Comparison test**Look at a Claude Code agent file vs a .github/agents/ file side by side. The naming difference becomes immediately obvious.
Naming Prefix Cross-Platform
Your screenshot here Optional — add a screenshot from your own workflow
KAI by Dragan Filipovic