Spain & EU Public Data MCP
This MCP server gives MCP clients live, read-only search access to Spanish and EU public data through three tools.
Search Spain's BOE and BORME daily gazette summaries by keyword, section, bulletin type, and date range (max 31 days); returns titles, departments, and PDF/HTML links, up to 200 results.
Search EU funding and grant calls (Horizon Europe, Digital Europe, LIFE, CEF, etc.) by keyword and status (open, forthcoming, closed), sorted by deadline, up to 100 results.
Search EU TED public procurement notices by keyword, buyer country (ISO-3), CPV code, and publication date; newest first, up to 100 results.
All tools are read-only, need no API keys, return JSON with source links, and fetch data live from official sources.
Provides tools to search open and forthcoming EU grant calls (Horizon Europe, Digital Europe, LIFE, CEF, etc.) sorted by deadline, and to access EU public procurement notices on TED.
Provides tools to search EU public procurement notices on TED (Tenders Electronic Daily) by keyword, buyer country (ISO-3), CPV code, and date, returning source-linked JSON.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Spain & EU Public Data MCPAny new SME subsidies in the BOE this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Spain & EU Public Data MCP (by OpenData Forge)
Give Claude, Cursor or any MCP client live access to:
Tool | What it searches |
| Spain's Official State Gazette (BOE) and Companies Register Gazette (BORME) daily summaries – keyword, section, date range (≤31 days) |
| Open / forthcoming EU grant calls (Horizon Europe, Digital Europe, LIFE, CEF…) sorted by deadline |
| EU public procurement notices on TED – keyword, buyer country (ISO-3), CPV, date |
All tools are read-only, need no API keys, and return JSON with source links.
Example prompts
"Any new subsidies for SMEs published in the BOE this week?"
"List open EU calls about artificial intelligence closing in the next 60 days."
"Find Spanish software tenders published since 2026-10-01."
Related MCP server: tenderapi-mcp
Run
npm ci && npm run build
node dist/index.js # Streamable HTTP on :8080/mcp
node dist/index.js --stdio # stdioClaude Desktop / Cursor (stdio):
{ "mcpServers": { "spain-eu-data": { "command": "node", "args": ["/path/dist/index.js", "--stdio"] } } }Docker: docker build -t spain-eu-mcp . && docker run -p 8080:8080 spain-eu-mcp
Limits
BOE range ≤31 days/call, ≤200 results; EU funding ≤100; TED ≤100 per call. Data is fetched live from official sources; availability depends on them.
Data sources & attribution
Basado en datos de la Agencia Estatal Boletín Oficial del Estado – https://www.boe.es (reuse conditions: https://www.boe.es/informacion/aviso_legal/)
© European Union – EU Funding & Tenders Portal and TED (https://ted.europa.eu), reuse under Commission Decision 2011/833/EU. Not affiliated with or endorsed by these bodies.
Hosted versions
No install needed: use the hosted server on MCPize (free tier) or Smithery. Both require signing in to that platform.
Follow
Built and maintained by OpenData Forge.
Website: https://opendata-forge.pages.dev
LinkedIn: OpenData Forge
Tutorials: https://opendata-forge.hashnode.dev
Issues and feature requests: https://github.com/opendata-forge/eu-spain-public-data-mcp/issues
Available Tools
3 toolssearch_boe_bormeSearch Spain BOE / BORME daily bulletinsARead-onlyInspect
Search the daily summaries of Spain's Official State Gazette (BOE) and Companies Register Gazette (BORME) by keyword, section and date range (max 31 days). Returns titles, departments and PDF/HTML links. Source: Agencia Estatal BOE (https://www.boe.es).
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | No | Default today; range defaults to last 7 days | |
| dateFrom | No | ||
| keywords | No | Case-insensitive keywords (Spanish), any match | |
| sections | No | Section codes e.g. "1","3","5A" | |
| bulletins | No | Default ["BOE"] | |
| maxResults | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds real context beyond them by disclosing the 31-day window constraint and the shape of the result set (titles, departments, PDF/HTML links) in the absence of an output schema. It does not mention pagination or rate limits, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose, constraints/returns, provenance. Nothing is padded, and the scope constraint is front-loaded. The source URL sentence is borderline but defensible as provenance for an official gazette.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-value burden by naming the fields returned. For a 6-parameter, zero-required search tool the coverage is good, though the undocumented bulletins/maxResults defaults and lack of pagination notes leave small gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description reinforces the keyword/section/date-range dimensions plus the 31-day ceiling on the range. It adds nothing about bulletins (default BOE) or maxResults (cap 200), leaving those entirely to the schema, so it neither compensates for nor extends the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Search) and a precisely scoped resource: the daily summaries of Spain's BOE and BORME gazettes. The domain is so specific that it cannot be confused with the funding/tender siblings, and it spells out the gazette acronyms an agent might encounter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the three filter dimensions (keyword, section, date range) and a hard 31-day cap, which implies how the tool is meant to be driven, but it never says when to prefer it over another source or what happens when the range exceeds the limit. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_eu_fundingSearch EU funding & grant callsBRead-onlyInspect
Search open/forthcoming calls on the EU Funding & Tenders Portal (Horizon Europe, Digital Europe, LIFE, CEF, ...). Sorted by deadline. Source: European Commission.
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | No | Free-text, e.g. "artificial intelligence" | |
| statuses | No | ||
| maxResults | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful context about source, sorted-by-deadline ordering, and covered programmes, but does not describe rate limits, authentication, pagination, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and scope, with no wasted wording. The programme examples and source note earn their place by clarifying coverage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, open-world search tool with annotations covering safety, the description gives adequate domain context. However, it is incomplete for guiding correct use: it omits parameter semantics, alternative tools, and any practical search constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description should compensate for undocumented parameters. It mentions open/forthcoming statuses implicitly but says nothing about the keywords or maxResults parameters, leaving significant gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Search open/forthcoming calls on the EU Funding & Tenders Portal') and lists relevant EU programmes, making the domain clear. It does not explicitly distinguish itself from sibling tools such as search_ted_tenders or search_boe_borme, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states what can be searched but gives no guidance on when to use this tool versus alternatives. There is no mention of exclusions, prerequisites, or sibling tools, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ted_tendersSearch EU public tenders (TED)BRead-onlyInspect
Search public procurement notices on TED (Tenders Electronic Daily) by keyword, buyer country (ISO-3, e.g. ESP, DEU), CPV code and publication date. Newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| cpvCodes | No | ||
| keywords | No | ||
| countries | No | ISO 3166-1 alpha-3 | |
| maxResults | No | ||
| publishedAfter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine behavioral context beyond that – sort order ('Newest first') and the ISO-3 country convention (e.g. ESP, DEU) – but says nothing about result caps, pagination, default maxResults, or match semantics for keywords.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the filter list is grouped efficiently and the sort behavior is appended as a tight clause. Only minor gains would come from briefer phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter search with no output schema and no required parameters, the description covers the filter surface but leaves notable gaps: the default/limit behavior of maxResults, what a result record contains, and how results are paginated. Annotations cover safety, but the return-side completeness is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (just 'ISO 3166-1 alpha-3' on countries), so the description carries real compensating weight: it maps keywords, countries, CPV code and publication date to their filter meanings and supplies the ISO-3 example. It still omits the maxResults parameter entirely and gives no CPV/date format or multi-value combination semantics, so the compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names a specific verb (Search) and resource (public procurement notices on TED / Tenders Electronic Daily) and lists the filter fields, which is more than a restatement of the title. It does not, however, distinguish itself from the sibling search tools (search_boe_borme, search_eu_funding), leaving the agent to infer the boundary from the source name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or alternative routing. Because two siblings are also 'search_*' tools over adjacent data (Spanish BOE/BORME, EU funding), an agent gets no help deciding which source to query for a given need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
search_boe_borme - First observed
search_eu_funding - First observed
search_ted_tenders
TDQS
Scored across 3 tools
Each tool targets a clearly distinct data source: Spanish gazette (BOE/BORME), EU funding calls, and TED procurement notices. There is no overlap in purpose or query parameters, so an agent can unambiguously select the right tool.
All tools use the same search_ prefix followed by a source descriptor, forming a consistent verb_noun pattern. While the suffixes mix acronyms and descriptive terms, the overall convention is predictable and readable.
Three tools is a focused set that fits within the typical 3-15 range, and each tool is distinct. However, given the broad server name 'Spain & EU Public Data', the count feels slightly under-scoped, as more public data sources could reasonably be included.
The surface covers search across four major sources (BOE, BORME, EU funding, TED), but notable gaps remain: no tool to retrieve full details of a specific notice, no cross-source search, and BOE/BORME is limited to a 31-day window of daily summaries. These limitations could cause agent failures for deeper research tasks.
Maintenance
Related MCP Connectors
Normalized search over public-sector tenders in TED (EU official procurement notices) -- Spain + EU
US government data as clean JSON for AI agents: SAM.gov contract opportunities, USAspending awards, Grants.gov grants, House STOCK Act trades, and SEC EDGAR filings (Form 4 insider trades, 8-K events, 13F holdings, 13D/G stakes, XBRL fundamentals, 10-K/10-Q sections). 19 read-only tools. Data is as fresh as each source publishes; congressional trades lag up to 45 days and report dollar ranges (House only). Free tier, no card.
Search US grants + federal contracts (Grants.gov + SAM.gov) from any LLM.
TED MCP Server: Real-time EU public tenders access. https://www.lexsocket.ai/
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for querying Spanish government open data APIs including grants, legislation, company registry, statistics, and open data catalog. Enables LLMs to access Spanish public information on-the-fly.265MIT
- AlicenseAqualityBmaintenanceExposes French and EU public procurement data (BOAMP + TED) as MCP tools for AI agents, enabling search for tenders, awards, and winner intelligence via typed filters.4106 PyPIMIT
- AlicenseBqualityBmaintenanceEnables LLMs like Claude to query the official Spanish BOE API for consolidated legislation, daily summaries, and auxiliary government tables.3156MIT
- AlicenseAqualityDmaintenanceEnables querying and analyzing Spanish (BOE) and EU (EUR-Lex) legal documents, with advanced search, PDF extraction, and cross-reference detection.816 npm2MIT