mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-09-06 16:15:50 +08:00
The word-based virtual server spans only ~2048^2 names, and plausible real MCP server names such as file_system or web_search are valid BIP-39 word pairs. When a caller's own server matched the derived one, its tools stopped passing through and entered alias recovery instead: they were silently restored to an unrelated proxied tool, or failed the request with a 500 when no semantic suffix matched. Record untouched caller MCP tool names as identity entries in the reverse map, skip those entries when collecting virtual servers and recovery candidates, and forward them unchanged on an exact hit. Recording is skipped when nothing was aliased, so an untouched request still keeps an empty reverse map and a no-op restore path. Also warn instead of silently forwarding an original name when the alias space is exhausted, report an empty embedded wordlist, trace the semantic-suffix fallback because it guesses rather than fails, and build both alias entry points through one shared constructor so the exhaustion tests cannot drift away from the production path. Refs #4916