protogrid

Search / io.github.digvijaysingh-ai/spain-open-data-mcp

Spain Open Data

R0· no sign-in

Market sizing, prices, rents, crime and locations in Spain from INE and other public data

v0.1.4 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality94new
Trust97of 100
Uptime, 30 days100%
Latency p50275 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "spain-open-data-mcp": {
      "type": "http",
      "url": "https://spain-open-data-mcp-165703905656.europe-west1.run.app/mcp"
    }
  }
}
claude mcp add --transport http spain-open-data-mcp https://spain-open-data-mcp-165703905656.europe-west1.run.app/mcp
[mcp_servers.spain-open-data-mcp]
url = "https://spain-open-data-mcp-165703905656.europe-west1.run.app/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "spain-open-data-mcp": {
      "type": "remote",
      "url": "https://spain-open-data-mcp-165703905656.europe-west1.run.app/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "spain-open-data-mcp": {
      "type": "http",
      "url": "https://spain-open-data-mcp-165703905656.europe-west1.run.app/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=spain-open-data-mcp&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vc3BhaW4tb3Blbi1kYXRhLW1jcC0xNjU3MDM5MDU2NTYuZXVyb3BlLXdlc3QxLnJ1bi5hcHAvbWNwIn0%3D"
}
{
  "servers": {
    "spain-open-data-mcp": {
      "type": "http",
      "url": "https://spain-open-data-mcp-165703905656.europe-west1.run.app/mcp"
    }
  }
}
{
  "mcpServers": {
    "spain-open-data-mcp": {
      "httpUrl": "https://spain-open-data-mcp-165703905656.europe-west1.run.app/mcp"
    }
  }
}
extensions:
  "spain-open-data-mcp":
    enabled: true
    name: "spain-open-data-mcp"
    type: streamable_http
    uri: "https://spain-open-data-mcp-165703905656.europe-west1.run.app/mcp"
    timeout: 300

Quality 94 / 100new

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations13 of 13 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 4,453 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pulltool history recorded for 3 of the 7 days needed
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvabledeps.dev does not know [email protected]

13 tools, about 4,453 tokens to load them all · tool set 7021b83047b9 · tools last changed 2026-10-17 · checked 2026-10-20 21:51 UTC

Tool changes

  • crimechangedoutput schema
  • rentschangedoutput schema
  • price_bandchangedoutput schema
  • compare_areaschangedoutput schema
  • incomechangedoutput schema
  • demographicschangedoutput schema
  • resolve_placechangeddescription, output schema
    before

    Find the INE code and level (CCAA, province, municipality, district, tract) for a place in Spain. Use this first when a question names a place. Returns the best match first, with alternatives (e.g. 'Valencia' is both a city and a province). Handles accents, Basque, Catalan and Galician names, and common English names (Seville, Catalonia). Neighbourhood names are not supported; use districts or tracts from `demographics` or `income` with `sub_areas`.

    after · 63% of words in common

    Find the INE code and level (CCAA, province, municipality, district, tract) for a place in Spain. Use this first when a question names a place. Returns the best match first, with alternatives (e.g. 'Valencia' is both a city and a province). Handles accents, Basque, Catalan and Galician names, and common English names (Seville, Catalonia). Districts and tracts are shown with the OpenStreetMap neighbourhood names inside them ('Valladolid distrito 10 (Parquesol, Girón, La Victoria)'), and a neighbourhood name ('Parquesol, Valladolid', 'Gràcia, Barcelona') returns the INE district that contains it.

  • compare_areaschangeddescription
    before

    Rank areas by opportunity for a business category: where is there most market per business. Each area gets a yearly market in euros, estimated competing businesses and an opportunity score against its region, all with ranges. Areas are ranked by the cautious (low) end of the score; areas too small for the category are left out and counted. Use for "where in Valladolid should I open a gym" or "which towns in Málaga province lack pharmacies".

    after · 95% of words in common

    Rank areas by market per competing business for a category (the opportunity score). Each area gets a yearly market in euros, estimated competing businesses and an opportunity score against its region, all with ranges. Areas are ranked by the cautious (low) end of the score; areas too small for the category are left out and counted. Use for "where in Valladolid should I open a gym" or "which towns in Málaga province lack pharmacies".

  • market_sizechangeddescription
    before

    Size the yearly market for a business category in a place in Spain, in euros, with a range. Market = households × INE household spending on the category × an income adjustment. Supply = competing businesses, calibrated against INE's company directory. Returns market per business and an opportunity score against the region (1.0 = same as the region), with every assumption listed. Assumptions can be overridden to test scenarios. Use for "how big is the market for X in Y" and "is Y under-served for X".

    after · 94% of words in common

    Size the yearly market for a business category in a place in Spain, in euros, with a range. Market = households × INE household spending on the category × an income adjustment. Supply = competing businesses, calibrated against INE's company directory. Returns market per business and an opportunity score: market per business against the region (1.0 = same as the region), not a forecast of openings. Every assumption is listed. Assumptions can be overridden to test scenarios. Use for "how big is the market for X in Y" and "is Y under-served for X".

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 97 / 100

provenance90
liveness100
freshness100
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-100% +updated-3d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

[email protected] PyPIthis version is not known to the dependency resolver

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://spain-open-data-mcp-165703905656.europe-west1.run.app/mcp streamable-httpnoneyes100%275 ms2026-07-282026-10-20
packageregistryversionruntimesecrets
spain-open-data-mcppypi0.1.4uvx

Tools (13)

