SafeSelect

Acesso seguro a banco de dados, com falha fechada e somente leitura, para agentes de IA via MCP.

Documentação

SafeSelect

Agentes podem consultar. Eles não podem alterar.

Acesso somente leitura a PostgreSQL & MongoDB para agentes de codificação.

Depure com contexto real de banco de dados, sem expor ferramentas de escrita.
Política local, com escopo de projeto—mesmo quando suas credenciais existentes permitem escritas.

Comece agora → · Demonstração · Agentes · Segurança · Documentação · Site

CI CRAP License: MIT

O que você pode fazer

  • Inspecionar PostgreSQL — descubra tabelas, índices e planos de consulta; leia linhas limitadas.
  • Explorar MongoDB — descubra coleções, infira esquemas amostrados e execute leituras limitadas.
  • Reutilizar suas conexões — importe do DBeaver, Docker Compose ou MongoDB Compass.
  • Conectar seu agente de codificação — instale uma entrada MCP fixada ao projeto/ambiente.
  • Manter o controle — stdio local, política de projeto, segredos externos e metadados de auditoria.

[!IMPORTANT] Somente leitura se aplica às ferramentas de banco de dados do SafeSelect, não ao shell de um agente, a outros servidores MCP ou a credenciais diretas. Comece com dados de desenvolvimento ou uma réplica sanitizada e use usuários de banco de dados com privilégios mínimos. Revise o modelo de ameaças e limites antes de conectar dados sensíveis.

Veja em ação

Onboarding completo: do Homebrew a um agente protegido

SafeSelect onboarding: Homebrew, DBeaver SSH import, Keychain and OpenCode

Instale o SafeSelect via Homebrew, importe uma conexão DBeaver com suporte SSH, mantenha a senha no Keychain do macOS, instale a integração OpenCode e veja o agente ler um pedido pago enquanto sua tentativa de DELETE é rejeitada. Clipes focados no agente e no backend permanecem na galeria de demonstrações completa.

Início Rápido

Execute a configuração a partir da raiz do seu repositório. Você precisará de uma conexão PostgreSQL ou MongoDB e de um runtime Java 17+ para comandos de banco de dados.

1. Instalar

No macOS com Homebrew:

brew install antonillos/tap/safeselect
Outros métodos de instalação: binários pré-compilados e asdf

Binários pré-compilados (macOS & Linux glibc)

Baixe um binário pré-compilado específico para macOS ou Linux baseado em glibc da última versão do GitHub. O instalador verificado seleciona a arquitetura macOS ou Linux glibc correspondente, verifica o resumo SHA-256 publicado e instala em ~/.local/bin:

curl -fsSL https://raw.githubusercontent.com/antonillos/safeselect/main/packaging/install/install-release.sh | sh

Defina PREFIX para escolher outro diretório de instalação. O SafeSelect ainda precisa de um runtime Java 17+ no momento da execução.

asdf (macOS & Linux)

asdf plugin add safeselect https://github.com/antonillos/asdf-safeselect.git
asdf install safeselect latest
SAFESELECT_VERSION="$(asdf latest safeselect | sed -n '$p')"
asdf set -u safeselect "${SAFESELECT_VERSION}"
asdf reshim safeselect "${SAFESELECT_VERSION}"

O SafeSelect usa qualquer runtime Java 17+ disponível em vez de exigir uma fórmula específica de gerenciador de pacotes. Se o Java estiver ausente ou muito antigo, instale ou selecione um runtime Java 17+ antes de executar comandos de banco de dados. No macOS com Homebrew, você pode instalar um com brew install openjdk@17.

2. Importar uma fonte de conexão

Escolha a fonte que você já usa; você não precisa executar todas as três:

Fonte de conexãoComando
Exportação do DBeaversafeselect import-dbeaver ~/Downloads/dbeaver-export.zip
PostgreSQL no Docker Composesafeselect import-compose
MongoDB Compasssafeselect import-compass --path "$HOME/.config/MongoDB Compass"

