@@ -197,8 +197,22 @@ func NewAgent(
197197 tools.NewWriteTool(lspClients, permissions, history, cwd),
198198 }
199199
200+ mcpToolsOnce.Do(func() {
201+ mcpTools = doGetMCPTools(ctx, permissions, cfg)
202+ })
203+
204+ withCoderTools := func(t []tools.BaseTool) []tools.BaseTool {
205+ if agentCfg.ID == "coder" {
206+ t = append(t, mcpTools...)
207+ if len(lspClients) > 0 {
208+ t = append(t, tools.NewDiagnosticsTool(lspClients))
209+ }
210+ }
211+ return t
212+ }
213+
200214 if agentCfg.AllowedTools == nil {
201− return allTools
215+ return withCoderTools(allTools)
202216 }
203217
204218 var filteredTools []tools.BaseTool
@@ -209,15 +223,9 @@ func NewAgent(
209223 }
210224
211225 if agentCfg.ID == "coder" {
212− mcpToolsOnce.Do(func() {
213− mcpTools = doGetMCPTools(ctx, permissions, cfg)
214− })
215226 filteredTools = append(filteredTools, mcpTools...)
216− if len(lspClients) > 0 {
217− filteredTools = append(filteredTools, tools.NewDiagnosticsTool(lspClients))
218− }
219227 }
220− return filteredTools
228+ return withCoderTools(filteredTools)
221229 }
222230
223231 return &agent{