Data Studio Agent

Servidor MCP unificado que brinda a los agentes de codificación de IA acceso directo a tus bases de datos: más de 70 bases de datos SQL mediante SqlKit (PostgreSQL, MySQL, SQL Server, SQLite, ClickHouse, Snowflake, BigQuery) y NoSQL mediante DocKit (Elasticsearch, MongoDB, DynamoDB). Local-first: las credenciales nunca salen de tu máquina, solo lectura por defecto, 79 herramientas.

Documentación

Data Studio Agent logo

Data Studio Agent

Permite que tu agente de codificación con IA acceda de forma segura a todas tus bases de datos, en lenguaje natural.

Local-first. Seguridad de nivel empresarial. Código abierto.

Release Downloads npm License Stars CI

Ask your database in plain language — live demo

📖 Página del producto · npm · dockit · sqlkit · Lanzamientos

English · 简体中文


Este repositorio contiene el Data Studio MCP Server, un servidor de Model Context Protocol que brinda a los agentes de codificación con IA acceso directo a tus bases de datos a través de las aplicaciones de escritorio dockit y sqlkit.

  • SQL (a través de sqlkit): más de 70 bases de datos (PostgreSQL, MySQL, SQL Server, Oracle, SQLite, DuckDB, ClickHouse, Snowflake, BigQuery y más)
  • NoSQL (a través de dockit): Elasticsearch, OpenSearch, MongoDB, DynamoDB

Características

  • Cualquier agente de codificación con IA. Claude Code, Cursor, Windsurf, OpenCode, Codex, Cline, Pi, Qoder, GitHub Copilot o cualquier cliente MCP.
  • Cualquier sistema operativo. macOS, Windows, Linux.
  • Cualquier modelo LLM. Trae tu propio proveedor. Sin dependencia.
  • Un servidor MCP, una configuración. Enruta a los puentes de SqlKit (SQL) y DocKit (NoSQL) a través de localhost.
  • Seguridad de nivel empresarial. Ver más abajo.

Inicio rápido

1. Requisitos previos

Instala y lanza dockit y/o sqlkit, añade una conexión de base de datos y asegúrate de que Configuración → MCP Bridge → Inicio automático esté habilitado (lo está por defecto). Instala ambas aplicaciones para tener el conjunto completo de herramientas SQL + NoSQL.

2. Instalar el servidor MCP

npm install -g @geek-fun/data-studio-mcp

O ejecútalo sin instalarlo (npx lo descarga en la primera ejecución):

npx -y @geek-fun/data-studio-mcp

3. Añádelo a tu herramienta de IA

OpenAI Codex, un comando:

codex mcp add data-studio -- npx -y @geek-fun/data-studio-mcp

Claude Code, un comando:

claude mcp add --transport stdio data-studio -- npx -y @geek-fun/data-studio-mcp

Cursor. Crea .cursor/mcp.json (proyecto) o ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "data-studio": {
      "command": "npx",
      "args": ["-y", "@geek-fun/data-studio-mcp"]
    }
  }
}

Windsurf. Crea ~/.codeium/windsurf/mcp_config.json (solo global):

{
  "mcpServers": {
    "data-studio": {
      "command": "npx",
      "args": ["-y", "@geek-fun/data-studio-mcp"]
    }
  }
}

OpenCode. Añade a opencode.json (proyecto) o ~/.config/opencode/opencode.json (global):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "data-studio": {
      "type": "local",
      "command": ["npx", "-y", "@geek-fun/data-studio-mcp"],
      "enabled": true
    }
  }
}

Cualquier otro cliente MCP. Registra un servidor stdio con el comando npx y los argumentos -y @geek-fun/data-studio-mcp.

4. Ajustar permisos (opcional)

Abre Configuración → MCP Bridge en dockit/sqlkit para controlar lo que el agente puede hacer:

Modo de permisoLo que el agente puede hacer
Solo lectura (por defecto)Explorar esquemas, ejecutar consultas SELECT. Sin escrituras.
Lectura/Escritura de datosINSERT, UPDATE, operaciones de índice. Sin eliminaciones/borrados.
Acceso completoTodo, incluyendo DELETE, DROP, TRUNCATE.

5. Empieza a preguntar

Usa lenguaje natural. El agente consulta tus bases de datos por ti:

  • "Lista todas las tablas de mi base de datos PostgreSQL"
  • "Muéstrame los últimos 10 pedidos del índice de Elasticsearch orders*"
  • "Encuentra todos los usuarios mayores de 30 en MongoDB"
  • "Ejecuta esta consulta y explica los resultados"

El agente lee esquemas, ejecuta consultas y explora tus datos, y luego te muestra cada consulta que ejecutó.

Seguridad de nivel empresarial

