Merge pull request #4137 from code-yeongyu/fix/3763-exa-bearer-auth-reland
fix(websearch): use Bearer auth for Exa MCP
This commit is contained in:
@@ -54,3 +54,36 @@ describe("createWebsearchConfig Tavily handling", () => {
|
|||||||
expect(config?.url).toBe("https://mcp.tavily.com/mcp/")
|
expect(config?.url).toBe("https://mcp.tavily.com/mcp/")
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("createWebsearchConfig Exa handling", () => {
|
||||||
|
test("keeps EXA_API_KEY out of URL query params and sends bearer auth header", () => {
|
||||||
|
process.env.EXA_API_KEY = "exa-secret"
|
||||||
|
|
||||||
|
const config = createWebsearchConfig({ provider: "exa" })
|
||||||
|
|
||||||
|
expect(config).toEqual({
|
||||||
|
type: "remote",
|
||||||
|
url: "https://mcp.exa.ai/mcp?tools=web_search_exa",
|
||||||
|
enabled: true,
|
||||||
|
headers: {
|
||||||
|
Authorization: "Bearer exa-secret",
|
||||||
|
},
|
||||||
|
oauth: false,
|
||||||
|
})
|
||||||
|
expect(config?.url).not.toContain("exaApiKey")
|
||||||
|
expect(config?.headers).not.toHaveProperty("x-api-key")
|
||||||
|
})
|
||||||
|
|
||||||
|
test("uses unauthenticated Exa URL when EXA_API_KEY is missing", () => {
|
||||||
|
delete process.env.EXA_API_KEY
|
||||||
|
|
||||||
|
const config = createWebsearchConfig({ provider: "exa" })
|
||||||
|
|
||||||
|
expect(config).toEqual({
|
||||||
|
type: "remote",
|
||||||
|
url: "https://mcp.exa.ai/mcp?tools=web_search_exa",
|
||||||
|
enabled: true,
|
||||||
|
oauth: false,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|||||||
@@ -32,11 +32,9 @@ export function createWebsearchConfig(config?: WebsearchConfig): RemoteMcpConfig
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
type: "remote" as const,
|
type: "remote" as const,
|
||||||
url: process.env.EXA_API_KEY
|
url: "https://mcp.exa.ai/mcp?tools=web_search_exa",
|
||||||
? `https://mcp.exa.ai/mcp?tools=web_search_exa&exaApiKey=${encodeURIComponent(process.env.EXA_API_KEY)}`
|
|
||||||
: "https://mcp.exa.ai/mcp?tools=web_search_exa",
|
|
||||||
enabled: true,
|
enabled: true,
|
||||||
...(process.env.EXA_API_KEY ? { headers: { "x-api-key": process.env.EXA_API_KEY } } : {}),
|
...(process.env.EXA_API_KEY ? { headers: { Authorization: `Bearer ${process.env.EXA_API_KEY}` } } : {}),
|
||||||
oauth: false as const,
|
oauth: false as const,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user