Esta página descreve as melhores práticas de segurança para o servidor MongoDB MCP.
Modo somente leitura do servidor MCP
A --readOnly
opção MCP Server ativa o modo somente leitura. --readOnly
restringe o Servidor MCP a executar somente ferramentas que executam operações de leitura, conexão e metadados.
Por padrão, o modo somente leitura não está habilitado e o Servidor MCP permite operações de gravação em cluster. Para melhorar a segurança, habilite o modo somente leitura do servidor MCP e use um usuário de banco de dados somente leitura para se conectar aos clusters.
O modo somente leitura evita modificações acidentais ou maliciosas de dados realizadas com o Servidor MCP.
Para habilitar o modo somente leitura, inclua --readOnly
no arquivo de configuração JSON do aplicação cliente MCP ou na linha de comando ou defina a variável de ambiente do sistema operacional MDB_MCP_READ_ONLY
como true
. As seções a seguir mostram exemplos de cada método.
Exemplo de arquivo de configuração JSON
O exemplo a seguir mostra --readOnly
no arquivo de configuração JSON do cliente MCP para o aplicação cliente Execution Desktop :
{ "mcpServers": { "MongoDB": { "type": "stdio", "command": "npx", "args": [ "-y", "mongodb-mcp-server@latest", "--connectionString", "mongodb://localhost:27017/myDatabase", "--readOnly" ] } } }
Para obter outros exemplo de arquivos de configuração JSON do cliente ,consulte Configurar o servidor MCP.
Exemplo de linha de comando
O exemplo seguinte define --readOnly
com o comando npx
:
npx -y mongodb-mcp-server@latest \ --connectionString "mongodb://localhost:27017/myDatabase" \ --readOnly
Segredos e variáveis de ambiente
Use variáveis de ambiente para passar segredos e connection strings para o servidor MCP.
As variáveis de ambiente são mais seguras porque os argumentos da linha de comando podem ser rastreados, armazenados em cache e aparecem em locais diferentes no computador.
O exemplo a seguir define a variável de ambiente MDB_MCP_READ_ONLY
como true
:
"MongoDB": { "type": "stdio", "command": "npx", "args": [ "-y", "mongodb-mcp-server@latest", ], "env": { "MDB_MCP_READ_ONLY": true } }
Para obter mais informações sobre variáveis de ambiente, consulte Definição de variáveis de ambiente do servidor MCP.
Acesso ao banco de dados somente leitura
Para uma implementação segura, use o acesso ao banco de dados somente leitura com o servidor MCP:
Crie usuários dedicados do banco de dados somente leitura para conexões do servidor MCP.
Utilize a função
read
do banco de dados ou crie uma função personalizada somente para leitura para os usuários do banco de dados .Nunca use credenciais de banco de dados
write
com o servidor MCP.
Casos de uso para acesso ao banco de dados somente leitura:
Análise de dados: consulte e analise dados de produção sem risco de modificação.
Relatórios: gere relatórios a partir de dados em tempo real.
Monitoramento: examine as métricas do banco de dados e os indicadores de desempenho.
Suporte ao desenvolvimento: permita que os desenvolvedores consultem os dados de produção para fins de depuração sem permitir o acesso de gravação.
Além disso, use a opção do servidor MCP --readOnly
para garantir o acesso aos dados somente leitura. Para obter detalhes, consulte a seção anterior Modo somente leitura do servidor MCP.
O acesso ao banco de dados somente leitura é recomendado para produção. Mas considere o acesso de escrita limitado para os seguintes casos de uso:
Ambientes de desenvolvimento e preparação.
Execute tarefas administrativas com a autorização correta .
Clusters de teste isolados com dados não críticos.
Opções de sistema de servidor MCP
Você pode distribuir o servidor MCP local ou remotamente.
Servidor MCP local
Em um servidor MCP local, o servidor MCP e o aplicação cliente são executados no mesmo computador.
Um servidor MCP local permite o controle sobre o ambiente de instalação:
Configuração e dependências: você gerencia as dependências de software do Servidor MCP. Para definir os parâmetros do servidor MCP e as conexões do banco de dados , edite arquivos no computador local.
Segurança de credenciais: informações confidenciais para chaves API e connection strings são armazenadas localmente em arquivos de configuração ou variáveis de ambiente. Você protege as credenciais.
Atualizações manuais de software: quando uma nova versão do MCP Server está disponível, os usuários podem baixar e instalar o software MCP Server. Isso pode fazer com que os usuários executem versões diferentes do MCP Server.
Quando implantar o servidor MCP localmente
Implemente um servidor MCP local para os seguintes cenários:
Exigem configuração fácil para começar a usar o Servidor MCP em seu computador.
Gerencie sua própria configuração e atualizações.
Usando diferentes protocolos de transporte
Os protocolos de transporte MCP permitem a comunicação de mensagens entre o aplicação cliente e o servidor MCP. Para um servidor MCP local, use um dos seguintes protocolos de transporte:
Stdio (entrada/saída padrão): o aplicação cliente inicia o servidor MCP como um processo filho e se comunica usando pipes padrão do sistema operacional (
stdin
stdout
e). O MongoDB recomenda o protocolo de transporte Stdio para sistemas locais.Streamable HTTP: o servidor MCP inicia um servidor
localhost
no. O cliente se comunica com o servidor MCP usando solicitações HTTP Streamable, que criam uma sessão persistente. Um ID de sessão exclusivo é incluído em um cabeçalho de mensagem para manter o estado e o contexto da interação.
Aviso
Com o Streamable HTTP, o servidor MCP é vinculado a localhost
(127.0.0.1)
por padrão. Isso garante que o servidor MCP aceite somente conexões originadas no mesmo computador.
A vinculação ao 0.0.0.0
expõe o servidor MCP a toda a rede local, o que permite que outros dispositivos na mesma rede acessem potencialmente o servidor MCP. Isso é um risco à segurança e pode permitir o acesso não autorizado ao contexto do seu banco de dados . Se você precisar expor o servidor MCP fora localhost
do, implemente a autenticação de segurança descrita em Como proteger conexões com o servidor MCP.
Vantagens e desvantagens de diferentes protocolos de transporte
O Stdio cria um link direto entre o aplicação cliente e o servidor MCP. O Stdio é melhor se apenas um aplicação se comunicar com o servidor MCP, pois o aplicação e o servidor MCP estão intimamente vinculados. Ao usar o Stdio, o servidor MCP deve ser executado no mesmo computador que o aplicação cliente .
O Streamable HTTP é flexível e funciona como um servidor privado no seu computador. Vários clientes podem se conectar ao servidor MCP. O Streamable HTTP é fácil de testar. Ao contrário do Stdio, o Streamable HTTP também permite implantar remotamente e implantar localmente o servidor MCP.
Servidor MCP remoto
Em um sistema remoto do Servidor MCP, o Servidor MCP é executado em um computador na nuvem ou em um servidor local.
Os aplicativos do cliente se conectam ao Servidor MCP pela rede e usam o Streamable HTTP. Isso fornece um ambiente compartilhado central acessível a vários usuários, sistemas automatizados, aplicativos e agentes de IA.
Considere os seguintes pontos para sistemas remotos do Servidor MCP:
A implementação remota tem riscos adicionais de segurança e requer uma configuração segura.
No mínimo, você precisa configurar o isolamento da rede, a autenticação no Servidor MCP e configurar o gerenciamento de segredos na nuvem ou no local.
Melhores práticas de segurança para Streamable HTTP
A comunicação em um sistema remoto do Servidor MCP normalmente usa Streamable HTTP. Considere os seguintes pontos para Streamable HTTP:
Mantenha o Servidor MCP vinculado a
localhost
(127.0.0.1
) para conexões, que é o padrão.A vinculação ao
localhost
exige que os administradores adicionem um proxy reverso na frente do servidor MCP. Por exemplo, use um proxy reverso Nginx.O Servidor MCP depende do proxy reverso para interromper o tráfego malicioso antes que o tráfego chegue ao Servidor MCP.
Vantagens do servidor MCP remoto
Gerenciamento central: políticas de segurança, registros, controle de versão e controle de acesso são gerenciados em um só local.
Automação de suporte: PipelinesCI/CD, frameworks de testes automatizados e outros agentes podem operar como clientes para fluxos de trabalho automatizados.
Desvantagens do servidor MCP remoto
Hardware adicional: requer servidor dedicado e infraestrutura de rede.
Segurança complexa: requer segurança de rede, autenticação, autorização e gerenciamento de certificados TLS.
ponto único de falha: se o servidor remoto falhar, isso afetará todos os usuários. Considere implementar alta disponibilidade para ambientes críticos.
Segurança de servidor MCP remota
Em todos os sistemas MCP, a autenticação no Servidor MCP é executada separadamente da autenticação para o serviço ao qual o Servidor MCP fornece acesso. O Servidor MongoDB MCP fornece acesso configurado estaticamente às instâncias do MongoDB que o Servidor MCP protege.
O Servidor MCP não oferece funcionalidade de autenticação ou autorização de entrada, e você deve configurar a autenticação e a autorização. Isso é especialmente importante para uma implantação remota do Servidor MCP, pois o Servidor MCP está disponível em uma rede.
Proteção de conexões com o servidor do MCP
Todas as conexões de entrada com o servidor do MCP devem ser protegidas, caso contrário, o banco de dados será exposto.
As conexões devem ser protegidas mesmo que a conexão entre o Servidor MCP e o banco de dados seja totalmente segura, conforme descrito nas seções a seguir. Isso ocorre porque o servidor MCP fornece um ponto de conexão separado .
A proteção de conexões de entrada para o Servidor MCP requer um serviço externo que opere em paralelo com o Servidor MCP. Isso normalmente requer um proxy reverso para impor controles de acesso para conexões de entrada. O proxy mapeia os direitos de acesso da solicitação recebida para uma instância específica do Servidor MCP, que é configurada estaticamente para se conectar a uma instância do banco de dados MongoDB localmente ao Servidor MCP ou a um cluster Atlas .
Outros métodos para proteger o servidor MCP são possíveis. Para simplificar, as seções a seguir pressupõem o uso de um padrão de proxy.
Autorização delegada
Na autorização delegada, o usuário delega um subconjunto de sua autoridade a um agente. O MongoDB recomenda o uso do OAuth 2.1 com o servidor MCP.
Para operar com o servidor MCP, uma implantação deve ter um servidor de autorização OAuth (AS) protegido por contas de usuário autenticadas e um proxy na frente do servidor MCP que opere como um servidor de recursos OAuth (RS). O agente opera como um cliente OAuth .
A delegação OAuth opera da seguinte forma:
O agente solicita acesso ao servidor MCP. O servidor MCP é protegido por um proxy.
O proxy envia o agente para o AS, que inicia uma solicitação de autorização
O usuário faz login no AS e autoriza o agente a acessar o RS, que é o proxy que protege o servidor MCP.
O agente recebe um token de acesso para acessar o RS.
O agente usa o token de acesso para chamar o servidor MCP por meio do proxy.
O proxy valida o token de acesso e permite a chamada para o servidor MCP.
O Servidor MCP recebe a solicitação de proxy e executa o comando no banco de dados por meio da conexão segura configurada estaticamente.
O servidor MCP e o banco de dados nunca leem o token de acesso. O proxy é confiável para proteger o servidor MCP. Ignorar o proxy arrisca acessar o Servidor MCP e os bancos de dados que o Servidor MCP pode acessar.
O formato do token é oculto. OsJWTs são um formato comum que permite ao proxy verificar de forma independente o token emitido pelo AS.
Autenticação direta
A autenticação direta não é recomendada.
Com a autenticação direta, o agente fornece credenciais para o proxy. O proxy autentica as credenciais. As credenciais podem ser uma chave de API ou outra credencial que identifique o agente. O padrão é simples, mas tem os seguintes problemas:
Somente o agente é identificado, não o usuário para o qual o agente está agindo.
Não há um método para auditar quem está realizando qual ação por meio do servidor MCP.
O acesso geralmente é controlado centralmente para todos os usuários ou diretamente no proxy.
Antipadrão de segurança MCP
As seções a seguir descrevem antipadrão que você não deve usar.
Personificação do usuário
Não use a representação de usuário.
Com a representação do usuário, o usuário fornece suas credenciais diretamente ao agente. O agente envia as credenciais ao proxy para autenticação. A representação do usuário tem os seguintes problemas:
Somente o usuário é identificado. O fato de o agente agir em nome do usuário é oculto.
As credenciais do usuário são vazadas para sistemas intermediários. Isso coloca as contas de usuário em risco.
As ações que o usuário pode executar são permitidas para o agente, e a liberação limitada de funções é impossível.
A desconexão de um agente exige a rotação das credenciais do usuário, o que interrompe as contas e os sistemas do usuário.
As credenciais não phishable e não repetíveis não podem operar.
Autenticação de passagem
Não use autenticação de passagem.
Na autenticação de passagem, o agente obtém e passa credenciais para acessar o banco de dados para o proxy. O proxy valida as credenciais e as passa para o servidor MCP. O Servidor MCP utiliza as credenciais para se conectar ao banco de dados. A autenticação de passagem tem os seguintes problemas:
Somente credenciais copiáveis e reproduzíveis podem operar, o que limita as conexões a opções de baixa segurança.
A cadeia de conexão está ocultada do sistema.
Qualquer um pode potencialmente omitir a próxima parte da cadeia.
Segurança de banco de dados e rede
O método que o Servidor MCP usa para acessar com segurança o banco de dados é separado do método usado para proteger o acesso ao Servidor MCP. As seções a seguir descrevem a segurança do banco de dados e da rede.
Autenticação e autorização de banco de dados
O servidor MCP suporta os seguintes métodos de autenticação do banco de dados :
Autenticação empresarial com certificados LDAP, X.509, OIDC e Kerberos.
Autenticação padrão do SCRAM-SHA-256 para fornecer autenticação de senha forte.
Autenticação de certificadomTLS para contas de serviço e comunicação entre clusters.
O banco de dados MongoDB suporta os seguintes métodos de autorização :
RBAC para limitar o acesso ao banco de dados .
Permissões de banco de dados granulares para limitar o acesso a bancos de dados específicos, collections individuais e operações como leitura, escrita e ações administrativas.
Funções de banco de dados personalizadas para equipes. Por exemplo, acesso somente leitura para equipe de analítica e acesso de leitura e gravação para equipe de operações.
Segurança adicional da collection para limitar o acesso à collection.
Segurança de rede
Recomendações para isolamento de rede:
Implemente clusters em um VPC privado ou VNet sem acesso direto à Internet.
Conexões seguras à rede privada na nuvem com emparelhamento de VPC e endpoints privados.
Restrinja o acesso ao banco de dados a endereços IP ou blocos CIDR específicos.
Recomendações para configuração de firewall :
Restringir o acesso à porta 27017 do servidor MongoDB somente a servidores de aplicação autorizados.
Configure as regras do firewall da nuvem com grupos de segurança e uma ACL para o tráfego de rede de entrada e saída.
Desative as portas não criptografadas e aplique TLS 1.2+ a todas as conexões.