Use seu diretório real de exportação ou do Compass. Siga os próximos passos do importador para configuração de driver e senha antes de continuar. Mantenha segredos fora dos arquivos do projeto. Para um passo a passo com suporte SSH, veja DBeaver → Codex.

3. Verificar e conectar seu agente

# Check configured environments; this can open SSH tunnels and contact databases.
safeselect check

# Install for OpenCode (replace with codex for OpenAI Codex).
safeselect agent install opencode

# Inspect the installed MCP entry and its configuration location.
safeselect agent status

Vários ambientes? Use safeselect check --environment <name> para evitar verificar bancos de dados não relacionados e adicione --environment <name> a agent install para selecionar o destino pretendido. A instalação infere o nome apenas quando há um único ambiente.

Abra ou reinicie seu agente e aprove o servidor MCP se solicitado. A instalação usa o escopo do usuário por padrão; veja agentes suportados e o guia de configuração do cliente para escopo de projeto e etapas específicas do cliente.

4. Tentar uma primeira leitura

Pergunte ao seu agente:

Use o SafeSelect para identificar o backend conectado e descobrir suas tabelas ou coleções disponíveis. Descreva uma e pare antes de consultar o conteúdo de linhas ou documentos. Siga as próximas sugestões apenas dentro desse escopo somente de descoberta.

Sucesso parece com: o agente chama database_info, usa as ferramentas correspondentes de descoberta de esquema e relata a estrutura encontrada. Nenhuma ferramenta de escrita ou senha de banco de dados é necessária na conversa.

Travou? Execute safeselect doctor --environment <name> para diagnósticos concisos (isso pode contatar o banco de dados) e siga o próximo passo relatado. Não afrouxe a política para contornar uma rejeição. Veja recuperação do agente.

O que é instalado? Configuração e escopo do MCP

O nome MCP gerado tem como padrão safeselect-<project>-<environment>.

A entrada MCP gerada é um servidor stdio com escopo para um projeto e ambiente:

{
  "mcpServers": {
    "safeselect-myapp-testing": {
      "command": "safeselect",
      "args": ["serve", "--project", "/path/to/myapp", "--environment", "testing"]
    }
  }
}

O SafeSelect usa o contrato de configuração MCP oficial de cada cliente, fixa o caminho absoluto do repositório e usa o escopo do usuário por padrão. Adicione --local para uma entrada com escopo de projeto onde o cliente suportar. Veja integração com agentes de IA para caminhos, escopos e configuração manual exatos.

Documentação

Eu quero…Comece aqui
Escolher um cliente ou configurar MCP manualmenteIntegração com agentes de IA
Importar uma conexão DBeaver com suporte SSHPasso a passo DBeaver → Codex
Ver outros clientes e backendsGaleria de demonstrações
Entender o limite e suas limitaçõesProva de segurança e modelo de ameaças
Comparar abordagens MCP de banco de dadosComparação
Encontrar um comando ou ferramentaEssenciais da CLI · Galeria visual de comandos · Ferramentas MCP
Construir ou contribuirContribuindo

Onde Ajuda

  • Depure um aplicativo com dados realistas sem expor ferramentas de mutação.
  • Deixe um agente inspecionar esquemas, índices, planos de consulta e linhas limitadas durante o desenvolvimento.
  • Explore coleções MongoDB por meio de leituras limitadas e inferência de esquema amostrado.
  • Reutilize conexões existentes do DBeaver, Docker Compose ou MongoDB Compass.
  • Dê contexto de banco de dados aos agentes de codificação mantendo política, limites, segredos e auditoria sob seu controle.

Por que SafeSelect?

O SafeSelect é intencionalmente mais restrito do que servidores MCP de banco de dados de propósito geral. Não é um construtor de ferramentas, bancada SQL ou gateway remoto de banco de dados. É um limite de segurança local para agentes que precisam de visibilidade do banco de dados, não de poder sobre ele.

