EcuDataMCP
Open public-data infrastructure for Ecuador
Explore open data.
Connect your AI assistant to verifiable public data from Ecuador: datasets, procedures, contracts, earthquakes, BCE indicators, RUC and companies. Find the source, query with limits, and always cite the official origin.
For adults the electronic passport costs USD 90, with no VAT. Seniors pay half. A disability of 30% or more means no fee.
proof of payment valid ID card previous passport, if it is still validsource · gob.ec, Civil Registry
The problem
Less time in portals. More answers from your data.
Ecuador publishes a huge amount of public data, but finding it means navigating different portals, checking separate catalogs, and guessing which file is current. EcuDataMCP gives your AI assistant the tools to do that work for you, and still cites the official source in every answer.
How it works
A traceable path.
Four steps, from natural language to the official source.
Search
search_ecuador searches datasets, procedures, regulations, contracts, and risk events by keyword, all at once.
Inspect
get_dataset_info and list_dataset_resources check fields, formats, and dates before pulling any data.
Query
query_resource_data filters the CKAN DataStore without downloading the whole file, or preview_resource_data for CSV, JSON, and XLSX.
Cite
Every result links back to the official source (the dataset, the procedure, the SERCOP record) so you can verify it.
What can you ask?
Ask in plain language, without searching portal by portal.
59 official sources, in a single conversation.
Sources
Official data, always cited.
EcuDataMCP never copies or stores these catalogs: every query goes live against the source portal. 59 sources grouped by theme — Central Bank, SRI, INEC, Supercías, Superbancos and more — each tied to its own institution.
The backstage
Open-source MCP server.
EcuDataMCP runs as a Python server built with the official MCP SDK, exposed over Streamable HTTP or stdio. There is no database of its own: every tool calls the matching official portal live (CKAN, gob.ec, SERCOP, BCE, Supercías, IG-EPN, SGR) and returns the formatted response.
Connect your assistant
Copy your client's configuration.
Run the server locally (Docker or uv run, see the README) and point your MCP client at http://localhost:8000/mcp. The Docker compose file requires a token: set MCP_AUTH_TOKEN (or MCP_REQUIRE_AUTH=0 for local use only). For a local stdio client, the simplest option is uvx ecuador-mcp --transport stdio.
Quick option
If your assistant has terminal access, hand it the repo link and let it install everything for you:
Clone https://github.com/DweskZ/EcuDataMCP, install its dependencies with uv sync,
and register it as an MCP server in my client using stdio mode with
`uv run --directory <clone-path> python main.py --transport stdio`.
Verify the server responds before calling it done.
Always review what your assistant changes (config files, commands run) before confirming. This option only works with assistants that can run commands on their own: today that's Claude Code, Codex, Cursor, and Windsurf in agent mode. With ChatGPT, chat-only Claude.ai, or other terminal-less clients, use the manual configuration below.
Add this to your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"ecuador-datos": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8000/mcp"
]
}
}
}- Open Cursor Settings
- Search for "MCP"
- Add a new MCP server:
{
"mcpServers": {
"ecuador-datos": {
"url": "http://localhost:8000/mcp",
"transport": "http"
}
}
}Add to your mcp.json file (run MCP: Open User Configuration from the command palette):
{
"servers": {
"ecuador-datos": {
"url": "http://localhost:8000/mcp",
"type": "http"
}
}
}*Available on paid plans (Plus, Pro, Team, Enterprise).*
- Go to
Settings>Apps and connectors - Open
Advanced settingsand enable Developer mode - In
Settings>Connectors>Browse connectors, click Add a new connector - Set the URL:
http://localhost:8000/mcp
claude mcp add --transport http ecuador-datos http://localhost:8000/mcpSaves the configuration to ~/.codex/config.toml (an [mcp_servers.ecuador-datos] block with url). To use the server over stdio instead of HTTP: codex mcp add ecuador-datos -- uvx ecuador-mcp --transport stdio.
codex mcp add ecuador-datos --url http://localhost:8000/mcpAdd to ~/.gemini/settings.json:
{
"mcpServers": {
"ecuador-datos": {
"httpUrl": "http://localhost:8000/mcp"
}
}
}- Go to
Intelligence>Connectors Add connector>Custom MCP Connector- Name: "Ecuador Datos" / URL:
http://localhost:8000/mcp
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"ecuador-datos": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:8000/mcp"]
}
}
}- In the chat, click the
+icon >MCP Servers>Manage MCP Servers Add Serverwith name "Ecuador Datos" and URLhttp://localhost:8000/mcp
Troubleshooting
Something not working?
Start by confirming the server is alive. If it responds, the problem is almost always in the client configuration or the upstream portal, not in EcuDataMCP.
curl http://localhost:8000/healthIt should return {"status":"ok", "version": ...}. If it doesn't respond, the server isn't running or is listening on a different port.
My client shows no tools
Check, in order: (1) the server is running (/health responds); (2) the URL ends in /mcp, not / or /health; (3) the config JSON is valid (one stray comma silently breaks it); and (4) you fully restarted the client after editing the config. Claude Desktop, Cursor, and Windsurf only read the file at startup.
Claude Desktop or Windsurf: npx not found
Those configs use mcp-remote as a bridge, which needs Node.js 18+ installed and on the PATH. Install it from nodejs.org and restart the client. Node-free alternative: use stdio mode with "command": "uv" and "args": ["run", "--directory", "<clone-path>", "python", "main.py", "--transport", "stdio"].
Port 8000 is already in use
Start the server on another port (uv run main.py --port 8007, or MCP_PORT=8007 docker compose up -d) and change the client URL to http://localhost:8007/mcp.
In stdio mode the server exits immediately
Run the same command by hand in a terminal to see the real error. Typical causes are a wrong --directory path, not having run uv sync in the clone, or uv not being on the PATH the client sees (in that case, use the absolute path to uv).
ChatGPT or Le Chat can't reach localhost
Web clients run in the cloud and can't see your machine. You need to expose the server at a public HTTPS URL (a tunnel or your own deployment) and, in that case, enable MCP_REQUIRE_AUTH=1 with an MCP_AUTH_TOKEN. Never expose the server without a token.
401, 429, or 503 error from the server
401: the server requires a token (MCP_AUTH_TOKEN) and the client isn't sending it as Authorization: Bearer .... 429: you exceeded the per-window request limit (MCP_RATE_LIMIT_REQUESTS, 120 per 60 s by default); wait, or raise it for local use. 503: too many concurrent requests (MCP_MAX_CONCURRENT_REQUESTS, 8 by default).
403 error or timeout from the Open Data portal
www.datosabiertos.gob.ec sometimes rejects connections coming from outside Latin America (403 error). If you see this, run the server from a connection with an exit point in Ecuador or the region (a VPN, for example). The procedures and institutions tools use a different portal and don't have this issue. Government portals also have their own outages: if a single tool fails while the rest respond, try again later.
TLS / SSL certificate error
Some official portals have served expired certificates or incomplete chains (the Open Data portal's expired in July 2026). For that portal there's an opt-in retry: CKAN_INSECURE_TLS=1 in your .env. Use it only while the portal is broken and remove it afterward.
The preview is cut off or says the file is too large
That's intentional: downloads are capped at 5 MB and ZIP/tar.gz decompression at 20 MB. For large resources use query_resource_data (filters in the CKAN DataStore without downloading the file) or list_zip_contents to see what a ZIP contains before opening it.
I need more detail to report a bug
Start with LOG_LEVEL=DEBUG, reproduce the error, and open a GitHub issue with the tool, its parameters, the /health output, and the log. Don't include tokens.
No friction
Ready to use, no setup of your own.
- No API keyAll sources are public data, no authentication. (The HTTP endpoint can be protected with your own token,
MCP_AUTH_TOKEN.) - No accountThere is no sign-up or user account to create.
- 100% public dataUnder an open license, exactly as the Ecuadorian state publishes it.
- No telemetryThe server runs on your machine and sends your queries to no one; it only keeps local per-tool usage counters (never the arguments).
FAQ
Got more questions?
What is EcuDataMCP?
An open-source MCP (Model Context Protocol) server that helps your AI assistant discover and query Ecuador's open government data: datasets, procedures, regulations, public contracts, risk events, earthquakes, Central Bank indicators, and companies.
What is MCP?
Model Context Protocol is an open standard for connecting AI assistants to external tools and data sources, while keeping control over what the model can do and what data it can read.
What assistants can I use?
Any MCP-compatible client: Claude Desktop, Claude Code, Codex, ChatGPT (paid plans), Cursor, VS Code, Gemini CLI, Le Chat, Windsurf, HuggingChat, and more.
Do I need an API key?
No. Every source the server uses is public data with no authentication.
Is this an official service of the Ecuadorian government?
No. EcuDataMCP is an independent, open-source project that queries the same public sources the Ecuadorian state already publishes. It is not affiliated with any institution.
Does the server store my questions?
There is no external telemetry. The server runs locally on your machine, and every query goes straight from the MCP client to the matching official portal. The only thing recorded is local per-tool usage counters (name, outcome and duration, never the arguments).
What formats does it support?
In-memory preview of CSV, TSV, JSON, GeoJSON, and XLSX; filtered tabular queries via the CKAN DataStore when the resource supports it.
Something isn't working, where do I look?
See the Troubleshooting section: it covers clients that show no tools, busy ports, 401/403/429 errors, TLS certificates, and oversized files.
Can I contribute?
Yes, the project is MIT-licensed and accepts pull requests. See the guide at Contribute.
Ecuador's open data, with your favorite AI assistant.
View on GitHub







