mcp-upgrade-api-version-hardcodes

MCP Server Upgrade: API Version Hardcodes Spread Across All Singleton Clients

When upgrading a multi-client MCP server’s API version, grep ALL source files — not just the primary client. Each singleton client has its OWN _load_config() with its OWN os.getenv() fallback default. They don’t share config.

Concrete example: Tableau MCP v5.0→v6.0 upgrade (29-Mar-2026) found 9 hardcoded API version fallbacks across 6 files: api_client.py (3), pulse_client.py (1), metadata_client.py (1), vizql_client.py (1), rest_client.py (1), server.py (2).

Command: grep -rn '"3.24"\|"3.27"' src/ catches all.

Also: Before proposing ANY new tools in an upgrade, grep TOOL_CATEGORIES dict + async def patterns in server.py to confirm tools don’t already exist. The Tableau v6 spec review caught 6 proposed duplicate tools (Activity Log + SAML) that were already implemented.