Skip to main content
Glama

search_motherboard

Find compatible motherboards by specifying CPU socket, chipset, and form factor to ensure proper system integration with your processor and case.

Instructions

Specialized motherboard (MB/mainboard) search tool. Find motherboards by CPU socket, chipset, and size. Critical for system compatibility - must match CPU socket and case size.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
socketNoCPU socket - MUST match your CPU. Intel: '1700' (12-14th gen), '1851' (Core Ultra). AMD: 'AM5' (Ryzen 7000+), 'AM4' (older Ryzen). Check CPU specs first!
chipsetNoMotherboard chipset determines features. Intel: 'Z790' (high-end), 'B760' (mainstream), 'H610' (budget). AMD: 'X670' (high-end), 'B650' (mainstream), 'A620' (budget)
form_factorNoPhysical size - must fit your case. 'ATX' (full size, most expansion), 'mATX' or 'MATX' (compact, good balance), 'ITX' (mini, small builds)
sort_byNoPrice sorting order. 'price_asc' = budget boards first, 'price_desc' = feature-rich boards first
limitNoMaximum results to return. Valid range: 1-50, default: 10. More results = more brand/feature options

Implementation Reference

  • The handler function that performs the search for motherboards based on socket, chipset, form factor, applies sorting and limits the results from the product data.
    private searchMotherboard(args: any) { const { socket, chipset, form_factor, sort_by, limit = 10 } = args; const results: any[] = []; // Find motherboard category const mbCategory = this.productData.find(cat => cat.category_name.includes('主機板') || cat.category_name.includes('MB') ); if (!mbCategory) { return { content: [ { type: "text", text: JSON.stringify({ error: "Motherboard category not found", results: [] }, null, 2), }, ], }; } // Search through all motherboard subcategories for (const subcat of mbCategory.subcategories) { for (const product of subcat.products) { let matches = true; // Filter by socket if specified if (socket && matches) { const socketLower = socket.toLowerCase(); const subcatLower = subcat.name.toLowerCase(); const specsText = product.specs.join(' ').toLowerCase(); const rawTextLower = product.raw_text.toLowerCase(); if (!subcatLower.includes(socketLower) && !specsText.includes(socketLower) && !rawTextLower.includes(socketLower)) { matches = false; } } // Filter by chipset if specified if (chipset && matches) { const chipsetLower = chipset.toLowerCase(); const specsText = product.specs.join(' ').toLowerCase(); const modelLower = product.model?.toLowerCase() || ''; const rawTextLower = product.raw_text.toLowerCase(); if (!specsText.includes(chipsetLower) && !modelLower.includes(chipsetLower) && !rawTextLower.includes(chipsetLower)) { matches = false; } } // Filter by form factor if specified if (form_factor && matches) { const formLower = form_factor.toLowerCase(); const specsText = product.specs.join(' ').toLowerCase(); const rawTextLower = product.raw_text.toLowerCase(); // Handle different form factor names const formFactorAliases: { [key: string]: string[] } = { 'atx': ['atx', 'a.t.x'], 'matx': ['matx', 'm-atx', 'micro atx', 'micro-atx'], 'itx': ['itx', 'mini-itx', 'mini itx'] }; let hasFormFactor = false; const aliases = formFactorAliases[formLower] || [formLower]; for (const alias of aliases) { if (specsText.includes(alias) || rawTextLower.includes(alias)) { hasFormFactor = true; break; } } if (!hasFormFactor) { matches = false; } } if (matches) { results.push({ ...product, category_name: mbCategory.category_name, subcategory_name: subcat.name, }); } } } // Sort results if (sort_by === 'price_asc') { results.sort((a, b) => a.price - b.price); } else if (sort_by === 'price_desc') { results.sort((a, b) => b.price - a.price); } // Apply limit const limitedResults = results.slice(0, limit); return { content: [ { type: "text", text: JSON.stringify({ total_found: results.length, showing: limitedResults.length, filters: { socket: socket || "any", chipset: chipset || "any", form_factor: form_factor || "any", sort_by: sort_by || "none" }, results: limitedResults.map(p => ({ brand: p.brand, model: p.model, specs: p.specs, price: p.price, original_price: p.original_price, discount_amount: p.discount_amount, subcategory: p.subcategory_name, markers: p.markers, })), }, null, 2), }, ], }; }
  • The input schema defining parameters for the search_motherboard tool: socket, chipset, form_factor, sort_by, limit.
    inputSchema: { type: "object", properties: { socket: { type: "string", description: "CPU socket - MUST match your CPU. Intel: '1700' (12-14th gen), '1851' (Core Ultra). AMD: 'AM5' (Ryzen 7000+), 'AM4' (older Ryzen). Check CPU specs first!", }, chipset: { type: "string", description: "Motherboard chipset determines features. Intel: 'Z790' (high-end), 'B760' (mainstream), 'H610' (budget). AMD: 'X670' (high-end), 'B650' (mainstream), 'A620' (budget)", }, form_factor: { type: "string", description: "Physical size - must fit your case. 'ATX' (full size, most expansion), 'mATX' or 'MATX' (compact, good balance), 'ITX' (mini, small builds)", }, sort_by: { type: "string", enum: ["price_asc", "price_desc"], description: "Price sorting order. 'price_asc' = budget boards first, 'price_desc' = feature-rich boards first", }, limit: { type: "number", description: "Maximum results to return. Valid range: 1-50, default: 10. More results = more brand/feature options", }, }, },
  • src/index.ts:223-252 (registration)
    Tool registration in the ListToolsRequestSchema handler, including name, description, and inputSchema.
    { name: "search_motherboard", description: "Specialized motherboard (MB/mainboard) search tool. Find motherboards by CPU socket, chipset, and size. Critical for system compatibility - must match CPU socket and case size.", inputSchema: { type: "object", properties: { socket: { type: "string", description: "CPU socket - MUST match your CPU. Intel: '1700' (12-14th gen), '1851' (Core Ultra). AMD: 'AM5' (Ryzen 7000+), 'AM4' (older Ryzen). Check CPU specs first!", }, chipset: { type: "string", description: "Motherboard chipset determines features. Intel: 'Z790' (high-end), 'B760' (mainstream), 'H610' (budget). AMD: 'X670' (high-end), 'B650' (mainstream), 'A620' (budget)", }, form_factor: { type: "string", description: "Physical size - must fit your case. 'ATX' (full size, most expansion), 'mATX' or 'MATX' (compact, good balance), 'ITX' (mini, small builds)", }, sort_by: { type: "string", enum: ["price_asc", "price_desc"], description: "Price sorting order. 'price_asc' = budget boards first, 'price_desc' = feature-rich boards first", }, limit: { type: "number", description: "Maximum results to return. Valid range: 1-50, default: 10. More results = more brand/feature options", }, }, }, },
  • src/index.ts:304-325 (registration)
    Registration in the CallToolRequestSchema handler's switch statement that routes calls to the searchMotherboard method.
    switch (name) { case "search_products": return this.searchProducts(args); case "search_cpu": return this.searchCPU(args); case "search_gpu": return this.searchGPU(args); case "search_ram": return this.searchRAM(args); case "search_ssd": return this.searchSSD(args); case "search_motherboard": return this.searchMotherboard(args); case "get_product_by_model": return this.getProductByModel(args); case "list_categories": return this.listCategories(); case "get_category_products": return this.getCategoryProducts(args); default: throw new Error(`Unknown tool: ${name}`); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shyuan/coolpc-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server