Skip to content

MP013: name-collision-cross-server

Your tool name collides with names used by other public MCP servers.

At a glance

Category naming
Default severity warning
Auto-fixable no
LLM-gated no
Stable since v0.1.0

What this rule checks

mcpolish ships a bundled snapshot of tool names used by popular public MCP servers. The snapshot is refreshed quarterly in OSS. For each tool in your project, mcpolish looks up the name in the snapshot.

If at least two other servers (excluding yours) use the same name, MP013 fires.

Why it matters

Wang et al. (2026) section 3.1 reports that 73 percent of public MCP servers share at least one tool name with another. When two search tools are mounted in the same host session, the agent has nothing to disambiguate them except the descriptions, which is exactly the kind of work mcpolish exists to remove.

Even if you do not expect to share sessions with public servers today, a unique name keeps your server portable.

Example: code that triggers this rule

@mcp.tool()
def search(q: str) -> list:
    """Use this when the user wants a keyword lookup. Returns matching ids.

    Args:
        q: Search terms. Example: "kubernetes".
    """
    return [q]

MP013 fires because search is used by context7, exa-search, brave-search, perplexity, tavily, and many others in the snapshot.

Example: how to fix it

@mcp.tool()
def search_memories(query: str) -> list:
    ...

search_memories is not on the snapshot.

Configuration

[tool.mcpolish.MP013]
min_collisions = 5      # raise the bar

Or disable cross-server checks entirely:

[tool.mcpolish]
registry = "off"

When to disable this rule

If your servers run only inside your company's network and never share a host session with public servers, the collision is not actionable. Set registry = "off" or ignore MP013.

How the check works under the hood

The bundled snapshot is a small JSON file inside the wheel. It contains an array of {tool_name, servers, count} entries. At lint time, mcpolish loads it once into an in-memory hash, then looks up each tool's name.

The rule excludes your own server's namespace from the collision set, so a tool name shared with itself does not count.

  • MP010 generic-tool-name: collisions are usually generic names; MP010 fires alongside.
  • MP011 redundant-prefix: do not paper over collisions with namespace prefixes.

References