O SafeSelect priorizaO que isso significa
Transporte stdio localSem listener de rede ou porta MCP aberta
Ferramentas somente leituraAgentes não recebem ferramentas de banco de dados com capacidade de escrita
Segurança independente de credenciaisAté credenciais de DBA são restritas à superfície de ferramentas somente leitura do SafeSelect
Aplicação com falha fechadaViolações de política encerram o processo
Isolamento de segredosSenhas permanecem no Keychain ou em variáveis de ambiente
Política com escopo de projetoCada repositório define sua própria superfície de dados permitida
Sidecar embutidoUm binário instalado alcança drivers JDBC e MongoDB atrás da política Rust

O Que Torna Diferente?

A combinação importa: inspeção de PostgreSQL e MongoDB, uma superfície fixa de leitura de banco de dados, stdio local, política de projeto, importação de conexão e evidência de segurança reproduzível. Modos somente leitura e controles em camadas também existem em outros projetos; eles não são exclusivos do SafeSelect.

Veja a comparação datada para DBHub, MongoDB MCP Server, Postgres MCP Pro e SchemaBrain—incluindo quando cada um é mais adequado.

Agentes podem consultar, mas não podem alterar por meio das ferramentas de banco de dados do SafeSelect. Este limite não cobre um shell, outro servidor MCP ou credenciais diretas também disponíveis para o agente. Use usuários de banco de dados com privilégios mínimos e revise o modelo de ameaças e limites.

Suporte de Backend

BackendStatusFerramentas
PostgreSQLSuportadoDescoberta, índices/estatísticas, select e explain
MongoDBSuportadoDescoberta, find, agregação, distinct/count, explain, profiling, inferência de esquema e fixtures anonimizadas

Arquitetura

SafeSelect Architecture

O agente fala com o SafeSelect por meio de MCP stdio. O SafeSelect aplica política em Rust, armazena segredos fora dos arquivos do projeto e alcança bancos de dados por meio de um sidecar Java embutido: JDBC para backends SQL e o driver MongoDB para MongoDB. O canal Rust para Java é JSON-lines sobre stdin/stdout: sem sockets, sem portas abertas.

Contexto MCP Guiado

Clientes que suportam prompts MCP podem invocar read_only_database_debugging para uma lista de verificação segura de investigação. Clientes também podem ler safeselect://guide/read-only-database-debugging para o mesmo fluxo de trabalho estático e notas de limite. Nenhum desses recursos expõe dados de banco de dados, credenciais ou acesso de escrita; use as ferramentas de banco de dados abaixo para descoberta e leituras limitadas.

Fluxo de Trabalho do Agente

Agentes devem usar o SafeSelect nesta ordem:

  1. database_info
  2. list_tables e depois describe_table; inspecione list_table_indexes ou estatísticas limitadas quando útil para SQL
  3. list_databases, list_collections e depois discover_document_schema para NoSQL
  4. select / explain, ou a ferramenta de leitura MongoDB limitada que corresponde à tarefa
  5. check, connect ou reconnect quando a conectividade estiver obsoleta

Agentes devem descobrir a estrutura de relações ou coleções antes de consultar dados desconhecidos e usar o next_suggestion de cada resposta de descoberta em vez de adivinhar nomes de colunas ou campos. Descrições SQL são metadados de catálogo; esquemas MongoDB são inferidos de uma amostra limitada e não exaustiva.

Documentos de consulta MongoDB devem permanecer valores JSON aninhados completos. Clientes que achatam argumentos de ferramentas aninhados podem passar filter, projection e sort como strings de objeto codificadas em JSON e pipeline como uma string de array codificada em JSON. redact_fields também aceita uma string de array codificada em JSON. Chaves achatadas são rejeitadas para que um filtro ou redação perdido nunca possa se tornar um fallback menos restrito.

JavaScript do lado do servidor MongoDB nunca está disponível: $where, $function e $accumulator são rejeitados recursivamente em filtros, projeções, ordenações e pipelines de agregação antes que o driver MongoDB os receba. Quando rejeitado, reconstrua a solicitação com operadores MQL declarativos; o SafeSelect não tem configuração que habilite JavaScript.

Respostas de consulta incluem row_count, byte_count, elapsed_ms e um valor elapsed legível por humanos para que agentes possam raciocinar sobre o tamanho do resultado e a latência.

