Disclosure: I maintain the open-source MCP server used here (MIT licence) and its hosted versions on MCPize (free plan plus paid plans, so I earn from paid subscriptions) and Smithery (free). This article was written with AI assistance, and every command was run and checked before publishing.
Spain's Boletín Oficial del Estado (BOE) publishes new laws, grants, public jobs and tender notices every day, and its sister bulletin BORME publishes company registry acts. Both have an official open-data API, but asking an AI assistant "any SME grants in the BOE this week?" normally gets you a stale or made-up answer.
The Model Context Protocol fixes that by giving the assistant a real tool to call. In about five minutes you'll have Claude Desktop or Cursor querying the live BOE, plus EU funding calls and EU tenders (TED).
The server
eu-spain-public-data-mcp exposes three read-only tools, and none of them need an API key:
| Tool | Source |
|---|---|
search_boe_borme |
BOE / BORME daily summaries (keywords, sections, date range up to 31 days) |
search_eu_funding |
EU Funding & Tenders Portal: open and forthcoming calls, sorted by deadline |
search_ted_tenders |
TED procurement notices (keyword, buyer country, CPV, date) |
Option A: run it locally (free)
Requires Node 20+.
git clone https://github.com/thehomer87/eu-spain-public-data-mcp
cd eu-spain-public-data-mcp
npm ci && npm run build
Claude Desktop: edit claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"spain-eu-data": {
"command": "node",
"args": ["/absolute/path/eu-spain-public-data-mcp/dist/index.js", "--stdio"]
}
}
}
Cursor: put the same block in ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project), then enable it under Settings → MCP.
Restart the app. You should see three tools under "spain-eu-data".
Option B: hosted, nothing to install
The same server runs on MCPize. Subscribe to the free plan (50 calls a month) and copy the connection snippet MCPize shows you into the same config file. Hosting has paid tiers if you need more calls.
Option C: Smithery
The server is also listed on Smithery, which generates the config for Claude Desktop, Cursor and other clients in one click.
Check it works (without an AI client)
Before blaming your config, talk to the server directly over stdio. The repo ships a smoke test that starts the server, lists the tools and makes four real calls:
cd eu-spain-public-data-mcp
npm test
The output from a fresh clone on 17 Oct 2026 (abridged):
stdio tools: search_boe_borme, search_eu_funding, search_ted_tenders
search_boe_borme {"keywords":["subvenci"],"maxResults":5} -> 5 items in 1568ms | first: "Real Decreto 832/2026, de 14 de octubre, por el que se regula la concesión directa de una subvención a la Fun…
search_boe_borme {"bulletins":["BORME"],"maxResults":3} -> 3 items in 257ms
search_eu_funding {"keywords":"artificial intelligence","maxResults":5} -> 5 items in 1038ms | first: "Artificial Intelligence for Cybersecurity applications"
search_ted_tenders {"keywords":"software","countries":["ESP"],"maxResults":5} -> 5 items in 670ms
If that works but your AI client shows no tools, the problem is the config path or the client wasn't restarted. A good first BOE call to try, because the parameter names matter:
{ "keywords": ["ayudas", "subvenciones"], "sections": ["3", "5B"], "dateFrom": "2026-10-12", "dateTo": "2026-10-17", "maxResults": 3 }
Prompts that work well
- "Search the BOE from the last 7 days for grants (sections 3 and 5B) mentioning digitalización and summarise who can apply."
- "List open EU calls about artificial intelligence closing in the next 90 days, as a table with deadline and programme."
- "Find Spanish software tenders (CPV 72000000) published on TED since Monday."
- "What did BORME publish yesterday about company formations in Madrid?" (use
bulletins: ["BORME"])
BOE section codes cheat sheet
1 general provisions (laws, royal decrees) · 2A/2B appointments and public exams · 3 other provisions (many grant rules) · 5A tender notices · 5B other notices (grant extracts) · BORME A/B company acts.
Gotchas I hit while testing
- Keyword matching covers the title and the department name, so "digital" matches everything published by the Ministerio para la Transformación Digital. Combine keywords with
sections. - Unknown argument names are silently ignored.
fromandlimitdon't work: usedateFromandmaxResults. - A range is capped at 31 days per call. Ask the assistant to page through months.
Data: Agencia Estatal Boletín Oficial del Estado (www.boe.es); © European Union (EU Funding & Tenders Portal, TED), reused under Commission Decision 2011/833/EU. Not affiliated with or endorsed by these bodies.
Top comments (0)