feat(mcp): add search options to Kijiji and eBay tools

This commit is contained in:
2026-01-23 09:55:21 -05:00
parent 053efd815b
commit 1f53ec912a

View File

@@ -97,7 +97,23 @@ export async function handleMcpRequest(req: Request): Promise<Response> {
error: { code: -32602, message: "query parameter is required" }, 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 || []; result = items || [];
} else if (name === "search_facebook") { } else if (name === "search_facebook") {
const query = args.query; const query = args.query;
@@ -110,10 +126,11 @@ export async function handleMcpRequest(req: Request): Promise<Response> {
} }
const items = await fetchFacebookItems( const items = await fetchFacebookItems(
query, query,
args.maxItems || 5, 1,
args.location || "toronto", args.location || "toronto",
25, args.maxItems || 25,
args.cookiesSource args.cookiesSource,
undefined
); );
result = items || []; result = items || [];
} else if (name === "search_ebay") { } else if (name === "search_ebay") {
@@ -125,7 +142,7 @@ export async function handleMcpRequest(req: Request): Promise<Response> {
error: { code: -32602, message: "query parameter is required" }, 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, minPrice: args.minPrice,
maxPrice: args.maxPrice, maxPrice: args.maxPrice,
strictMode: args.strictMode || false, strictMode: args.strictMode || false,
@@ -134,7 +151,9 @@ export async function handleMcpRequest(req: Request): Promise<Response> {
buyItNowOnly: args.buyItNowOnly !== false, buyItNowOnly: args.buyItNowOnly !== false,
canadaOnly: args.canadaOnly !== false, canadaOnly: args.canadaOnly !== false,
}); });
result = items || [];
const results = args.maxItems ? items.slice(0, args.maxItems) : items;
result = results || [];
} else { } else {
return Response.json({ return Response.json({
jsonrpc: "2.0", jsonrpc: "2.0",