Cada sucesso e erro MCP inclui um next_suggestion contextual. Agentes devem seguir essa única ação segura, nunca repetir cegamente uma solicitação inválida e parar quando a sugestão for terminal. Para clientes que mostram apenas um resumo de erro MCP, o SafeSelect também inclui a próxima sugestão confiável nesse resumo sem expor detalhes derivados do banco de dados.

Modelo de Segurança

  • Falha fechada: violações de segurança encerram o processo MCP.
  • Somente leitura: SQL permite SELECT, EXPLAIN e WITH; backends NoSQL permitem descoberta e leitura de documentos somente leitura.
  • Sem JavaScript no servidor: $where, $function e $accumulator do MongoDB são rejeitados em Rust e novamente no sidecar Java.
  • Acesso limitado: schemas, relações, bancos de dados e coleções podem ser permitidos ou negados.
  • Limites rígidos: contagem de linhas, bytes de resultado e timeouts são aplicados; comandos de leitura do MongoDB recebem o mesmo timeout que maxTimeMS.
  • Isolamento de segredos: senhas ficam no Keychain do macOS ou em variáveis de ambiente, nunca na configuração do projeto.
  • Verificação de drivers: drivers JDBC são verificados por SHA-256 antes do uso.
  • Trilha de auditoria: o texto da consulta é hash antes de ser registrado; a sessão atual expõe metadados de auditoria limitados por meio de audit_status e audit_recent.

Limites Deliberados

  • SafeSelect não expõe gravações no banco de dados, migrações, administração ou execução arbitrária de comandos.
  • PostgreSQL e MongoDB são os backends suportados hoje; uma ampla quantidade de conectores não é o objetivo.
  • O transporte MCP é stdio local. SafeSelect não é um gateway de banco de dados remoto.
  • A descoberta de schema do MongoDB é amostrada e limitada, não uma garantia exaustiva de schema.
  • SafeSelect complementa o privilégio mínimo nativo do banco de dados; não o substitui.

Ferramentas MCP

ÁreaFerramentas
SQLlist_tables, describe_table, list_table_indexes, list_table_partitions, get_database_stats, get_table_stats, get_maintenance_diagnostics, select, explain
Leituras MongoDBlist_databases, list_collections, find_documents, aggregate_documents, distinct_documents, count_documents, explain_documents
Análise MongoDBprofile_document_field, discover_document_schema, generate_document_fixture, list_collection_indexes, get_database_stats, get_collection_stats
Conexãodatabase_info, check, connect, disconnect, reconnect
Auditoriaaudit_status, audit_recent
Configuraçãoconfig_validate, config_show, config_set_password, config_rename_environment, config_delete_environment, config_reset
Configuração inicialimport_compose, driver_list, driver_add, driver_download, agent_detect, agent_install, agent_status, agent_uninstall

get_maintenance_diagnostics suporta PostgreSQL 15, 16, 17 e 18.

Quando não existe um diretório .safeselect/, safeselect serve procura por serviços PostgreSQL do Compose. Se encontrar, entra automaticamente no modo de configuração: importa-os, escreve a configuração do projeto e inicia um servidor MCP somente de configuração. Caso contrário, imprime instruções de configuração e sai. Uma configuração existente, mas vazia ou inválida, é rejeitada, não substituída pela configuração.

[!IMPORTANT] O modo de configuração não expõe ferramentas de consulta. Agentes podem ajudar a importar e validar a configuração antes que qualquer ferramenta de inspeção de banco de dados esteja disponível.

Essenciais da CLI

