Data Studio Agent
Servidor MCP unificado que dá aos agentes de codificação de IA acesso direto aos seus bancos de dados: mais de 70 bancos de dados SQL via SqlKit (PostgreSQL, MySQL, SQL Server, SQLite, ClickHouse, Snowflake, BigQuery) e NoSQL via DocKit (Elasticsearch, MongoDB, DynamoDB). Local-first: as credenciais nunca saem da sua máquina, somente leitura por padrão, 79 ferramentas.
Documentação
Final Translation Output
Data Studio Agent
Permita que seu agente de codificação por IA acesse com segurança todos os seus bancos de dados, em linguagem natural.
Local-first. Segurança em nível empresarial. Open source.
📖 Página do Produto · npm · dockit · sqlkit · Releases
English · 简体中文
Este repositório contém o Data Studio MCP Server, um servidor Model Context Protocol que dá aos agentes de codificação por IA acesso direto aos seus bancos de dados por meio dos aplicativos desktop dockit e sqlkit.
- SQL (via sqlkit): mais de 70 bancos de dados (PostgreSQL, MySQL, SQL Server, Oracle, SQLite, DuckDB, ClickHouse, Snowflake, BigQuery e outros)
- NoSQL (via dockit): Elasticsearch, OpenSearch, MongoDB, DynamoDB
Recursos
- Qualquer agente de codificação por IA. Claude Code, Cursor, Windsurf, OpenCode, Codex, Cline, Pi, Qoder, GitHub Copilot ou qualquer cliente MCP.
- Qualquer SO. macOS, Windows, Linux.
- Qualquer modelo de LLM. Traga seu próprio provedor. Sem aprisionamento.
- Um servidor MCP, uma configuração. Roteia para as pontes SqlKit (SQL) e DocKit (NoSQL) via localhost.
- Segurança em nível empresarial. Veja abaixo.
Início rápido
1. Pré-requisitos
Instale e inicie o dockit e/ou sqlkit, adicione uma conexão de banco de dados e certifique-se de que Settings → MCP Bridge → Auto-start esteja ativado (está por padrão). Instale os dois aplicativos para ter o conjunto completo de ferramentas SQL + NoSQL.
2. Instale o servidor MCP
npm install -g @geek-fun/data-studio-mcp
Ou execute sem instalar (o npx baixa na primeira execução):
npx -y @geek-fun/data-studio-mcp
3. Adicione à sua ferramenta de IA
OpenAI Codex, um comando:
codex mcp add data-studio -- npx -y @geek-fun/data-studio-mcp
Claude Code, um comando:
claude mcp add --transport stdio data-studio -- npx -y @geek-fun/data-studio-mcp
Cursor. Crie .cursor/mcp.json (projeto) ou ~/.cursor/mcp.json (global):
{
"mcpServers": {
"data-studio": {
"command": "npx",
"args": ["-y", "@geek-fun/data-studio-mcp"]
}
}
}
Windsurf. Crie ~/.codeium/windsurf/mcp_config.json (somente global):
{
"mcpServers": {
"data-studio": {
"command": "npx",
"args": ["-y", "@geek-fun/data-studio-mcp"]
}
}
}
OpenCode. Adicione em opencode.json (projeto) ou ~/.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
}
}
}
Qualquer outro cliente MCP. Registre um servidor stdio com o comando npx e os argumentos -y @geek-fun/data-studio-mcp.
4. Ajuste as permissões (opcional)
Abra Settings → MCP Bridge no dockit/sqlkit para controlar o que o agente pode fazer:
| Modo de permissão | O que o agente pode fazer |
|---|---|
| Somente leitura (padrão) | Explorar esquemas, executar consultas SELECT. Sem gravações. |
| Leitura/Gravação de dados | INSERT, UPDATE, operações de índice. Sem deleções/drops. |
| Acesso total | Tudo, incluindo DELETE, DROP, TRUNCATE. |
5. Comece a perguntar
Use linguagem natural. O agente consulta seus bancos de dados por você:
- "Liste todas as tabelas do meu banco de dados PostgreSQL"
- "Mostre-me os últimos 10 pedidos do índice do Elasticsearch
orders*" - "Encontre todos os usuários com mais de 30 anos no MongoDB"
- "Execute esta consulta e explique os resultados"
O agente lê esquemas, executa consultas e explora seus dados e, em seguida, mostra cada consulta que executou.
Segurança em nível empresarial
O LLM obtém amplo acesso aos seus dados, mas nunca vê suas credenciais. O modelo de política controla cada recurso por nível de risco.
- As credenciais nunca saem dos aplicativos. O LLM só vê um
connection_idopaco. As credenciais reais são resolvidas dentro do dockit/sqlkit e nunca cruzam o limite do MCP. Suas senhas e chaves permanecem na sua máquina, no seu aplicativo. - Acesso a recursos baseado em ID. Os agentes acessam bancos de dados estritamente por ID de conexão. As credenciais nunca aparecem em prompts ou argumentos de ferramentas, portanto não há caminho para o modelo obter ou exfiltrar segredos de conexão.
- Modelo de permissão de três níveis. Os modos Somente Leitura / Leitura-Gravação de Dados / Acesso Total controlam cada recurso por nível de risco, com sobreposições por conexão. Você pode marcar qualquer conexão como somente leitura ou colocar ações específicas em lista de permissão.
- Confirmação explícita do usuário. Operações destrutivas (DELETE, DROP, TRUNCATE) aparecem como
Askna política. O cliente solicita confirmação explícita do usuário antes que qualquer operação destrutiva seja executada. - Classificação de instruções em nível de ação. O SQL é analisado e classificado por tipo de instrução (Leitura / Gravação / Deleção / DDL) antes da execução. Ferramentas somente de gravação rejeitam instruções DELETE; ferramentas de deleção rejeitam DDL.
- Ponte somente local. A ponte faz bind exclusivamente em
127.0.0.1. Ela é inacessível a partir de outras máquinas, sem servidor para hospedar e sem chaves de API para gerenciar.
Ferramentas
Todas as ferramentas seguem a convenção data_studio__{backend}__{action}. A coluna Confirmação do usuário mostra quais operações exibem um prompt de confirmação explícito no seu cliente de IA antes de serem executadas.
| Ferramenta | Backend | Risco | Permissão necessária | Confirmação do usuário |
|---|---|---|---|---|
data_studio__list_connections | Server | 🟢 Seguro | Somente leitura | Não |
data_studio__get_status | Server | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__list_databases | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__list_schemas | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__list_tables | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__get_schema | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__describe_table | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__explain_query | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__list_indexes | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__list_foreign_keys | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__list_views | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__list_procedures | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__list_functions | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__list_triggers | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__get_table_info | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__get_foreign_keys | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__list_sessions | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__get_slow_queries | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__list_connections | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__execute_query | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__get_object_ddl | sqlkit | 🟢 Seguro | Somente leitura | Não |
data_studio__sqlkit__execute_write | sqlkit | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__sqlkit__kill_session | sqlkit | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__sqlkit__grant_privilege | sqlkit | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__sqlkit__revoke_privilege | sqlkit | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__sqlkit__execute_delete | sqlkit | 🔴 Destrutivo | Acesso total | Sim |
data_studio__sqlkit__execute_ddl | sqlkit | 🔴 Destrutivo | Acesso total | Sim |
data_studio__es__search | dockit · Elasticsearch | 🟢 Seguro | Somente leitura | Não |
data_studio__es__get_document | dockit · Elasticsearch | 🟢 Seguro | Somente leitura | Não |
data_studio__es__cat_indices | dockit · Elasticsearch | 🟢 Seguro | Somente leitura | Não |
data_studio__es__get_mapping | dockit · Elasticsearch | 🟢 Seguro | Somente leitura | Não |
data_studio__es__cat_aliases | dockit · Elasticsearch | 🟢 Seguro | Somente leitura | Não |
data_studio__es__get_alias | dockit · Elasticsearch | 🟢 Seguro | Somente leitura | Não |
data_studio__es__count | dockit · Elasticsearch | 🟢 Seguro | Somente leitura | Não |
data_studio__es__cluster_health | dockit · Elasticsearch | 🟢 Seguro | Somente leitura | Não |
data_studio__es__cat_nodes | dockit · Elasticsearch | 🟢 Seguro | Somente leitura | Não |
data_studio__es__cat_shards | dockit · Elasticsearch | 🟢 Seguro | Somente leitura | Não |
data_studio__es__list_snapshots | dockit · Elasticsearch | 🟢 Seguro | Somente leitura | Não |
data_studio__es__index_document | dockit · Elasticsearch | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__es__update_document | dockit · Elasticsearch | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__es__create_index | dockit · Elasticsearch | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__es__put_mapping | dockit · Elasticsearch | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__es__put_alias | dockit · Elasticsearch | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__es__update_aliases | dockit · Elasticsearch | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__es__bulk | dockit · Elasticsearch | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__es__reindex | dockit · Elasticsearch | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__es__restore_snapshot | dockit · Elasticsearch | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__es__delete_document | dockit · Elasticsearch | 🔴 Destrutivo | Acesso total | Sim |
data_studio__es__delete_by_query | dockit · Elasticsearch | 🔴 Destrutivo | Acesso total | Sim |
data_studio__es__delete_index | dockit · Elasticsearch | 🔴 Destrutivo | Acesso total | Sim |
data_studio__es__delete_alias | dockit · Elasticsearch | 🔴 Destrutivo | Acesso total | Sim |
data_studio__mongo__list_databases | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__list_collections | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__find | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__collection_stats | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__database_stats | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__server_status | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__repl_set_status | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__shard_status | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__count_documents | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__list_indexes | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__sample_documents | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__distinct | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__get_slow_queries | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__list_users | dockit · MongoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__mongo__aggregate | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__insert_one | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__update_many | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__create_database | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__create_collection | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__update_document | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__rename_collection | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__clone_collection | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__create_index | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__drop_index | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__insert_many | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__find_one_and_update | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__bulk_write | dockit · MongoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__mongo__delete_many | dockit · MongoDB | 🔴 Destrutivo | Acesso total | Sim |
data_studio__mongo__drop_database | dockit · MongoDB | 🔴 Destrutivo | Acesso total | Sim |
data_studio__mongo__drop_collection | dockit · MongoDB | 🔴 Destrutivo | Acesso total | Sim |
data_studio__mongo__delete_document | dockit · MongoDB | 🔴 Destrutivo | Acesso total | Sim |
data_studio__mongo__truncate_collection | dockit · MongoDB | 🔴 Destrutivo | Acesso total | Sim |
data_studio__dynamo__execute_query | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__describe_table | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__list_tables | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__query_table | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__scan_table | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__batch_get_items | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__describe_continuous_backups | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__describe_ttl | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__get_table_metrics | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__list_backups | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__describe_backup | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__describe_limits | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__list_tags | dockit · DynamoDB | 🟢 Seguro | Somente leitura | Não |
data_studio__dynamo__execute_write | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__create_item | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__batch_write_items | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__update_item | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__transact_write_items | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__create_gsi | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__update_gsi | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__create_table | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__update_table_config | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__update_ttl | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__update_pitr | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__update_streams | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__restore_table | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__create_backup | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__tag_resource | dockit · DynamoDB | 🟡 Elevado | Leitura e gravação de dados | Não |
data_studio__dynamo__execute_delete | dockit · DynamoDB | 🔴 Destrutivo | Acesso total | Sim |
data_studio__dynamo__delete_item | dockit · DynamoDB | 🔴 Destrutivo | Acesso total | Sim |
data_studio__dynamo__delete_gsi | dockit · DynamoDB | 🔴 Destrutivo | Acesso total | Sim |
data_studio__dynamo__delete_table | dockit · DynamoDB | 🔴 Destrutivo | Acesso total | Sim |
data_studio__dynamo__truncate_table | dockit · DynamoDB | 🔴 Destrutivo | Acesso total | Sim |
| 116 ferramentas no total. Operações somente leitura são executadas automaticamente no modo Somente leitura. Operações elevadas (gravações, alterações de índice/esquema) exigem Leitura e gravação de dados. Operações destrutivas (DELETE, DROP, TRUNCATE) exigem Acesso total e sempre exibem um aviso explícito de confirmação do usuário. |
Como 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 |
O servidor MCP é uma camada de roteamento leve. Todos os drivers de banco de dados, túneis SSH e o gerenciamento de conexões ficam nos aplicativos de desktop, que expõem uma ponte HTTP local (somente 127.0.0.1). O servidor MCP descobre automaticamente os backends em execução por meio do arquivo de porta de cada aplicativo.
Para desenvolvedores
Este repositório também contém o framework Rust data-studio-agent, o loop compartilhado do agente de IA (adaptadores de provedor, streaming, chamada de ferramentas, compactação de contexto) que alimenta os assistentes integrados em dockit e sqlkit.
Consulte crates/data-studio-agent/README.md para guias de instalação, arquitetura e integração.
Licença
Apache 2.0. Consulte LICENSE.