Ce face
Un server MCP care poate rula remote prin Streamable HTTP sau local pe calculatorul tău și dă asistentului acces la surse publice și gratuite:
| Sursă | Ce conține |
|---|---|
| ANAF — registrul TVA | denumire, nr. reg. com., adresă, CAEN, plătitor TVA, TVA la încasare, split TVA, firme inactive, radiate, RO e-Factura |
| ANAF — bilanțuri | situații financiare anuale: cifră de afaceri, profit/pierdere, active, datorii, număr de salariați |
| BNR — curs valutar | cursul de referință de azi și din arhiva pe ani |
Toate sunt endpoint-uri publice: nu ai nevoie de cont, de cheie de API sau de abonament la vreun agregator.
Tool-urile
anaf_firma
Un CUI: datele complete plus un verdict scurt — „OK" sau „ATENȚIE" dacă firma e inactivă, radiată sau neplătitoare de TVA.
anaf_firme
Până la 100 de CUI-uri într-un singur apel. Întoarce și listele separate de firme inactive, neplătitoare de TVA și negăsite — bun pentru curățat baza de clienți sau furnizori.
anaf_bilant
Situațiile financiare pe un an, cu indicatorii în lei și denumirea CAEN.
bnr_curs
Cursul zilei sau al unei date din trecut. Pentru weekend și sărbători întoarce ultima zi bancară.
bnr_conversie
Conversie între valute la cursul BNR dintr-o dată anume.
search_caen
Caută în nomenclatorul CAEN după cod (4754 sau prefixul 47) ori după cuvinte din denumire. Diacriticele nu contează.
top_firme
Clasamentul firmelor dintr-un an după cifra de afaceri, profit net sau salariați — filtrabil pe cod CAEN și județ. Fără limitări Free/Pro: câte ceri, atâtea primești.
search_company
Caută firma după denumire, nu după CUI — ANAF nu are așa ceva. Folosește lista Registrului Comerțului indexată de server și întoarce CUI-ul.
Varianta rapidă: conector prin link
Deploy-ul remote este public, read-only și nu cere cont, OAuth Client ID, secret sau cheie API.
După deploy, endpointul conectorului este:
https://NUMELE-DEPLOYMENTULUI.vercel.app/mcp
Claude / Claude Desktop
Deschide Customize → Connectors → + → Add custom connector, pune un nume și lipește URL-ul complet terminat în /mcp. Lasă setările OAuth necompletate.
claude mcp add --transport http anaf https://NUMELE-DEPLOYMENTULUI.vercel.app/mcp
claude mcp list
Codex / ChatGPT desktop
Deschide Settings → MCP servers → Add server → Streamable HTTP și lipește același URL.
codex mcp add anaf --url https://NUMELE-DEPLOYMENTULUI.vercel.app/mcp
codex mcp list
/mcp, nu pagina GitHub și nu această pagină de documentație.Instalare locală (opțional)
Descărcare și test
Ai nevoie doar de Python 3 — există deja pe macOS și Linux; pe Windows se ia de pe python.org.
git clone https://github.com/sergiudanstan/anaf-mcp.git
cd anaf-mcp
python3 anaf_mcp.py --firma 14399840
Dacă vezi un JSON cu "denumire": "DANTE INTERNATIONAL SA", serverul merge. Reține calea absolută — o folosești la pașii următori:
pwd # ex: /Users/dan/anaf-mcp
# → calea completă e /Users/dan/anaf-mcp/anaf_mcp.py
Claude Code local
O singură comandă, din orice folder:
claude mcp add anaf -- python3 /CALEA/ABSOLUTA/CATRE/anaf-mcp/anaf_mcp.py
Adaugă -s user dacă vrei serverul disponibil în toate proiectele, nu doar în cel curent:
claude mcp add anaf -s user -- python3 /CALEA/ABSOLUTA/CATRE/anaf-mcp/anaf_mcp.py
claude mcp list # anaf trebuie să apară cu ✓ connected
În sesiune, /mcp îți arată tool-urile încărcate. De acolo încolo ceri în limbaj natural:
verifică CUI 14399840 la ANAF
ia-mi bilanțul pe 2024 pentru 14399840 și spune-mi marja netă
am lista asta de CUI-uri din facturi — care sunt inactive sau neplătitoare de TVA?
cât era euro pe 30 iunie 2026?
convertește 12.500 EUR în RON la cursul din 15 martie 2026
Ștergi serverul cu claude mcp remove anaf.
Codex local
Editezi ~/.codex/config.toml și adaugi:
[mcp_servers.anaf]
command = "python3"
args = ["/CALEA/ABSOLUTA/CATRE/anaf-mcp/anaf_mcp.py"]
Pe versiunile recente de Codex CLI merge și direct din terminal:
codex mcp add anaf -- python3 /CALEA/ABSOLUTA/CATRE/anaf-mcp/anaf_mcp.py
codex mcp list
Repornești codex și ceri la fel, în limbaj natural.
mcp_servers (cu underscore), iar în Claude mcpServers (camelCase). E cea mai frecventă greșeală de configurare.Claude Desktop local
Editezi ~/Library/Application Support/Claude/claude_desktop_config.json pe macOS, sau %APPDATA%\Claude\claude_desktop_config.json pe Windows:
{
"mcpServers": {
"anaf": {
"command": "python3",
"args": ["/CALEA/ABSOLUTA/CATRE/anaf-mcp/anaf_mcp.py"]
}
}
}
Repornești complet aplicația (Quit, nu doar închis fereastra). Tool-urile apar la iconița MCP din bara de input.
Indexul de date (sincronizare unică)
search_company și top_firme lucrează peste un index local. Îl iei gata construit, dintr-o comandă:
python3 anaf_mcp.py --sync
Descarcă ~350 MB de pe GitHub Releases și îl despachetează în ~/.cache/anaf-mcp/. Conține 4.201.586 de firme de la Registrul Comerțului și 899.961 de rânduri din situațiile financiare anuale.
Indexul se reconstruiește cu tools/build_index.py și se publică ca release. Build-ul trebuie rulat dintr-o rețea din România: data.gov.ro rezolvă DNS-ul, dar refuză conexiunile din cloud-ul din afara țării — pe runnerele GitHub expiră.
Fluxul firesc: cauți după nume → iei CUI-ul → îl dai la anaf_firma pentru datele fiscale la zi. Indexul e o fotografie lunară; ANAF e sursa live.
În deployment-ul remote, indexul compact este inclus automat; utilizatorul nu descarcă nimic.
Verificare din terminal, fără client
Fiecare tool are un echivalent CLI — util ca să vezi dacă problema e la server sau la client:
python3 anaf_mcp.py --firma RO14399840
python3 anaf_mcp.py --bilant 14399840 2024
python3 anaf_mcp.py --curs 2026-06-30
python3 anaf_mcp.py --caen instalatii electrice
python3 anaf_mcp.py --cauta dante international
python3 anaf_mcp.py --top 4754
python3 anaf_mcp.py --test
Dacă nu merge
| Simptom | Cauză uzuală |
|---|---|
| serverul nu apare / „failed to connect" | calea din config nu e absolută, sau python3 nu e în PATH-ul clientului — pune calea completă, ex. /usr/bin/python3 |
| merge în terminal, dar nu în client | ai editat alt fișier de config, sau nu ai repornit clientul |
| HTTP 403 de la ANAF | ai modificat USER_AGENT; WAF-ul ANAF respinge șirurile cu paranteze sau ; |
| date vechi | e cache-ul: rm -rf ~/.cache/anaf-mcp |
| Claude cere OAuth Client ID | ai introdus pagina GitHub în locul URL-ului remote terminat în /mcp |
Cache și limite
Cache pe disc în ~/.cache/anaf-mcp/ (sau ANAF_MCP_CACHE_DIR), cu prospețime diferită per tip de date: 6 ore datele de firmă, 30 de zile bilanțurile, 30 de minute cursul zilei, 90 de zile arhiva anilor încheiați.
Limitele ANAF sunt respectate de server: maximum 100 de CUI-uri per apel și un apel pe secundă — cererile se serializează și așteaptă singure.
Ce nu acoperă
Contracte și achiziții publice (SEAP/SICAP). API-ul public de la e-licitatie.ro răspunde, dar filtrele după firmă, dată sau cod CPV sunt ignorate de server — întoarce mereu aceeași felie fixă de 2000 de înregistrări. Fără contractul corect de filtrare, orice tool peste el ar da rezultate greșite, așa că nu există aici.
Asociați, administratori, istoric mențiuni. ONRC le dă doar prin RECOM, contra cost. Lista reprezentanților legali există totuși ca fișier deschis pe data.gov.ro, dacă vrei să o indexezi la fel ca lista firmelor.