Skip to main content

Nautilus MCP Server

O que é

É um servidor Model Context Protocol (MCP) que fala com o assistente pela entrada/saída padrão (stdio). Está publicado no npm como nautilus-mcp-server e precisa de Node.js 18 ou superior. Recomenda-se executar com npx -y nautilus-mcp-server@latest para o npx resolver sempre o dist-tag latest (evita reutilizar cache de instalação antiga). Se precisar travar em uma versão exata, use nautilus-mcp-server@<versão> no lugar de @latest.

O que faz

  • Bancos SQL (PostgreSQL, MySQL/MariaDB, SQLite, SQL Server, Oracle): listar tabelas, ver colunas e índices, executar apenas consultas de leitura (SELECT / WITH) com validação de segurança e limite de linhas, e pequenas amostras de dados.
  • MongoDB: listar coleções, buscar documentos com filtro em JSON e paginação, ver índices da coleção, amostra rápida.
  • Redis: listar chaves (com padrão e cursor), ler valores conforme o tipo da chave (string, hash, lista, set, sorted set, stream e RedisJSON), com decode seguro de binário e teto de bytes por valor; amostra rápida.

Em muitas respostas o cliente recebe também structuredContent (JSON estruturado) além do texto, para quem consome colunas, linhas, documentos ou chaves sem depender só de texto formatado.

Comportamento padrão: somente leitura no SQL; tamanho de query, timeout e número de linhas/registros têm defaults globais no YAML (bloco defaults) e podem ser sobrescritos por conexão (veja abaixo).

Tools

Tool Função
db_list_connections Lista os connection_id configurados, tipo de engine e read_only. Use antes das demais tools para escolher o id correto.
db_list_resources SQL: tabelas. MongoDB: coleções (parâmetro database obrigatório). Redis: chaves (key_pattern e cursor opcionais).
db_get_metadata SQL: metadados/colunas da tabela. MongoDB: amostra de documentos. Redis: tipo e amostra do valor da chave.
db_describe_indexes Índices de uma tabela SQL ou de uma coleção MongoDB.
db_query_sql Executa SELECT/WITH em conexões SQL. output_format: table, json ou csv; limit opcional (respeitando o teto global).
db_fetch_documents MongoDB: find com filter_json, limit e skip.
db_read_cache Redis: leitura conforme o tipo da chave.
db_peek_sample Até três registros: linhas (SQL), documentos (MongoDB) ou amostra (Redis).

Resources (MCP)

URI Conteúdo
nautilus://connections JSON com { "connections": [...] } (mesmos campos que db_list_connections: connection_id, type, read_only).

Como configurar as conexões

As conexões ficam num único arquivo YAML. O servidor lê o caminho de NAUTILUS_CONFIG (padrão ./nautilus.yaml) e valida na subida, falhando cedo com mensagem clara se algo estiver inconsistente. Veja nautilus.yaml.example para um modelo completo.

Cada conexão tem um identificador (connection_id): letras, números e underscores (ex.: pg_prod, mongo_app).

A senha fica cifrada no YAML. O campo password só é aceito cifrado (formato enc:...); texto puro é recusado na subida. Para gravar uma senha, use o CLI nautilus (abaixo), que a cifra com a chave NAUTILUS_KEY antes de escrever no arquivo. Não há interpolação de ${VAR}: todos os demais campos (host, user, database, url) vão literais no YAML. Os únicos valores lidos do ambiente são NAUTILUS_CONFIG e NAUTILUS_KEY.

Cadastrar conexões pelo CLI

Toda adição, alteração e remoção de conexão passa pelo CLI — ele edita o nautilus.yaml e cifra a senha na hora. A chave de criptografia vive fora do YAML, na variável NAUTILUS_KEY (sem ela, o valor cifrado é inútil).

# 1. Gere a chave uma vez e exporte-a no ambiente (guarde-a com segurança)
nautilus keygen                       # imprime a chave; defina NAUTILUS_KEY com ela

# 2. Gerencie as conexões (a senha é pedida de forma oculta e cifrada ao salvar)
nautilus add pg_prod                  # pergunta type/host/port/user/senha/database
nautilus list                         # lista as conexões (nunca mostra a senha)
nautilus edit pg_prod                 # altera campos; senha em branco mantém a atual
nautilus remove pg_prod               # remove a conexão

# Use --config para apontar outro arquivo (padrão: NAUTILUS_CONFIG ou ./nautilus.yaml)
nautilus --config C:/caminho/nautilus.yaml list

Importante: a mesma NAUTILUS_KEY usada no nautilus add precisa estar no ambiente do servidor — é com ela que o Nautilus decifra as senhas ao subir. Troca de chave implica regravar as senhas.

Estrutura

defaults:                 # valores herdados por todas as conexões (todos opcionais)
  read_only: true
  query_timeout_ms: 30000
  connect_timeout_ms: 5000
  max_rows: 200
  default_rows: 50
  query_max_length: 2000

connections:
  <connection_id>:
    type: <engine>        # obrigatório
    # ...atributos da conexão...

