Skip to main content
Glama

Brasil API MCP

index.ts3.53 kB
import { z } from "zod"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { getBrasilApiData, formatErrorResponse } from "../../utils/api.js"; /** * Register IBGE related tools to the MCP server * @param server MCP Server instance */ export function registerIbgeTools(server: McpServer) { // Tool to list all Brazilian states server.tool( "ibge-states-list", "List all Brazilian states with their information", {}, async () => { console.error("Listing all Brazilian states"); const result = await getBrasilApiData(`/ibge/uf/v1`); if (!result.success) { return formatErrorResponse(`Error listing states: ${result.message}`); } // Format the response data const states = result.data; const formattedStates = states.map((state: any) => `${state.sigla} - ${state.nome} (Region: ${state.regiao.nome})` ).join("\n"); return { content: [{ type: "text" as const, text: `Brazilian States:\n${formattedStates}` }] }; } ); // Tool to find state by code or abbreviation server.tool( "ibge-state-search", "Find information about a Brazilian state by its code or abbreviation", { code: z.string() .describe("State code or abbreviation (e.g., SP, RJ, 35)") }, async ({ code }) => { console.error(`Finding state by code/abbreviation: ${code}`); const result = await getBrasilApiData(`/ibge/uf/v1/${code}`); if (!result.success) { return formatErrorResponse(`Error finding state: ${result.message}`); } // Format the response data const state = result.data; return { content: [{ type: "text" as const, text: ` State Information: Name: ${state.nome} Abbreviation: ${state.sigla} Region: ${state.regiao.nome} ID: ${state.id} ` }] }; } ); // Tool to list municipalities of a state server.tool( "ibge-municipalities-list", "List all municipalities of a Brazilian state by its abbreviation", { uf: z.string() .describe("State abbreviation (e.g., SP, RJ)") }, async ({ uf }) => { console.error(`Listing municipalities for state: ${uf}`); const result = await getBrasilApiData(`/ibge/municipios/v1/${uf}`); if (!result.success) { return formatErrorResponse(`Error listing municipalities: ${result.message}`); } // Format the response data const municipalities = result.data; // If there are too many municipalities, limit the display let formattedText; if (municipalities.length > 50) { const first30 = municipalities.slice(0, 30).map((municipality: any) => `${municipality.nome} (Code: ${municipality.codigo_ibge})` ).join("\n"); formattedText = `Municipalities in ${uf} (showing first 30 of ${municipalities.length}):\n${first30}\n\n...and ${municipalities.length - 30} more municipalities.`; } else { const formattedMunicipalities = municipalities.map((municipality: any) => `${municipality.nome} (Code: ${municipality.codigo_ibge})` ).join("\n"); formattedText = `Municipalities in ${uf}:\n${formattedMunicipalities}`; } return { content: [{ type: "text" as const, text: formattedText }] }; } ); }

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/guilhermelirio/brasil-api-mcp'

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