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
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.
📖 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 permiso | Lo que el agente puede hacer |
|---|---|
| Solo lectura (por defecto) | Explorar esquemas, ejecutar consultas SELECT. Sin escrituras. |
| Lectura/Escritura de datos | INSERT, UPDATE, operaciones de índice. Sin eliminaciones/borrados. |
| Acceso completo | Todo, 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_idopaco. 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
Asken 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.
| Herramienta | Backend | Riesgo | Permiso requerido | Confirmación del usuario |
|---|---|---|---|---|
data_studio__list_connections | Servidor | 🟢 Seguro | Solo lectura | No |
data_studio__get_status | Servidor | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__list_databases | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__list_schemas | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__list_tables | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__get_schema | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__describe_table | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__explain_query | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__list_indexes | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__list_foreign_keys | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__list_views | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__list_procedures | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__list_functions | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__list_triggers | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__get_table_info | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__get_foreign_keys | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__list_sessions | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__get_slow_queries | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__list_connections | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__execute_query | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__get_object_ddl | sqlkit | 🟢 Seguro | Solo lectura | No |
data_studio__sqlkit__execute_write | sqlkit | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__sqlkit__kill_session | sqlkit | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__sqlkit__grant_privilege | sqlkit | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__sqlkit__revoke_privilege | sqlkit | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__sqlkit__execute_delete | sqlkit | 🔴 Destructivo | Acceso completo | Sí |
data_studio__sqlkit__execute_ddl | sqlkit | 🔴 Destructivo | Acceso completo | Sí |
data_studio__es__search | dockit · Elasticsearch | 🟢 Seguro | Solo lectura | No |
data_studio__es__get_document | dockit · Elasticsearch | 🟢 Seguro | Solo lectura | No |
data_studio__es__cat_indices | dockit · Elasticsearch | 🟢 Seguro | Solo lectura | No |
data_studio__es__get_mapping | dockit · Elasticsearch | 🟢 Seguro | Solo lectura | No |
data_studio__es__cat_aliases | dockit · Elasticsearch | 🟢 Seguro | Solo lectura | No |
data_studio__es__get_alias | dockit · Elasticsearch | 🟢 Seguro | Solo lectura | No |
data_studio__es__count | dockit · Elasticsearch | 🟢 Seguro | Solo lectura | No |
data_studio__es__cluster_health | dockit · Elasticsearch | 🟢 Seguro | Solo lectura | No |
data_studio__es__cat_nodes | dockit · Elasticsearch | 🟢 Seguro | Solo lectura | No |
data_studio__es__cat_shards | dockit · Elasticsearch | 🟢 Seguro | Solo lectura | No |
data_studio__es__list_snapshots | dockit · Elasticsearch | 🟢 Seguro | Solo lectura | No |
data_studio__es__index_document | dockit · Elasticsearch | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__es__update_document | dockit · Elasticsearch | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__es__create_index | dockit · Elasticsearch | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__es__put_mapping | dockit · Elasticsearch | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__es__put_alias | dockit · Elasticsearch | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__es__update_aliases | dockit · Elasticsearch | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__es__bulk | dockit · Elasticsearch | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__es__reindex | dockit · Elasticsearch | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__es__restore_snapshot | dockit · Elasticsearch | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__es__delete_document | dockit · Elasticsearch | 🔴 Destructivo | Acceso completo | Sí |
data_studio__es__delete_by_query | dockit · Elasticsearch | 🔴 Destructivo | Acceso completo | Sí |
data_studio__es__delete_index | dockit · Elasticsearch | 🔴 Destructivo | Acceso completo | Sí |
data_studio__es__delete_alias | dockit · Elasticsearch | 🔴 Destructivo | Acceso completo | Sí |
data_studio__mongo__list_databases | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__list_collections | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__find | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__collection_stats | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__database_stats | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__server_status | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__repl_set_status | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__shard_status | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__count_documents | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__list_indexes | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__sample_documents | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__distinct | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__get_slow_queries | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__list_users | dockit · MongoDB | 🟢 Seguro | Solo lectura | No |
data_studio__mongo__aggregate | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__insert_one | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__update_many | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__create_database | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__create_collection | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__update_document | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__rename_collection | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__clone_collection | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__create_index | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__drop_index | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__insert_many | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__find_one_and_update | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__bulk_write | dockit · MongoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__mongo__delete_many | dockit · MongoDB | 🔴 Destructivo | Acceso completo | Sí |
data_studio__mongo__drop_database | dockit · MongoDB | 🔴 Destructivo | Acceso completo | Sí |
data_studio__mongo__drop_collection | dockit · MongoDB | 🔴 Destructivo | Acceso completo | Sí |
data_studio__mongo__delete_document | dockit · MongoDB | 🔴 Destructivo | Acceso completo | Sí |
data_studio__mongo__truncate_collection | dockit · MongoDB | 🔴 Destructivo | Acceso completo | Sí |
data_studio__dynamo__execute_query | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__describe_table | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__list_tables | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__query_table | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__scan_table | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__batch_get_items | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__describe_continuous_backups | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__describe_ttl | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__get_table_metrics | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__list_backups | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__describe_backup | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__describe_limits | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__list_tags | dockit · DynamoDB | 🟢 Seguro | Solo lectura | No |
data_studio__dynamo__execute_write | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__create_item | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__batch_write_items | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__update_item | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__transact_write_items | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__create_gsi | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__update_gsi | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__create_table | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__update_table_config | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__update_ttl | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__update_pitr | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__update_streams | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__restore_table | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__create_backup | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__tag_resource | dockit · DynamoDB | 🟡 Elevado | Lectura-escritura de datos | No |
data_studio__dynamo__execute_delete | dockit · DynamoDB | 🔴 Destructivo | Acceso completo | Sí |
data_studio__dynamo__delete_item | dockit · DynamoDB | 🔴 Destructivo | Acceso completo | Sí |
data_studio__dynamo__delete_gsi | dockit · DynamoDB | 🔴 Destructivo | Acceso completo | Sí |
data_studio__dynamo__delete_table | dockit · DynamoDB | 🔴 Destructivo | Acceso completo | Sí |
data_studio__dynamo__truncate_table | dockit · DynamoDB | 🔴 Destructivo | Acceso completo | Sí |
| 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.