Ecuador's open government data for AI assistants: CKAN, SRI, BCE, INEC, Supercias, SERCOP and more.
Infraestructura abierta de datos públicos para Ecuador. EcuDataMCP conecta asistentes de IA, investigadores, periodistas y software con datos oficiales ecuatorianos mediante una interfaz común.
Utiliza el Model Context Protocol (MCP) para que clientes compatibles como Claude, ChatGPT, Gemini y Cursor puedan buscar, explorar y analizar esos datos mediante conversación o software.
En lugar de navegar manualmente por portales gubernamentales, simplemente pregunta cosas como:
Aviso: Las definiciones, parámetros y descripciones de algunas herramientas fueron generadas o asistidas por IA y pueden estar incompletas, desactualizadas o no cubrir todos los casos del endpoint subyacente. Una herramienta puede devolver resultados parciales, rechazar parámetros válidos o comportarse de forma inesperada cuando cambia la fuente oficial. Verifica siempre la respuesta contra la fuente enlazada y revisa manualmente los resultados antes de usarlos para decisiones importantes.
preview_resource_data parsea CSV/TSV, JSON/GeoJSON, Excel (XLS/XLSX) y algunos archivos comprimidos en memoria; query_resource_data consulta el DataStore CKAN sin bajar el archivo completo.Este MCP unifica fuentes gubernamentales en un solo servidor:
| Fuente | Datos |
|---|---|
| Datos Abiertos y Cuenca en Datos (CKAN) | Catálogos, DataStore y archivos públicos |
| SRI | Datasets estadísticos, recaudación, RUC y Saiku público |
| Gob.ec | Trámites, instituciones y regulaciones |
| SERCOP/OCDS | Contratación pública |
| SGR e IG-EPN | Eventos de riesgo, tsunami y sismos |
| INEC | ANDA, Ecuador en Cifras, censos y recursos estadísticos |
| BCE | BCEData, IEM y otros indicadores económicos públicos |
| Superintendencia de Compañías | Directorio, auditores y datos financieros |
| Geografía INEC/DPA | Provincias, cantones y parroquias |
Sin API key para las fuentes públicas compatibles.
La forma más simple no necesita levantar ningún servidor: Claude Desktop
ejecuta el paquete de PyPI con uv. Agrega lo
siguiente a tu archivo de configuración (~/Library/Application Support/Claude/claude_desktop_config.json
en macOS, %APPDATA%\Claude\claude_desktop_config.json en Windows):
{
"mcpServers": {
"ecuador-datos": {
"command": "uvx",
"args": ["ecuador-mcp", "--transport", "stdio"]
}
}
}
También puedes instalar el archivo .mcpb adjunto a cada
release como extensión de
Claude Desktop. Si ya tienes el servidor HTTP corriendo (ver
Ejecutar localmente), usa "command": "npx" con
"args": ["mcp-remote", "http://localhost:8000/mcp"].
{
"mcpServers": {
"ecuador-datos": {
"url": "http://localhost:8000/mcp",
"transport": "http"
}
}
}
Agrega a tu archivo mcp.json (ejecuta MCP: Open User Configuration desde la paleta de comandos):
{
"servers": {
"ecuador-datos": {
"url": "http://localhost:8000/mcp",
"type": "http"
}
}
}
Disponible para planes pagos (Plus, Pro, Team, Enterprise).
Settings > Apps and connectorsAdvanced settings y habilita Developer modeSettings > Connectors > Browse connectors, haz clic en Add a new connectorhttp://localhost:8000/mcpclaude mcp add --transport http ecuador-datos http://localhost:8000/mcp
Agrega a ~/.gemini/settings.json:
{
"mcpServers": {
"ecuador-datos": {
"httpUrl": "http://localhost:8000/mcp"
}
}
}
Intelligence > ConnectorsAdd connector > Custom MCP Connectorhttp://localhost:8000/mcpAgrega a ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"ecuador-datos": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:8000/mcp"]
}
}
}
+ > MCP Servers > Manage MCP ServersAdd Server con nombre "Ecuador Datos" y URL http://localhost:8000/mcpuvx (desde PyPI)uvx ecuador-mcp --transport stdio
search_ranking/get_financials usan una base SQLite local de Supercías que
se construye sola en segundo plano cuando la primera consulta la necesita
(descarga ~356 MB, 5-10 min; esa consulta pide reintentar). Instalado desde PyPI se guarda en el directorio de datos del usuario
(%LOCALAPPDATA%\ecuador-mcp en Windows, ~/Library/Application Support/ecuador-mcp
en macOS, ~/.local/share/ecuador-mcp en Linux); ECUADOR_MCP_DATA_DIR
cambia la ubicación.
La imagen arranca por stdio, como cualquier servidor MCP en Docker:
docker build -t ecuador-mcp https://github.com/DweskZ/EcuDataMCP.git
docker run -i --rm ecuador-mcp
Para el servidor HTTP, docker compose fija MCP_TRANSPORT=http:
git clone https://github.com/DweskZ/EcuDataMCP.git
cd EcuDataMCP
# Iniciar con configuración por defecto (puerto 8000)
docker compose up -d
# Con variables personalizadas
MCP_PORT=8007 LOG_LEVEL=DEBUG docker compose up -d
# Detener
docker compose down
Requiere Python 3.11+ y uv.
git clone https://github.com/DweskZ/EcuDataMCP.git
cd EcuDataMCP
# Instalar dependencias
uv sync
# Copiar variables de entorno
cp .env.example .env
# Iniciar el servidor
uv run main.py
Variables de entorno:
| Variable | Descripción | Default |
|---|---|---|
MCP_HOST | Dirección de bind | 127.0.0.1 |
MCP_PORT | Puerto del servidor | 8000 |
MCP_TRANSPORT | Transporte: http o stdio | http |
LOG_LEVEL | Nivel de log (DEBUG, INFO, WARNING, ERROR) | INFO |
MCP_AUTH_TOKEN | Token Bearer opcional para /mcp | vacío |
MCP_REQUIRE_AUTH | Rechaza el arranque remoto sin token | 0 |
MCP_RATE_LIMIT_REQUESTS / MCP_RATE_LIMIT_WINDOW_SECONDS | Cuota por cliente/IP | 120 / 60 |
MCP_SSL_CERTFILE / MCP_SSL_KEYFILE | Certificado y clave para TLS directo | vacío |
ECUADOR_MCP_USAGE_LOG | 1 guarda cada llamada (tool, resultado, duración; nunca argumentos) en usage.jsonl del directorio de datos; scripts/usage_report.py lo resume | vacío |
ECUADOR_MCP_DATA_DIR | Dónde guardar la base de Supercías y los snapshots del BCE | data/ en un clon; directorio de datos del usuario si se instaló desde PyPI |
Para ejecutar el transporte stdio localmente:
uv run python main.py --transport stdio
La referencia detallada de cada herramienta está en docs/TOOLS.md. El contrato JSON para agentes de BCEData/IEM está en docs/RESPONSE_CONTRACT.md.
| Endpoint | Descripción |
|---|---|
POST /mcp | Mensajes JSON-RPC (cliente → servidor) |
GET /health | Health check: {"status":"ok","uptime_since":"...","version":"..."} |
GET /usage | Llamadas, errores y latencia p50/p95 por tool desde el arranque |
Cuando MCP_AUTH_TOKEN está definido, POST /mcp requiere el encabezado
Authorization: Bearer <token>. Para un despliegue remoto usa también
MCP_REQUIRE_AUTH=1, HTTPS y un proxy con su propia cuota por IP. /health y
/usage permanecen sin autenticación (no exponen argumentos ni datos de usuarios).
Consulta docs/DEPLOYMENT.md para el despliegue remoto.
"¿Qué datos tiene el SRI sobre recaudación?"
El MCP buscará los datos públicos del SRI y te mostrará los resultados con títulos, descripciones y enlaces.
"Muéstrame un preview de los datos de hospitales"
El MCP descargará el archivo compatible y te mostrará las primeras filas como una tabla formateada.
"¿Cuáles son los requisitos para obtener el RUC?"
El MCP buscará en el portal gob.ec y te dará los requisitos, procedimiento y costo.
"¿Qué categorías de datos hay disponibles?"
El MCP listará las categorías temáticas disponibles.
Cliente MCP (Claude, ChatGPT, Cursor, etc.)
│
▼ POST /mcp
┌──────────────────────────────┐
│ MCPServer (main.py) │
├──────────────────────────────┤
│ tools/ │
│ ├── search_ecuador │ → CKAN + gob.ec (unificado)
│ ├── search_datasets │
│ ├── query_resource_data │ → CKAN DataStore
│ ├── preview_resource_data │ → CSV / JSON / XLS / XLSX
│ ├── get_category_info │ → helpers/ckan_client.py
│ ├── search_tramites │
│ ├── get_institucion_info │ → helpers/gobec_client.py
│ └── ... │
└──────────────────────────────┘
MIT License - ver LICENSE para más detalles.
Las contribuciones son bienvenidas. Consulta CONTRIBUTING.md para el proceso de colaboración.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx ecuador-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-dweskz-ecudatamcp": {
"command": "uvx",
"args": [
"ecuador-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceecuador-mcppypiEcuDataMCP works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.