From 1f53ec912a057ab072a76e7545cd41d0f420c94e Mon Sep 17 00:00:00 2001 From: Dmytro Stanchiev Date: Fri, 23 Jan 2026 09:55:21 -0500 Subject: [PATCH] feat(mcp): add search options to Kijiji and eBay tools --- packages/mcp-server/src/protocol/handler.ts | 31 +++++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/packages/mcp-server/src/protocol/handler.ts b/packages/mcp-server/src/protocol/handler.ts index 38e60f7..26399b0 100644 --- a/packages/mcp-server/src/protocol/handler.ts +++ b/packages/mcp-server/src/protocol/handler.ts @@ -97,7 +97,23 @@ export async function handleMcpRequest(req: Request): Promise { error: { code: -32602, message: "query parameter is required" }, }); } - const items = await fetchKijijiItems(query, args.maxItems || 5); + const searchOptions = { + location: args.location, + category: args.category, + keywords: args.keywords, + sortBy: args.sortBy, + sortOrder: args.sortOrder, + maxPages: args.maxPages || 5, + priceMin: args.priceMin, + priceMax: args.priceMax, + }; + const items = await fetchKijijiItems( + query, + 1, + "https://www.kijiji.ca", + searchOptions, + {} + ); result = items || []; } else if (name === "search_facebook") { const query = args.query; @@ -110,10 +126,11 @@ export async function handleMcpRequest(req: Request): Promise { } const items = await fetchFacebookItems( query, - args.maxItems || 5, + 1, args.location || "toronto", - 25, - args.cookiesSource + args.maxItems || 25, + args.cookiesSource, + undefined ); result = items || []; } else if (name === "search_ebay") { @@ -125,7 +142,7 @@ export async function handleMcpRequest(req: Request): Promise { error: { code: -32602, message: "query parameter is required" }, }); } - const items = await fetchEbayItems(query, args.maxItems || 5, { + const items = await fetchEbayItems(query, 1, { minPrice: args.minPrice, maxPrice: args.maxPrice, strictMode: args.strictMode || false, @@ -134,7 +151,9 @@ export async function handleMcpRequest(req: Request): Promise { buyItNowOnly: args.buyItNowOnly !== false, canadaOnly: args.canadaOnly !== false, }); - result = items || []; + + const results = args.maxItems ? items.slice(0, args.maxItems) : items; + result = results || []; } else { return Response.json({ jsonrpc: "2.0",