ComandoFinalidade
safeselect serve [--environment <env>]Iniciar o servidor MCP
safeselect check [--environment <env>]Verificar configuração, segredos, túneis, sidecar e conectividade do backend para todos os ambientes por padrão
safeselect doctor [--environment <env>]Imprimir descobertas concisas com códigos estáveis para todos os ambientes por padrão
safeselect posture [--environment <env>]Inspecionar a postura do PostgreSQL para todos os ambientes por padrão
safeselect import-dbeaver <zip>Importar conexões do DBeaver
safeselect import-compose [--path <path>]Importar do docker-compose
safeselect import-compass [--path <path>]Importar conexões do MongoDB Compass
safeselect agent install <client> [--environment <env>]Instalar uma entrada MCP
safeselect config set-password [--environment <env>]Armazenar a senha do banco de dados
safeselect config set-ssh-password [--environment <env>]Armazenar a senha SSH
safeselect uninstallRemover binários instalados, estado global, dados de auditoria e entradas do Keychain
safeselect uninstall --binary-onlyRemover apenas binários locais do usuário e preservar a configuração

Galeria visual de comandos

A CLI é mais fácil de escanear por tarefa do que como uma longa lista. A galeria de comandos web usa as mesmas capturas de demonstração sintéticas. query é mantido separado porque é um fluxo de trabalho SQL direto; agentes normalmente devem descobrir o schema primeiro por meio das ferramentas MCP.

Importar conexões — Traga uma conexão existente do DBeaver, Docker Compose ou MongoDB Compass para o projeto.

import-dbeaver

Importar uma exportação do DBeaver para .safeselect/.

safeselect import-dbeaver ~/Downloads/connections.zip

Terminal capture for safeselect import-dbeaver <zip>

O importador mantém a forma da conexão enquanto deixa as senhas fora dos arquivos do projeto.

import-compose

Descobrir serviços PostgreSQL do Docker Compose.

safeselect import-compose --path .

Terminal capture for safeselect import-compose [--path <path>]

A descoberta do Compose transforma um serviço local existente em um ambiente de projeto.

import-compass

Importar conexões do MongoDB Compass.

safeselect import-compass --path ~/.config/MongoDB Compass

Terminal capture for safeselect import-compass [--path <path>]

As importações do Compass preservam os detalhes de conexão do MongoDB sem expor credenciais.

Preparar o projeto — Valide a política local, instale drivers e conecte um cliente de IA sem repetir flags de configuração.

config

Validar, inspecionar e manter a configuração do projeto.

safeselect config show --project demo --environment postgres

Terminal capture for safeselect config <COMMAND>

O show de configuração relata um resumo de política seguro e editado antes do servidor iniciar.

driver

Registrar e verificar drivers JDBC.

safeselect driver list

Terminal capture for safeselect driver <COMMAND>

O registro de drivers mostra o fornecedor e o artefato local verificado.

agent

Detectar clientes e instalar sua entrada MCP.

safeselect agent detect

Terminal capture for safeselect agent <COMMAND>

A detecção lista os clientes disponíveis antes de uma instalação MCP explícita e limitada ao projeto.

Verificar e diagnosticar — Verifique o caminho completo da política do projeto até o banco de dados e, em seguida, inspecione a postura efetiva do PostgreSQL.

check

Testar configuração, segredos, túneis, sidecar e conectividade do backend.

safeselect check

Terminal capture for safeselect check [--environment <env>]

As verificações seguem a convenção e inspecionam todos os ambientes, a menos que um seja selecionado deliberadamente.

doctor

Imprimir descobertas concisas com códigos de diagnóstico estáveis.

safeselect doctor

Terminal capture for safeselect doctor [--environment <env>]

O doctor transforma uma conexão falha em uma próxima ação curta em vez de uma parede de logs.

posture

Inspecionar a postura efetiva de segurança do PostgreSQL.

safeselect posture --strict

Terminal capture for safeselect posture [--environment <env>]

A postura mostra a política efetiva de somente leitura, limites e postura do banco de dados antes do uso pelo agente.

Gerenciar uma conexão — Inicie o servidor MCP local ou exercite o ciclo de vida da conexão temporária diretamente.

serve

Iniciar o servidor MCP local para um ambiente de projeto.

safeselect serve

Terminal capture for safeselect serve [--environment <env>]

O servidor fala stdio local: a resposta de inicialização do MCP expõe as capacidades do SafeSelect, não um listener de rede.

connect

Testar uma conexão JDBC temporária.

safeselect connect

