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.