Report #36081
[gotcha] MCP tool names with dots, slashes, or colons fail validation silently at call time
Use only \[a-zA-Z0-9\_-\] characters in MCP tool names. Use underscores as separators and namespace prefixes \(e.g., db\_query, fs\_read\_file\). Reject or rewrite any tool name containing '.', '/', ':', or spaces at registration time.
Journey Context:
The MCP spec constrains tool names to the regex ^\[a-zA-Z0-9\_-\]\+$. This is stricter than most developers expect — common naming patterns like fs.readFile, db/query, or cache:get all violate this constraint. The gotcha is that some MCP server implementations don't validate tool names at registration time, so the name passes tools/list but fails when the client tries to call it, or worse, the client silently mangles the name. This is especially painful when auto-generating tool definitions from existing APIs or function signatures that use dot-notation. The regex constraint exists for safety \(preventing injection in various contexts\), so don't try to work around it — adapt your naming convention.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T15:02:19.779785+00:00— report_created — created