Terminal capture for safeselect connect [--environment <env>]

O connect verifica o sidecar JDBC temporário contra o fixture ao vivo sem assumir uma sessão MCP ativa.

disconnect

Fechar uma conexão JDBC temporária.

safeselect disconnect

Terminal capture for safeselect disconnect [--environment <env>]

O disconnect fecha limpo o sidecar JDBC temporário e relata a etapa concluída do ciclo de vida.

reconnect

Reiniciar o sidecar e verificar a conectividade.

safeselect reconnect

Terminal capture for safeselect reconnect [--environment <env>]

O reconnect reinicia o sidecar e verifica o fixture ao vivo em vez de esconder um banco de dados obsoleto.

Explorar SQL: descobrir, inspecionar e diagnosticar — Use query quando você já sabe o SQL limitado que deseja inspecionar. Agentes normalmente devem descobrir o schema primeiro por meio das ferramentas MCP.

query

Executar uma instrução SQL somente leitura e limitada e exibir seus resultados.

safeselect query --sql "SELECT order_id, status, subtotal FROM public.demo_orders WHERE status = 'paid' LIMIT 3"

Terminal capture for safeselect query --sql <SQL>

A solicitação SQL limitada retorna três linhas de fixture sintéticas com contagens de linhas e bytes; gravações permanecem rejeitadas.

list_tables (MCP)

Descobrir tabelas PostgreSQL por meio do MCP.

list_tables({"schema":"public"})

Discover PostgreSQL tables through MCP.

Resposta MCP real, formatada como tabela: cinco relações sintéticas em public. Descubra nomes exatos antes de inspecionar colunas.

describe_table (MCP)

Inspecionar nomes de colunas, tipos e nulidade por meio do MCP.

describe_table({"schema":"public","table":"demo_orders"})

Inspect column names, types and nullability through MCP.

Resposta MCP real, formatada como tabela: oito colunas incluindo UUID, JSONB e um intervalo de timestamp. Nenhuma linha de dados é consultada.

get_maintenance_diagnostics (MCP)

Inspecionar sinais de ANALYZE e VACUUM sem executar manutenção.

get_maintenance_diagnostics({"schema":"public"})

Inspect ANALYZE and VACUUM signals without running maintenance.

Trecho de resposta MCP real: todas as cinco tabelas de fixture estão abaixo dos limites de manutenção. Este diagnóstico somente leitura nunca executa ANALYZE ou VACUUM; revise as evidências com um DBA.

Explorar NoSQL: descobrir, inferir e ler — Siga a descoberta do MongoDB de bancos de dados para documentos limitados, com inferência de schema amostrada antes das leituras.

list_databases (MCP)

Descobrir bancos de dados MongoDB por meio do MCP.

list_databases()

MongoDB list_databases response

Resposta MCP real: a demonstração isolada expõe um banco de dados permitido. Escolha-o antes de descobrir coleções.

list_collections (MCP)

Descobrir coleções em um banco de dados MongoDB permitido.

list_collections({"database":"safeselect_demo"})

MongoDB list_collections response

Resposta MCP real: quatro coleções sintéticas são listadas sem ler documentos.

discover_document_schema (MCP)

Inferir campos e tipos frequentes de uma amostra MongoDB limitada.

discover_document_schema({"database":"safeselect_demo","collection":"orders","sample_size":5})

MongoDB sampled document schema

Resposta MCP real: campos amostrados e tipos observados orientam a próxima leitura limitada; a inferência é explicitamente não exaustiva.

find_documents (MCP)

Ler documentos MongoDB limitados com um filtro explícito.

find_documents({"database":"safeselect_demo","collection":"orders","filter":{"status":"paid"},"limit":3})

MongoDB bounded document read

Resposta MCP real: três pedidos pagos, 994 bytes, retornados em 7ms. O filtro e o limite mantêm a leitura limitada.

Use safeselect --help ou um --help específico de comando para a CLI completa.

