diff --git a/packages/agent/src/adapters/claude/claude-agent.ts b/packages/agent/src/adapters/claude/claude-agent.ts index 78719875f..2aafaaac4 100644 --- a/packages/agent/src/adapters/claude/claude-agent.ts +++ b/packages/agent/src/adapters/claude/claude-agent.ts @@ -67,6 +67,7 @@ import { getEffortOptions, resolveModelPreference, supports1MContext, + supportsMcpInjection, toSdkModelId, } from "./session/models"; import { @@ -797,7 +798,11 @@ export class ClaudeAcpAgent extends BaseAcpAgent { const settingsManager = new SettingsManager(cwd); await settingsManager.initialize(); - const mcpServers = parseMcpServers(params); + const earlyModelId = + settingsManager.getSettings().model || meta?.model || ""; + const mcpServers = supportsMcpInjection(earlyModelId) + ? parseMcpServers(params) + : {}; const systemPrompt = buildSystemPrompt(meta?.systemPrompt); this.logger.info(isResume ? "Resuming session" : "Creating new session", { diff --git a/packages/agent/src/adapters/claude/session/models.ts b/packages/agent/src/adapters/claude/session/models.ts index b683bf88e..fc9effc76 100644 --- a/packages/agent/src/adapters/claude/session/models.ts +++ b/packages/agent/src/adapters/claude/session/models.ts @@ -37,6 +37,12 @@ export function supportsMaxEffort(modelId: string): boolean { return MODELS_WITH_MAX_EFFORT.has(modelId); } +const MODELS_TO_EXCLUDE_MCP_TOOLS = new Set(["claude-haiku-4-5"]); + +export function supportsMcpInjection(modelId: string): boolean { + return !MODELS_TO_EXCLUDE_MCP_TOOLS.has(modelId); +} + interface EffortOption { value: string; name: string;