Skip to main content
Glama

list_community_builds

Browse community-shared PC builds from meupc.net with titles, prices, and component lists. Filter by sorting options to find configurations that match your needs.

Instructions

Builds de PC compartilhadas pela comunidade do meupc.net, com título, preço e componentes

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sortNoOrdenação das builds ('melhores-recentes', 'melhores', 'novas')melhores-recentes
pageNoNúmero da página

Implementation Reference

  • The main handler function listCommunityBuilds that fetches and parses community PC builds from meupc.net. It takes sort and page parameters, scrapes the webpage for build cards, extracts title, author, price, likes, and components, then returns the results as JSON.
    export async function listCommunityBuilds(params: ListCommunityBuildsParams): Promise<string> { const { sort, page } = params; const url = `/builds-comunidade?ordem=${sort}&page=${page}`; const $ = await fetchPage(url); const results: BuildSummary[] = []; $("article.card.is-fullheight").each((_, el) => { const $card = $(el); const titleEl = $card.find(".card-content h3.title a"); const title = titleEl.text().trim(); if (!title) return; const buildUrl = titleEl.attr("href") ?? ""; // Autor const author = $card.find(".card-content p.by a.has-text-weight-semibold").text().trim() || null; // Preço total const priceText = $card.find(".card-content a.preco").text().trim(); const totalPrice = parsePrice(priceText); // Curtidas const likesAttr = $card.find("footer a.js-like-button").attr("data-total-likes"); const likesText = $card.find("footer span.js-like-total").text().trim(); const likes = likesAttr ? parseInt(likesAttr, 10) : (likesText ? parseInt(likesText, 10) : null); // Componentes principais (lista no card) const components: string[] = []; $card.find(".card-content div.content.is-small ul li").each((_, li) => { const comp = $(li).text().trim(); if (comp) components.push(comp); }); results.push({ title, author, totalPrice, likes: isNaN(likes as number) ? null : likes, url: absoluteUrl(buildUrl), components, }); }); return JSON.stringify(results, null, 2); }
  • Zod schema definition for listCommunityBuildsSchema that validates input parameters: sort (enum with 'melhores-recentes', 'melhores', 'novas') and page (positive integer), plus the inferred TypeScript type ListCommunityBuildsParams.
    export const listCommunityBuildsSchema = z.object({ sort: z.enum(SORT_OPTIONS).default("melhores-recentes").describe("Ordenação das builds ('melhores-recentes', 'melhores', 'novas')"), page: z.number().int().positive().default(1).describe("Número da página"), }); export type ListCommunityBuildsParams = z.infer<typeof listCommunityBuildsSchema>;
  • src/index.ts:52-59 (registration)
    Tool registration in the MCP server - registers 'list_community_builds' tool with its description, schema, and async handler that calls listCommunityBuilds function.
    server.tool( "list_community_builds", "Builds de PC compartilhadas pela comunidade do meupc.net, com título, preço e componentes", listCommunityBuildsSchema.shape, async (params) => ({ content: [{ type: "text", text: await listCommunityBuilds(params) }], }) );
  • Import statements and constant definitions including fetchPage, absoluteUrl, parsePrice helpers from scraper.js and the SORT_OPTIONS constant used for validation.
    import { z } from "zod"; import { fetchPage, absoluteUrl, parsePrice } from "../scraper.js"; import type { BuildSummary } from "../types.js"; const SORT_OPTIONS = ["melhores-recentes", "melhores", "novas"] as const;

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/leosebben/mcp-meupc'

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