A desinstalação verifica tanto os locais de binário do instalador de release quanto do Cargo. As importações do MongoDB Compass suportam conexões mongodb+srv:// com túnel SSH resolvendo o alvo SRV e reescrevendo o endpoint local com as opções necessárias de TLS e conexão direta.

Configuração

O estado global vive em ~/.config/safeselect/ por padrão. A política do projeto vive em .safeselect/ na raiz do repositório:

<repo-root>/
└── .safeselect/
    ├── project.toml
    └── environments/
        └── <env>.toml

SafeSelect caminha para cima a partir do diretório atual para encontrar .safeselect/. Use --project <path> quando um agente ou script deve mirar um repositório específico.

Convenção antes da configuração

A partir de um repositório configurado, os comandos inferem o projeto a partir do diretório .safeselect/ mais próximo e inferem o ambiente quando existe exatamente um arquivo environments/*.toml. Por exemplo, safeselect serve, safeselect check, safeselect query --sql "SELECT 1" e safeselect config show não precisam de flags de projeto ou ambiente em um projeto de ambiente único. --project e --environment permanecem disponíveis para scripts, outros diretórios de trabalho e seleção deliberada. Se existirem múltiplos ambientes, os comandos que atuam em um falham em vez de adivinhar e dizem para você passar --environment <name>.

Os padrões diferem por operação:

  • serve, query, connect, disconnect, config show e comandos de senha exigem um ambiente explícito ou unicamente inferido. Sem ambientes, eles falham; serve tem o comportamento separado de primeira execução acima.
  • check, doctor, posture, reconnect e config validate inspecionam ou processam todos os ambientes quando a flag é omitida. As verificações não são offline: elas podem resolver segredos, estabelecer túneis SSH e contatar bancos de dados. Use --environment <name> para evitar tocar em ambientes não relacionados ou de produção.
  • query suporta apenas ambientes JDBC e ainda precisa de SQL através de --sql ou stdin (stdin interativo aguarda EOF). Selecionar um ambiente MongoDB não o transforma em um comando de consulta MongoDB.
  • CLI connect e disconnect operam em um novo sidecar JDBC temporário e o encerram antes de sair. Eles não controlam uma sessão MCP já em execução; use as ferramentas de conexão MCP dessa sessão.
  • Comandos de senha modificam o Keychain/configuração local, não a senha do banco de dados em si. config set-ssh-password alterna a autenticação SSH para senha e limpa a referência de arquivo de identidade configurada.

As entradas MCP geradas fixam deliberadamente tanto o projeto quanto o ambiente. Mantenha esses argumentos na configuração do cliente e em scripts não assistidos: a inferência é uma conveniência da CLI, não um ambiente padrão persistente.

Agentes Suportados

ClienteEscopo do usuárioEscopo do projetoIntegração
OpenCodeSimSimJSON/JSONC mcp
OpenAI CodexSimSimTOML sem perdas mcp_servers
Claude CodeSimSimescopos nativos claude mcp
CursorSimSim.cursor/mcp.json
WindsurfSimNãoconfig MCP global do Windsurf
GitHub CopilotSimSimservers no MCP JSON
Gemini CLISimSim.gemini/settings.json

O SafeSelect nunca recai silenciosamente em um escopo mais amplo. Em particular, --local para Windsurf falha com uma correção clara porque o Windsurf não documenta uma configuração MCP com escopo de projeto.

Compilar a Partir do Código-Fonte

# Installs makevn through Homebrew or asdf only when it is missing.
./install.sh --install-makevn
"$HOME/.local/bin/safeselect" --version

Requisitos: Rust 1.85+ e Java 17+. O bootstrap requer Homebrew ou asdf; caso contrário, instale makevn primeiro. sshpass é opcional para túneis SSH baseados em senha. Adicione ~/.local/bin ao seu PATH antes de invocar safeselect sem o caminho completo.

Documentação

As notas de versão são geradas a partir de CHANGELOG.md.

Ecossistema

Listagens de diretórios

Listed on mcpservers.org Indexed on TensorBlock MCP Index MCP Badge

Runtime e distribuição

Security Rust Java MCP Homebrew asdf

Licença

MIT - veja LICENSE.