El LLM obtiene acceso amplio a tus datos, pero nunca ve tus credenciales. El modelo de políticas controla cada capacidad según el nivel de riesgo.

  • Las credenciales nunca salen de las aplicaciones. El LLM solo ve un connection_id opaco. Las credenciales reales se resuelven dentro de dockit/sqlkit y nunca cruzan el límite de MCP. Tus contraseñas y claves permanecen en tu máquina, en tu aplicación.
  • Acceso a recursos basado en ID. Los agentes acceden a las bases de datos estrictamente por ID de conexión. Las credenciales nunca aparecen en prompts ni en argumentos de herramientas, por lo que no hay forma de que el modelo obtenga o exfiltre secretos de conexión.
  • Modelo de permisos de tres niveles. Los modos Solo lectura / Lectura-Escritura de datos / Acceso completo controlan cada capacidad según el nivel de riesgo, con anulaciones por conexión. Puedes marcar cualquier conexión como de solo lectura o permitir acciones específicas.
  • Confirmación explícita del usuario. Las operaciones destructivas (DELETE, DROP, TRUNCATE) aparecen como Ask en la política. El cliente solicita al usuario una confirmación explícita antes de que se ejecute cualquier acción destructiva.
  • Clasificación de sentencias a nivel de acción. El SQL se analiza y clasifica por tipo de sentencia (Lectura / Escritura / Eliminación / DDL) antes de la ejecución. Las herramientas de solo escritura rechazan sentencias DELETE; las herramientas de eliminación rechazan DDL.
  • Puente solo local. El puente se vincula exclusivamente a 127.0.0.1. Es inaccesible desde otras máquinas, sin servidor que alojar ni claves API que gestionar.

Herramientas

Todas las herramientas siguen la convención data_studio__{backend}__{action}. La columna Confirmación del usuario muestra qué operaciones presentan un prompt de confirmación explícito en tu cliente de IA antes de ejecutarse.

