Skip to content

MCP Connectors require tool_search on every session

MCP connectors of type mssql-* are marked as deferred tools in Claude’s system. This means that on every new session, Claude doesn’t know their parameters and calls tool_search before it can use them — even though it has used them thousands of times before.

FieldValue
Date2026-03-02
SeverityLow (UX / token cost)
StatusWorkaround applied
  • mssql-MyDatabase
  • mssql-MyDatabase_LOCAL
  • mssql-PROD-SERVER
  • mssql-SQL01
  • mssql-MyIdentityDB
  • Unnecessary token cost on every session that touches the database
  • Extra latency — one additional call before the actual query
  • All mssql-* connectors share the same function schema, making the tool_search redundant

All connectors expose exactly the same functions:

FunctionParameters
query_databasequery: string
get_database_info
exploretype?: string, filter?: string, schema?: string, pattern?: string, search_in?: string
inspecttable_name: string, schema?: string, detail?: string
execute_procedureprocedure_name: string, parameters?: string

The deferred tools system doesn’t distinguish between tools “known from training” and tools that require real discovery. All MCPs go through the same mechanism even though their schema is static and well-known.

A note was added to Claude’s user memory with the complete connector schema:

mssql connectors (...): Do NOT use tool_search, call directly:
query_database(query), list_tables(), describe_table(table_name, schema?), ...

With this, Claude skips tool_search and calls the connector directly.

Allow mssql-* connectors (or others with static, well-defined schemas) to be marked as pre-loaded, or have Claude recognize them by prefix without needing tool_search.