BORME MCP Server
README.md
# BORME MCP Server
MCP server for **Spain's official company registry** (BORME — Boletín Oficial del
Registro Mercantil): 9.5M+ typed company events since 2009, updated every business
day. Incorporations, director appointments, insolvencies, capital changes — 52
event kinds as English enums.
## Hosted endpoint (no setup)
```json
{
"mcpServers": {
"borme": {
"url": "https://mcp.bormeapi.com/mcp"
}
}
}
```
Free, read-only, capped at 200 rows per query. Backed by the full 17-year corpus.
## Tools
| Tool | What it does |
|---|---|
| `search_events` | Filter events by date range, province, act type, company name |
| `company_history` | Full timeline of one company (fuzzy name match) |
| `daily_digest` | One day's registry activity, aggregated |
| `registry_stats` | Corpus coverage and volume stats |
| `list_act_types` | The 52-enum vocabulary with Spanish originals |
| `company_by_nif` | Resolve a NIF/CIF tax ID to a company (cross-referenced from open official sources, ~560k companies — 17% of the corpus) |
| `recent_signals` | Sample of derived risk signals: insolvencies, phoenix companies, mass officer exits, AEAT debtors (last 7 days) |
## Example prompts
- *"Which companies declared insolvency in Valencia last week?"*
- *"Show the corporate history of Telefónica Audiovisual Digital"*
- *"How many new companies were incorporated in Madrid in June?"*
## Self-hosting
`server.py` is the complete server (FastMCP + psycopg). It expects a Postgres
with the BORME schema and a read-only role:
```bash
BORME_DSN=postgresql://user:pass@host/borme \
BORME_MCP_TRANSPORT=streamable-http \
python server.py
```
Building the dataset yourself: see our engineering notes —
[You don't need to scrape BORME](https://bormeapi.com/blog/borme-open-data-api).
## Related
- REST API with webhooks & watchlists: [bormeapi.com](https://bormeapi.com)
- Apify actor (pay-per-event feed): [Spain Company Registry — BORME Events](https://apify.com/zon4a/spain-company-registry-borme-events)
## License
MIT (server code). The underlying data originates from [boe.es](https://www.boe.es)
open data (public sector information, Ley 37/2007).
TDQS
A4/5.0
Scored across 3 tools
Disambiguation5/5
Each tool serves a unique, non-overlapping purpose: company lookup by tax ID, recent risk signals, and listing event types. No ambiguity between them.
Naming Consistency4/5
All names use snake_case and are descriptive, but the pattern varies (noun_by_abbreviation, adjective_noun, verb_noun_noun). Still coherent and readable.
Tool Count2/5
Only 3 tools for a substantial domain like Spanish company registry (BORME). Missing core operations like company history, which is referenced but not exposed as a tool.
Completeness2/5
Domain coverage is minimal: company lookup (with incomplete NIF mapping), a teaser of recent signals, and event types. Critical workflows like full history, search, or filings are absent.
Maintenance
ActivityMaintained
ResponsivenessNo issues