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 logo

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.

Release Downloads npm License Stars CI

Ask your database in plain language — live demo

📖 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ãoO que o agente pode fazer
Somente leitura (padrão)Explorar esquemas, executar consultas SELECT. Sem gravações.
Leitura/Gravação de dadosINSERT, UPDATE, operações de índice. Sem deleções/drops.
Acesso totalTudo, 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_id opaco. 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 Ask na 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.

FerramentaBackendRiscoPermissão necessáriaConfirmação do usuário
data_studio__list_connectionsServer🟢 SeguroSomente leituraNão
data_studio__get_statusServer🟢 SeguroSomente leituraNão
data_studio__sqlkit__list_databasessqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__list_schemassqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__list_tablessqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__get_schemasqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__describe_tablesqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__explain_querysqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__list_indexessqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__list_foreign_keyssqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__list_viewssqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__list_proceduressqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__list_functionssqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__list_triggerssqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__get_table_infosqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__get_foreign_keyssqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__list_sessionssqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__get_slow_queriessqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__list_connectionssqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__execute_querysqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__get_object_ddlsqlkit🟢 SeguroSomente leituraNão
data_studio__sqlkit__execute_writesqlkit🟡 ElevadoLeitura e gravação de dadosNão
data_studio__sqlkit__kill_sessionsqlkit🟡 ElevadoLeitura e gravação de dadosNão
data_studio__sqlkit__grant_privilegesqlkit🟡 ElevadoLeitura e gravação de dadosNão
data_studio__sqlkit__revoke_privilegesqlkit🟡 ElevadoLeitura e gravação de dadosNão
data_studio__sqlkit__execute_deletesqlkit🔴 DestrutivoAcesso totalSim
data_studio__sqlkit__execute_ddlsqlkit🔴 DestrutivoAcesso totalSim
data_studio__es__searchdockit · Elasticsearch🟢 SeguroSomente leituraNão
data_studio__es__get_documentdockit · Elasticsearch🟢 SeguroSomente leituraNão
data_studio__es__cat_indicesdockit · Elasticsearch🟢 SeguroSomente leituraNão
data_studio__es__get_mappingdockit · Elasticsearch🟢 SeguroSomente leituraNão
data_studio__es__cat_aliasesdockit · Elasticsearch🟢 SeguroSomente leituraNão
data_studio__es__get_aliasdockit · Elasticsearch🟢 SeguroSomente leituraNão
data_studio__es__countdockit · Elasticsearch🟢 SeguroSomente leituraNão
data_studio__es__cluster_healthdockit · Elasticsearch🟢 SeguroSomente leituraNão
data_studio__es__cat_nodesdockit · Elasticsearch🟢 SeguroSomente leituraNão
data_studio__es__cat_shardsdockit · Elasticsearch🟢 SeguroSomente leituraNão
data_studio__es__list_snapshotsdockit · Elasticsearch🟢 SeguroSomente leituraNão
data_studio__es__index_documentdockit · Elasticsearch🟡 ElevadoLeitura e gravação de dadosNão
data_studio__es__update_documentdockit · Elasticsearch🟡 ElevadoLeitura e gravação de dadosNão
data_studio__es__create_indexdockit · Elasticsearch🟡 ElevadoLeitura e gravação de dadosNão
data_studio__es__put_mappingdockit · Elasticsearch🟡 ElevadoLeitura e gravação de dadosNão
data_studio__es__put_aliasdockit · Elasticsearch🟡 ElevadoLeitura e gravação de dadosNão
data_studio__es__update_aliasesdockit · Elasticsearch🟡 ElevadoLeitura e gravação de dadosNão
data_studio__es__bulkdockit · Elasticsearch🟡 ElevadoLeitura e gravação de dadosNão
data_studio__es__reindexdockit · Elasticsearch🟡 ElevadoLeitura e gravação de dadosNão
data_studio__es__restore_snapshotdockit · Elasticsearch🟡 ElevadoLeitura e gravação de dadosNão
data_studio__es__delete_documentdockit · Elasticsearch🔴 DestrutivoAcesso totalSim
data_studio__es__delete_by_querydockit · Elasticsearch🔴 DestrutivoAcesso totalSim
data_studio__es__delete_indexdockit · Elasticsearch🔴 DestrutivoAcesso totalSim
data_studio__es__delete_aliasdockit · Elasticsearch🔴 DestrutivoAcesso totalSim
data_studio__mongo__list_databasesdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__list_collectionsdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__finddockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__collection_statsdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__database_statsdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__server_statusdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__repl_set_statusdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__shard_statusdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__count_documentsdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__list_indexesdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__sample_documentsdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__distinctdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__get_slow_queriesdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__list_usersdockit · MongoDB🟢 SeguroSomente leituraNão
data_studio__mongo__aggregatedockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__insert_onedockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__update_manydockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__create_databasedockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__create_collectiondockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__update_documentdockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__rename_collectiondockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__clone_collectiondockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__create_indexdockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__drop_indexdockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__insert_manydockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__find_one_and_updatedockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__bulk_writedockit · MongoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__mongo__delete_manydockit · MongoDB🔴 DestrutivoAcesso totalSim
data_studio__mongo__drop_databasedockit · MongoDB🔴 DestrutivoAcesso totalSim
data_studio__mongo__drop_collectiondockit · MongoDB🔴 DestrutivoAcesso totalSim
data_studio__mongo__delete_documentdockit · MongoDB🔴 DestrutivoAcesso totalSim
data_studio__mongo__truncate_collectiondockit · MongoDB🔴 DestrutivoAcesso totalSim
data_studio__dynamo__execute_querydockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__describe_tabledockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__list_tablesdockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__query_tabledockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__scan_tabledockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__batch_get_itemsdockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__describe_continuous_backupsdockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__describe_ttldockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__get_table_metricsdockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__list_backupsdockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__describe_backupdockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__describe_limitsdockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__list_tagsdockit · DynamoDB🟢 SeguroSomente leituraNão
data_studio__dynamo__execute_writedockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__create_itemdockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__batch_write_itemsdockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__update_itemdockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__transact_write_itemsdockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__create_gsidockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__update_gsidockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__create_tabledockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__update_table_configdockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__update_ttldockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__update_pitrdockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__update_streamsdockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__restore_tabledockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__create_backupdockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__tag_resourcedockit · DynamoDB🟡 ElevadoLeitura e gravação de dadosNão
data_studio__dynamo__execute_deletedockit · DynamoDB🔴 DestrutivoAcesso totalSim
data_studio__dynamo__delete_itemdockit · DynamoDB🔴 DestrutivoAcesso totalSim
data_studio__dynamo__delete_gsidockit · DynamoDB🔴 DestrutivoAcesso totalSim
data_studio__dynamo__delete_tabledockit · DynamoDB🔴 DestrutivoAcesso totalSim
data_studio__dynamo__truncate_tabledockit · DynamoDB🔴 DestrutivoAcesso totalSim
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.