Atlas / MCP servers / sidneybissoli / ibge-br-mcp

ibge-br-mcpSAFE

mcp/sidneybissoli/ibge-br-mcp

MCP Server for IBGE APIs - Brazilian geographic, demographic and statistical data

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
21 21r · 0w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
12
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://www.npmjs.com/package/ibge-br-mcp) [](https://www.npmjs.com/package/ibge-br-mcp) [](https://www.npmjs.com/package/ibge-br-mcp) [](https://registry.modelcontextprotocol.io) [](https://lobehub.com/mcp/sidneybissoli-ibge-br-mcp) [](https://smithery.ai/server/sidneybissoli/ibge-br-mcp) [](https://glama.ai/mcp/servers/@SidneyBissoli/ibge-br-mcp) [](https://github.com/SidneyBissoli/ibge-br-mcp/actions/workflows/ci.yml) [](https://github.com/SidneyBissoli/ibge-br-mcp/blob/main/vitest.config.ts) [](https://github.com/SidneyBissoli/ibge-br-mcp) [](https://github.com/sponsors/SidneyBissoli) [](https://opensource.org/licenses/MIT)

Live, exact Brazilian public data for your AI assistant — with provenance, not guesswork.

Ask an LLM "what was Belo Horizonte's population in the 2022 Census?" and you get a plausible number from its training data: maybe right, maybe outdated, with no source. ibge-br-mcp instead has your assistant query the official IBGE APIs in real time — returning the exact figure together with the table

Read from source at commit 84791e53320aOBSERVED · 2026-10-10
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code (npm)
claude mcp add ibge-br-mcp -- npx -y [email protected]
03

Exposed tools (21)

21 read · 0 write · 0 destructive.

ToolRiskDescription
ibge_calendarioread
ibge_censoread
ibge_cidadesread
ibge_cnaeread
ibge_compararread
ibge_datasauderead
ibge_estadosread
ibge_geocodigoread
ibge_indicadoresread
ibge_localidaderead
ibge_malhasread
ibge_malhas_temaread
ibge_municipiosread
ibge_nomesread
ibge_noticiasread
ibge_paisesread
ibge_pesquisasread
ibge_sidraread
ibge_sidra_metadadosread
ibge_sidra_tabelasread
ibge_vizinhosread
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (5 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (9)

MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
worker/src/icon.ts:15
"iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAEAAElEQVR42uxdd5wkVbU+59zq7sk7s7vswpKjBEUMYMDsExQDiDmhok8FFQMqJhSfiFkB41NUzCCCAQyYRR6SJClpScsCm+PM7Mx0d91z3h+3wq3Y1Wlmdun6+cMNs11dVbfOOfc73/k+FBHoHb2jd/S
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
.github/workflows/ci.yml:71
# A raiz vem primeiro: o worker importa ../../dist/server.js e resolve o
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/evals/fixtures.test.ts:12
import { AREA_BY_TOOL, CATALOG } from "../../evals/catalog.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/evals/fixtures.test.ts:13
import { FIXTURES } from "../../evals/fixtures/queries.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
worker/src/config.ts:9
import { SERVER_VERSION } from "../../dist/server.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
worker/src/envelope.ts:60
import { classeDoErroRpc, classifyError, errorText, type ErrorClass } from "../../dist/call-shape.js";
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
worker/src/index.ts:33
const ICON_PNG = Uint8Array.from(atob(ICON_PNG_BASE64), (c) => c.charCodeAt(0));
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/server, @sbissoli/mcp-provenance, @sbissoli/mcp-search, @sbissoli/mcp-stats, @sbissoli/mcp-upstream, zod, @eslint/js, @modelcontextprotocol/client
Why it matters. 19 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
worker/package.json
agents, @cloudflare/workers-types, typescript, vite, vitest, wrangler
Why it matters. 6 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha 84791e53320afull audit observations/trust-audit/mcp-server/sidneybissoli__ibge-br-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1084791e53320aSAFEB89first audit
06

Questions

What is the ibge-br-mcp MCP server?

MCP Server for IBGE APIs - Brazilian geographic, demographic and statistical data

What tools does ibge-br-mcp expose?

21 in total: 21 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is ibge-br-mcp safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.

What credentials does ibge-br-mcp need?

No credential environment variables were found in its source, so it appears to need none.

How does ibge-br-mcp run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as ibge-br-mcp-worker at 0.0.0.

How current is this page?

The grade is for one exact copy of the source (84791e53320a), read on 2026-10-10. The repository is watched and re-audited when it changes.

Advertisement