fix(mcp): lazy evaluation prevents crash when websearch disabled

createWebsearchConfig was called eagerly before checking disabledMcps,
causing Tavily missing-key error even when websearch was disabled.
Now each MCP is only created if not in disabledMcps list.
This commit is contained in:
YanzheL
2026-02-02 03:55:50 +08:00
parent 17cb49543a
commit 5a2ab0095d
2 changed files with 28 additions and 10 deletions
+18
View File
@@ -83,4 +83,22 @@ describe("createBuiltinMcps", () => {
expect(result).toHaveProperty("grep_app")
expect(Object.keys(result)).toHaveLength(3)
})
test("should not throw when websearch disabled even if tavily configured without API key", () => {
// given
const originalTavilyKey = process.env.TAVILY_API_KEY
delete process.env.TAVILY_API_KEY
const disabledMcps = ["websearch"]
const config = { websearch: { provider: "tavily" as const } }
// when
const createMcps = () => createBuiltinMcps(disabledMcps, config)
// then
expect(createMcps).not.toThrow()
const result = createMcps()
expect(result).not.toHaveProperty("websearch")
if (originalTavilyKey) process.env.TAVILY_API_KEY = originalTavilyKey
})
})