mcp-brasil: 70 brasilianische Datenquellen als MCP-Server
MCP Server para 70 APIs públicas brasileiras
Auf einen Blick
- Was ist das?
- Ein Python-Server, der 533 Tools für öffentliche Daten Brasiliens über das Model Context Protocol bereitstellt. Die Stärke liegt in der Breite und im lokalen DuckDB-Cache, die Schwäche in der Abhängigkeit von fremden API-Kontingenten und in der unklaren Datenlizenz.
- Für wen ist es gedacht?
- Wer brasilianische Regierungs-, Justiz- oder Statistikdaten in einen LLM-Workflow einbinden will und Python-Tooling akzeptiert, findet hier den breitesten mir bekannten Einstiegspunkt; wer nur eine einzelne API braucht, sollte direkt gegen deren Endpunkt schreiben, weil der Server dann nur Overhead und eine zusätzliche Fehlerquelle ist.
- Darf ich es kommerziell nutzen?
- Ja. MIT ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
- Wird es noch gepflegt?
- Ja. Die letzten Commits kamen vor 28 Tagen.
- In welcher Sprache ist es geschrieben?
- Hauptsächlich Python, laut der Sprachstatistik von GitHub.
Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.
TIEFGEHENDE OPEN-SOURCE-ANALYSE
Das Problem: siebzig Amtsstuben, siebzig Antwortformate
Brasilianische Behörden veröffentlichen reichlich Daten, aber jedes Portal hat sein eigenes Schema, seine eigene Paginierung und seine eigene Vorstellung davon, was ein Datumsfeld ist. Wer als Agent oder Skript etwa Abgeordnetenausgaben, Ausschreibungen eines Landesrechnungshofs und Inflationsreihen in einer Auswertung zusammenführen will, schreibt zuerst vier oder fünf Adapter, bevor die eigentliche Frage beantwortet ist. Genau diese Adapterarbeit nimmt mcp-brasil ab. Das Repository beschreibt sich als MCP Server für 70 öffentliche Datenquellen und zählt 533 Tools, 131 Resources und 102 Prompts über 15 Themenbereiche. Adressiert sind damit zwei Gruppen: Entwickler, die einem Claude-, GPT- oder Copilot-Agenten Zugriff auf brasilianische Daten geben wollen, und Analysten, die natürlichsprachige Abfragen über Legislative, Transparenzportale und Statistikämter stellen möchten. Die Zielgruppe ist ausdrücklich nicht der Gelegenheitsnutzer, der einmal eine einzelne Kennzahl nachschlägt.
FastMCP, Auto-Registry und ein Cache, der opt-in ist
Technisch ist der Server als FastMCP-Anwendung umgesetzt und wird als Modul gestartet, nicht als langlebiger Daemon mit eigener CLI. Die Feature-Ordner unter dem Paket bilden die Einheit der Erweiterung: laut README bedeutet eine neue Feature anzulegen, einen Ordner anzulegen, ohne manuelle Registrierung. Das ist ein Registry-Muster, das die Tool-Liste aus der Verzeichnisstruktur ableitet. Für große Bestände wie SIAPA mit rund 813.000 Immobilien, die TSE-Daten von 2014 bis 2024, ANP-Kraftstoffpreise, INEP-Schulzensus und ENEM, ISP-RJ sowie ANAC-Flugdaten gibt es einen lokalen Cache auf Basis von eingebettetem DuckDB, der per Umgebungsvariable aktiviert wird. Das ist der wichtigste Architekturpunkt: Ohne diesen Schalter laufen Abfragen gegen entfernte Endpunkte, mit ihm gegen lokale Tabellen und SQL. Die README nennt die Zahl der Tools, die den Cache nutzen, nicht, und sie nennt auch nicht, wie der Cache befüllt oder aktualisiert wird. Wer plant, TSE-Daten regelmäßig auszuwerten, muss das vorab im Code klären. Die Kommunikation nach außen läuft über httpx im Async-Modus, die Modelle über Pydantic v2, dazu Rate Limiting mit Backoff.
Discovery statt 533 Tools im Kontext
533 Tool-Definitionen in einen Modellkontext zu laden, ist keine gute Idee. Das Projekt adressiert das mit einem BM25-Suchfilter, der als Transform arbeitet und dem Modell nur die zum Kontext passenden Tools zeigt. Das ist ein bekanntes Retrieval-Muster, und es ist hier sinnvoller als eine statische Gruppierung, weil die Verteilung der Tools extrem ungleich ist: transparencia allein bringt 54 Tools, senado 26, camara 11, bacen 9, während tce_sc mit 2 und tce_to mit 3 auskommen. Dazu kommen zwei Koordinations-Tools. planejar_consulta erzeugt Ausführungspläne, die mehrere APIs kombinieren, etwa Ausgaben eines Abgeordneten mit seinen Abstimmungen und seinen Vorlagen. executar_lote schickt mehrere Abfragen parallel in einem Aufruf. Beide sind der eigentliche Grund, warum ein MCP-Server hier mehr leistet als eine Sammlung von HTTP-Wrappern. Ob der BM25-Filter bei mehrdeutigen portugiesischen Begriffen zuverlässig trifft, lässt sich aus dem Material nicht beurteilen; das ist ein Punkt, den man mit eigenen Abfragen prüfen muss.
Installation und Konfiguration in vier Varianten
Die Installation erfolgt über pip install mcp-brasil oder uv add mcp-brasil. Für Claude Code genügt ein Befehl: claude mcp add mcp-brasil -- uvx --from mcp-brasil python -m mcp_brasil.server. Für Claude Desktop, Google Antigravity sowie VS Code und Cursor liefert die README jeweils einen JSON-Block mit demselben Kern, nämlich command uvx und args --from mcp-brasil python -m mcp_brasil.server, unterschieden nur durch den Dateinamen: claude_desktop_config.json, ~/.gemini/config/mcp_config.json beziehungsweise .agents/mcp_config.json sowie .vscode/mcp.json. Die drei Umgebungsvariablen TRANSPARENCIA_API_KEY, DATAJUD_API_KEY und META_ACCESS_TOKEN sind optional. Für andere Clients lässt sich der Server als HTTP-Dienst starten: fastmcp run mcp_brasil.server:mcp --transport http --port 8000, erreichbar unter http://localhost:8000/mcp. Bemerkenswert ist der Hinweis, dass ohne die Schlüssel die restlichen 36 APIs normal funktionieren. Diese Zahl steht im Widerspruch zur Angabe von 66 schlüsselfreien APIs weiter oben in derselben README. Wer wissen will, welche Quellen ohne Registrierung nutzbar sind, muss das in SOURCES.md nachsehen.
Wo der Server an seine Grenzen kommt
Die erste Einschränkung ist nicht technisch, sondern organisatorisch: Der Server ist ein Vermittler zu fremden Endpunkten, und deren Verfügbarkeit, Kontingente und Schemaänderungen bestimmen, ob eine Abfrage gelingt. Rate Limiting mit Backoff mildert das, beseitigt es aber nicht. Die zweite Einschränkung betrifft die Datenhoheit. Die MIT-Lizenz deckt nach dem ausdrücklichen Hinweis der README nur den Code; jede Quelle hat ihre eigene Lizenz, dokumentiert in SOURCES.md, und die Nutzung des Servers unterliegt zusätzlich ACCEPTABLE_USE.md. Vor kommerzieller, journalistischer oder entscheidungsrelevanter Nutzung verlangt das Projekt, beide Dateien zu lesen. Das ist kein Formalismus: Wer aus TCE- oder TSE-Daten Schlussfolgerungen über Personen zieht, bewegt sich in einem anderen rechtlichen Rahmen als jemand, der den Code forkt. Drittens ist der Server das falsche Werkzeug, wenn nur eine einzige API gebraucht wird. Ein Agent, der ausschließlich Selic-Reihen abfragt, trägt mit mcp-brasil einen Abhängigkeitsbaum, einen Discovery-Layer und ein Update-Risiko für 532 ungenutzte Tools mit. Direkt gegen den SGS-Endpunkt des Banco Central zu gehen, ist dann weniger Code und weniger Fehlerfläche. Und wer den DuckDB-Cache nicht aktiviert, bekommt bei den großen Datensätzen genau das Verhalten, das der Cache vermeiden sollte.
Alternative: direkt gegen die Portale, oder Open Data Portals
Die naheliegende Alternative ist, für jede benötigte Quelle einen eigenen dünnen Client zu schreiben, also httpx plus Pydantic gegen die dokumentierten Endpunkte von Câmara, Senado oder Portal da Transparência. Der Unterschied liegt nicht in der Datenqualität, sondern in der Aufgabe des Zwischenstücks: Der eigene Client kennt nur die Felder, die man wirklich braucht, hat keine Discovery-Heuristik und keine Tool-Registry, muss aber bei jeder Schemaänderung selbst nachgezogen werden. mcp-brasil tauscht diesen Wartungsaufwand gegen Abdeckung. Eine zweite Richtung sind generische Open-Data-Werkzeuge, die CSV- oder JSON-Exporte der Portale lokal auswerten, etwa mit DuckDB oder pandas. Das ist bei den großen Beständen wie SIAPA oder dem Schulzensum attraktiv, weil man die Rohdatei einmal lädt und danach ohne Netz arbeitet. Der Preis ist, dass man die Join-Logik zwischen den Quellen selbst schreibt, also genau die Arbeit, für die planejar_consulta gedacht ist. Die Wahl hängt damit an einer einzigen Frage: Werden viele Quellen kombiniert, oder wird eine Quelle tief ausgewertet?
Wartung, Versionierung und was die Lizenz nicht regelt
Das Projekt ist aktiv: Die letzten Releases v0.14.0 und v0.13.0 stammen beide vom 24. April 2026, v0.12.1 vom 14. April 2026, der letzte Push auf den Hauptzweig datiert vom 19. August 2026. Der Abstand zwischen den Minor-Releases beträgt teils Stunden, was auf eine Phase intensiver Erweiterung hindeutet. Für Betreiber heißt das: Die Tool-Oberfläche kann sich zwischen zwei Minor-Versionen ändern, und ein Agent, dessen Prompt auf bestimmte Tool-Namen zugeschnitten ist, muss beim Upgrade geprüft werden. Die Auto-Registry macht das Hinzufügen von Features billig, sie macht aber auch das Entfernen oder Umbenennen einzelner Tools unsichtbar, solange man die Release Notes nicht liest. Zur Lizenz: Der Code steht unter MIT, was Fork und kommerziellen Einsatz des Codes erlaubt. Das sagt nichts über die Daten. SOURCES.md und ACCEPTABLE_USE.md sind die maßgeblichen Dokumente, und beide sind nicht Teil der MIT-Gewährung. Eine rechtliche Bewertung, ob eine konkrete Auswertung zulässig ist, kann dieser Text nicht liefern, und das Projekt selbst verweist ausdrücklich darauf, dass es kein offizieller Regierungsdienst ist.
Redaktionelles Fazit
Wer brasilianische Regierungs-, Justiz- oder Statistikdaten in einen LLM-Workflow einbinden will und Python-Tooling akzeptiert, findet hier den breitesten mir bekannten Einstiegspunkt; wer nur eine einzelne API braucht, sollte direkt gegen deren Endpunkt schreiben, weil der Server dann nur Overhead und eine zusätzliche Fehlerquelle ist. Vor dem ersten produktiven Lauf sind drei Dinge zu prüfen: die Einträge der genutzten Quellen in SOURCES.md, die Bedingungen in ACCEPTABLE_USE.md und das tatsächliche Antwortverhalten der Endpunkte ohne eigenen API-Key, denn die README nennt 66 schlüsselfreie APIs, ohne deren Kontingente zu beziffern.
Community-Notizen