businessesread-onlyCount businesses of a kind in a place in Spain, per 10,000 residents and per km², from OpenStreetMap. Use it to size competition and supply: how many gyms, cafés or dentists an area has, how that compares with the province, region and Spain, which brands dominate, and which districts or tracts are over- or under-served (rank sub-areas by per_10k_residents). Counts are lower bounds because OpenStreetMap is mapped by volunteers; where INE's company directory covers the same activity, the result says how complete the map looks in that region. Returns counts and brands only, never lists of individual premises.
catchmentread-onlyProfile the area within a radius (or a walking time) of an address: residents, households, income, age, and the businesses mapped there. With a category, also the yearly market in euros, competing businesses and an opportunity score against the region. Use for "who lives within 800 m of this shop" or "is there room for a bakery near Calle X". Addresses are checked against the municipality they name; ambiguous ones are refused with suggestions.
chartread-onlyDraw a chart (PNG) of a tool result: an opportunity ranking with ranges, income by district, an age pyramid or a population trend. Returns the image, the same text and sources as the underlying tool, and a source line on the image. If drawing fails the text still comes back.
compare_areasread-onlyRank areas by market per competing business for a category (the opportunity score). Each area gets a yearly market in euros, estimated competing businesses and an opportunity score against its region, all with ranges. Areas are ranked by the cautious (low) end of the score; areas too small for the category are left out and counted. Use for "where in Valladolid should I open a gym" or "which towns in Málaga province lack pharmacies".
crimeread-onlyRecorded crime in a place from the Interior ministry: offences by type (theft, burglary, robbery, assault, drugs, cybercrime and more) for the latest full year, per 1,000 residents, the change on the year before, the latest year-to-date figures, and province, region and Spain for comparison. Published for municipalities over 20,000 residents, provinces and regions; smaller places get the province's figures, and the result says so.
demographicsread-onlyPopulation, sex, five-year age bands, 5-year trend, and household profile for a place in Spain. Municipality, province and CCAA: census population by age band (latest 1 January), cross-checked against the official Padrón figure. District and tract: census age bands and sex from INE's file by census tract. Municipality, district and tract: household size, single-person households, mean age, share under 18 and 65+ from INE's income atlas. Use sub_areas to compare a city's districts or tracts, e.g. to find where young families or older residents concentrate.
find_datasetsread-onlySearch Spain's national open-data catalogue (datos.gob.es) for datasets on a topic. Returns each dataset's title, publisher, licence, file formats, update frequency and last change, and an id to pass to read_dataset. Use when a question needs data this server does not hold directly (parking, licences, local events, tourist offices, transport).
incomeread-onlyHousehold income for a place in Spain from INE's income atlas, down to census tract. Returns net and gross income per person and per household, mean and median per consumption unit, inequality (Gini, P80/P20), income sources (wages, pensions, benefits), a trend, and benchmarks against the province, region and Spain. Use it for purchasing power, price positioning and choosing between districts. Figures are euros of the data year; the atlas runs about two years behind.
market_sizeread-onlySize the yearly market for a business category in a place in Spain, in euros, with a range. Market = households × INE household spending on the category × an income adjustment. Supply = competing businesses, calibrated against INE's company directory. Returns market per business and an opportunity score: market per business against the region (1.0 = same as the region), not a forecast of openings. Every assumption is listed. Assumptions can be overridden to test scenarios. Use for "how big is the market for X in Y" and "is Y under-served for X".
price_bandread-onlySuggest a price range for a place from local purchasing power and inflation. Public data has no competitor prices, so this adjusts a price you know (from elsewhere or an earlier date) to this place today: CPI for the category's group since that month, then local median income per consumption unit against the reference place. Returns a range from no local adjustment to full adjustment, labelled as an estimate.
read_datasetread-onlyRead a datos.gob.es dataset: its columns and up to 20 sample rows, with its licence. Reads CSV and JSON files listed in the catalogue (the first 5 MB). Columns that look like personal data (names, ID numbers, emails, phones) are withheld. Values are shown as the publisher published them.
rentsread-onlyHow housing rents have changed in a place: INE's rent index (IPVA, 2015 = 100) with the change over the last year, five years and since 2015, against province, region and Spain. Covers municipalities over 10,000 residents, districts of provincial capitals, provinces and regions (not the Basque Country or Navarra). Gives changes, not rents in euros.
resolve_placeread-onlyFind the INE code and level (CCAA, province, municipality, district, tract) for a place in Spain. Use this first when a question names a place. Returns the best match first, with alternatives (e.g. 'Valencia' is both a city and a province). Handles accents, Basque, Catalan and Galician names, and common English names (Seville, Catalonia). Districts and tracts are shown with the OpenStreetMap neighbourhood names inside them ('Valladolid distrito 10 (Parquesol, Girón, La Victoria)'), and a neighbourhood name ('Parquesol, Valladolid', 'Gràcia, Barcelona') returns the INE district that contains it.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.digvijaysingh-ai/spain-open-data-mcp",
  "title": "Spain Open Data",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://spain-open-data-mcp-165703905656.europe-west1.run.app/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.1.4",
  "packages": [
    {
      "version": "0.1.4",
      "transport": {
        "type": "stdio"
      },
      "identifier": "spain-open-data-mcp",
      "runtimeHint": "uvx",
      "registryType": "pypi",
      "registryBaseUrl": "https://pypi.org"
    }
  ],
  "repository": {
    "url": "https://github.com/digvijaysingh-ai/spain-open-data-mcp",
    "source": "github"
  },
  "websiteUrl": "https://digvijaysingh-ai.github.io/spain-open-data-mcp/",
  "description": "Market sizing, prices, rents, crime and locations in Spain from INE and other public data"
}