HerramientaBackendRiesgoPermiso requeridoConfirmación del usuario
data_studio__list_connectionsServidor🟢 SeguroSolo lecturaNo
data_studio__get_statusServidor🟢 SeguroSolo lecturaNo
data_studio__sqlkit__list_databasessqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__list_schemassqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__list_tablessqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__get_schemasqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__describe_tablesqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__explain_querysqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__list_indexessqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__list_foreign_keyssqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__list_viewssqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__list_proceduressqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__list_functionssqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__list_triggerssqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__get_table_infosqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__get_foreign_keyssqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__list_sessionssqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__get_slow_queriessqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__list_connectionssqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__execute_querysqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__get_object_ddlsqlkit🟢 SeguroSolo lecturaNo
data_studio__sqlkit__execute_writesqlkit🟡 ElevadoLectura-escritura de datosNo
data_studio__sqlkit__kill_sessionsqlkit🟡 ElevadoLectura-escritura de datosNo
data_studio__sqlkit__grant_privilegesqlkit🟡 ElevadoLectura-escritura de datosNo
data_studio__sqlkit__revoke_privilegesqlkit🟡 ElevadoLectura-escritura de datosNo
data_studio__sqlkit__execute_deletesqlkit🔴 DestructivoAcceso completo
data_studio__sqlkit__execute_ddlsqlkit🔴 DestructivoAcceso completo
data_studio__es__searchdockit · Elasticsearch🟢 SeguroSolo lecturaNo
data_studio__es__get_documentdockit · Elasticsearch🟢 SeguroSolo lecturaNo
data_studio__es__cat_indicesdockit · Elasticsearch🟢 SeguroSolo lecturaNo
data_studio__es__get_mappingdockit · Elasticsearch🟢 SeguroSolo lecturaNo
data_studio__es__cat_aliasesdockit · Elasticsearch🟢 SeguroSolo lecturaNo
data_studio__es__get_aliasdockit · Elasticsearch🟢 SeguroSolo lecturaNo
data_studio__es__countdockit · Elasticsearch🟢 SeguroSolo lecturaNo
data_studio__es__cluster_healthdockit · Elasticsearch🟢 SeguroSolo lecturaNo
data_studio__es__cat_nodesdockit · Elasticsearch🟢 SeguroSolo lecturaNo
data_studio__es__cat_shardsdockit · Elasticsearch🟢 SeguroSolo lecturaNo
data_studio__es__list_snapshotsdockit · Elasticsearch🟢 SeguroSolo lecturaNo
data_studio__es__index_documentdockit · Elasticsearch🟡 ElevadoLectura-escritura de datosNo
data_studio__es__update_documentdockit · Elasticsearch🟡 ElevadoLectura-escritura de datosNo
data_studio__es__create_indexdockit · Elasticsearch🟡 ElevadoLectura-escritura de datosNo
data_studio__es__put_mappingdockit · Elasticsearch🟡 ElevadoLectura-escritura de datosNo
data_studio__es__put_aliasdockit · Elasticsearch🟡 ElevadoLectura-escritura de datosNo
data_studio__es__update_aliasesdockit · Elasticsearch🟡 ElevadoLectura-escritura de datosNo
data_studio__es__bulkdockit · Elasticsearch🟡 ElevadoLectura-escritura de datosNo
data_studio__es__reindexdockit · Elasticsearch🟡 ElevadoLectura-escritura de datosNo
data_studio__es__restore_snapshotdockit · Elasticsearch🟡 ElevadoLectura-escritura de datosNo
data_studio__es__delete_documentdockit · Elasticsearch🔴 DestructivoAcceso completo
data_studio__es__delete_by_querydockit · Elasticsearch🔴 DestructivoAcceso completo
data_studio__es__delete_indexdockit · Elasticsearch🔴 DestructivoAcceso completo
data_studio__es__delete_aliasdockit · Elasticsearch🔴 DestructivoAcceso completo
data_studio__mongo__list_databasesdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__list_collectionsdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__finddockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__collection_statsdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__database_statsdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__server_statusdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__repl_set_statusdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__shard_statusdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__count_documentsdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__list_indexesdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__sample_documentsdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__distinctdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__get_slow_queriesdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__list_usersdockit · MongoDB🟢 SeguroSolo lecturaNo
data_studio__mongo__aggregatedockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__insert_onedockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__update_manydockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__create_databasedockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__create_collectiondockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__update_documentdockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__rename_collectiondockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__clone_collectiondockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__create_indexdockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__drop_indexdockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__insert_manydockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__find_one_and_updatedockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__bulk_writedockit · MongoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__mongo__delete_manydockit · MongoDB🔴 DestructivoAcceso completo
data_studio__mongo__drop_databasedockit · MongoDB🔴 DestructivoAcceso completo
data_studio__mongo__drop_collectiondockit · MongoDB🔴 DestructivoAcceso completo
data_studio__mongo__delete_documentdockit · MongoDB🔴 DestructivoAcceso completo
data_studio__mongo__truncate_collectiondockit · MongoDB🔴 DestructivoAcceso completo
data_studio__dynamo__execute_querydockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__describe_tabledockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__list_tablesdockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__query_tabledockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__scan_tabledockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__batch_get_itemsdockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__describe_continuous_backupsdockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__describe_ttldockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__get_table_metricsdockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__list_backupsdockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__describe_backupdockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__describe_limitsdockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__list_tagsdockit · DynamoDB🟢 SeguroSolo lecturaNo
data_studio__dynamo__execute_writedockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__create_itemdockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__batch_write_itemsdockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__update_itemdockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__transact_write_itemsdockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__create_gsidockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__update_gsidockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__create_tabledockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__update_table_configdockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__update_ttldockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__update_pitrdockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__update_streamsdockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__restore_tabledockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__create_backupdockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__tag_resourcedockit · DynamoDB🟡 ElevadoLectura-escritura de datosNo
data_studio__dynamo__execute_deletedockit · DynamoDB🔴 DestructivoAcceso completo
data_studio__dynamo__delete_itemdockit · DynamoDB🔴 DestructivoAcceso completo
data_studio__dynamo__delete_gsidockit · DynamoDB🔴 DestructivoAcceso completo
data_studio__dynamo__delete_tabledockit · DynamoDB🔴 DestructivoAcceso completo
data_studio__dynamo__truncate_tabledockit · DynamoDB🔴 DestructivoAcceso completo
116 herramientas en total. Las operaciones de solo lectura se ejecutan automáticamente en modo Solo lectura. Las operaciones elevadas (escrituras, cambios de índice/esquema) requieren Lectura-escritura de datos. Las operaciones destructivas (DELETE, DROP, TRUNCATE) requieren Acceso completo y siempre muestran un aviso explícito de confirmación del usuario.

Cómo funciona

code agent (Claude Code / Cursor / OpenCode ...)
    |
    | MCP stdio protocol
    v
@geek-fun/data-studio-mcp   ← npm package (pure TypeScript)
    |
    | HTTP (localhost)
    +----------------+----------------+
    v                v                |
dockit:9120    sqlkit:9121            |
(NoSQL bridge)  (SQL bridge)          |
    |                |                |
    v                v                |
Elasticsearch    PostgreSQL           |
MongoDB          MySQL                |
DynamoDB         SQL Server           |
OpenSearch       SQLite               |

El servidor MCP es una capa de enrutamiento ligera. Todos los controladores de bases de datos, túneles SSH y la gestión de conexiones residen en las aplicaciones de escritorio, que exponen un puente HTTP local (solo 127.0.0.1). El servidor MCP detecta automáticamente los backends en ejecución mediante el archivo de puerto de cada aplicación.


Para desarrolladores

Este repositorio también contiene el framework Rust data-studio-agent, el bucle compartido de agente de IA (adaptadores de proveedor, streaming, llamada a herramientas, compactación de contexto) que impulsa los asistentes integrados en dockit y sqlkit.

Consulta crates/data-studio-agent/README.md para obtener guías de instalación, arquitectura e integración.

Licencia

Apache 2.0. Consulta LICENSE.