Por conexão

  • type (obrigatório): um entre postgresql, mysql, mariadb (tratado como MySQL), sqlite, sqlserver, oracle, mongodb, redis.
  • Conexão, em um dos dois formatos:
    • url: URL completa (ex.: postgresql://user:senha@host:5432/banco). Para SQLite use url: ":memory:" ou url: "file:...", ou o atalho path:.
    • Ou campos separados (útil se a senha tem @, :, /): host, port, user, password, database (ou db). A porta pode ir junto em host (db.exemplo.com:3306); omitida, usa-se a padrão por tipo (PostgreSQL 5432, MySQL 3306, SQL Server 1433, Oracle 1521, MongoDB 27017, Redis 6379).
  • Overrides opcionais do defaults: read_only, query_timeout_ms, connect_timeout_ms. Redis aceita ainda socket_timeout_ms (teto por operação; padrão = query_timeout_ms).

Exemplos

PostgreSQL por URL, com timeout maior só nesta conexão:

connections:
  pg:
    type: postgresql
    url: "postgresql://leitor:senha@db.interno:5432/vendas"
    query_timeout_ms: 60000

PostgreSQL por componentes, não somente-leitura (a senha cifrada foi gravada por nautilus add/edit):

connections:
  pg_app:
    type: postgresql
    host: localhost
    port: 5432
    user: myuser
    password: "enc:gAAAAAB..."   # gerado pelo CLI; nunca edite à mão
    database: mydb
    read_only: false

Redis com teto de operação:

connections:
  cache:
    type: redis
    url: "redis://cache.interno:6379/0"
    socket_timeout_ms: 10000

Como usar nos clientes

Em qualquer cliente MCP com transporte stdio, configure:

  • Comando: npx (no Windows, se necessário, use o caminho completo de npx.cmd).
  • Argumentos: use ["-y", "nautilus-mcp-server@latest"]. Opcionalmente fixe versão com ["-y", "nautilus-mcp-server@<versão>"].
  • Variáveis de ambiente (as únicas): NAUTILUS_CONFIG (caminho do YAML) e NAUTILUS_KEY (chave que decifra as senhas — obrigatória se houver password: enc:...). Nenhum outro valor é lido do ambiente.

Exemplo de trecho JSON (Cursor, VS Code com MCP, etc.):

{
  "mcpServers": {
    "nautilus": {
      "command": "npx",
      "args": ["-y", "nautilus-mcp-server@latest"],
      "env": {
        "NAUTILUS_CONFIG": "C:/caminho/para/nautilus.yaml",
        "NAUTILUS_KEY": "a-chave-gerada-por-nautilus-keygen"
      }
    }
  }
}

Cursor

Configurações → MCP (ou JSON de MCP do projeto): adicione o servidor com command, args e env como acima.

Claude Desktop

Use o mesmo esquema de command, args e env no arquivo de configuração MCP do aplicativo. Caminho e formato exato variam por sistema; veja a documentação da Anthropic sobre MCP.

Claude Code e outras IDEs

Mesma ideia: processo npx (ou Node apontando para o pacote instalado), argumentos -y e nautilus-mcp-server@latest, e o mesmo bloco de variáveis de ambiente.

Problemas comuns no Windows com npx

Se aparecer EPERM, TAR_ENTRY_ERROR ou MODULE_NOT_FOUND (por exemplo em dependências sob o cache do npm), feche o cliente MCP, apague a pasta %LocalAppData%\npm-cache\_npx e tente de novo. Outra opção estável é instalar o pacote globalmente (npm install -g nautilus-mcp-server) e configurar o MCP para executar o node com o caminho do cli.js dessa instalação global, em vez de npx.

Metadata

Release files for nautilus-mcp-server 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nautilus-mcp-server 0.4.0
File Size Uploaded Provenance
nautilus_mcp_server-0.4.0.tar.gz 39.1 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for nautilus-mcp-server 0.4.0
File Interpreter ABI Platform
nautilus_mcp_server-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 82.8 kB

Release files / nautilus_mcp_server-0.4.0.tar.gz

Download URL nautilus_mcp_server-0.4.0.tar.gz
Size 39.1 kB
Tags Source
SHA-256 checksum
How to use checksums
acd4ddd918c954c81af798b04b33554292a6ce7fde85fea72934829b2d19fef3
BLAKE2b-256 checksum
How to use checksums
b5ee7f7f1fbec2de6baef599219a33712a6aaf324ffeccd8ead2177223f4a0fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / nautilus_mcp_server-0.4.0-py3-none-any.whl

Download URL nautilus_mcp_server-0.4.0-py3-none-any.whl
Size 43.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8fc592a981d52ec685b1b14b99ec23e4d73240be906d75eef9247d4913c08b14
BLAKE2b-256 checksum
How to use checksums
7c8c4e953e7707cf5e52e2132d3ae8ae064ff6021d565cdec75c16711401e4f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Security for nautilus-mcp-server 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for nautilus_mcp_server-0.4.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page