rohitg00/ai-engineering-from-scratch · error · ValueError

duplicate tool: {schema.name}

Error message

duplicate tool: {schema.name}

What it means

Error "duplicate tool: {schema.name}" thrown in rohitg00/ai-engineering-from-scratch.

Source

Thrown at phases/19-capstone-projects/13-mcp-server-with-registry/code/main.py:97

@dataclass
class MCPServer:
    name: str
    title: str
    description: str
    version: str
    url: str
    trusted_issuer: str
    tools: dict[str, ToolSchema] = field(default_factory=dict)
    handlers: dict[str, Handler] = field(default_factory=dict)

    @property
    def server_info(self) -> dict:
        return {"name": self.name, "version": self.version}

    def register(self, schema: ToolSchema, handler: Handler) -> None:
        if schema.name in self.tools:
            raise ValueError(f"duplicate tool: {schema.name}")
        self.tools[schema.name] = schema
        self.handlers[schema.name] = handler

    def result(self, **fields: object) -> dict:
        return {
            "resultType": "complete",
            **fields,
            "_meta": {"io.modelcontextprotocol/serverInfo": self.server_info},
        }

    def discover(self, meta: dict) -> dict:
        invalid = validate_meta(meta)
        if invalid:
            return invalid
        return self.result(
            supportedVersions=[PROTOCOL_VERSION],
            capabilities={"tools": {"listChanged": False}},
            ttlMs=3_600_000,

View on GitHub (pinned to 39ea8a1c6d)

When it happens

Trigger: Thrown at phases/19-capstone-projects/13-mcp-server-with-registry/code/main.py:97 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of rohitg00/ai-engineering-from-scratch@39ea8a1c6d (2026-08-26). Data as JSON: /api/errors/949edce09805123c. Report an issue: GitHub.