nautilus-mcp-server 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,154 @@
1
+ Metadata-Version: 2.4
2
+ Name: nautilus-mcp-server
3
+ Version: 0.1.0
4
+ Summary: Add your description here
5
+ Requires-Python: >=3.11
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: mcp>=1.27.2
8
+ Requires-Dist: oracledb>=4.0.1
9
+ Requires-Dist: psycopg[binary]>=3.3.4
10
+ Requires-Dist: pymongo>=4.17.0
11
+ Requires-Dist: pymssql>=2.3.13
12
+ Requires-Dist: pymysql>=1.2.0
13
+ Requires-Dist: python-dotenv>=1.2.2
14
+ Requires-Dist: redis>=8.0.0
15
+
16
+ # Nautilus MCP Server
17
+
18
+ ## O que é
19
+
20
+ É um servidor [Model Context Protocol (MCP)](https://modelcontextprotocol.io) 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`.
21
+
22
+ ## O que faz
23
+
24
+ - **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.
25
+ - **MongoDB**: listar coleções, buscar documentos com filtro em JSON e paginação, ver índices da coleção, amostra rápida.
26
+ - **Redis**: listar chaves (com padrão e cursor), ler valores conforme o tipo da chave (string, hash, lista, set, sorted set), amostra rápida.
27
+
28
+ 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.
29
+
30
+ Comportamento padrão: **somente leitura** no SQL; limites globais de tamanho de query, timeout e número de linhas/registros podem ser ajustados por variáveis de ambiente (veja abaixo).
31
+
32
+ ## Tools
33
+
34
+ | Tool | Função |
35
+ |------|--------|
36
+ | **`db_list_connections`** | Lista os `connection_id` configurados, tipo de engine e `read_only`. Use antes das demais tools para escolher o id correto. |
37
+ | **`db_list_resources`** | SQL: tabelas. MongoDB: coleções (parâmetro `database` obrigatório). Redis: chaves (`key_pattern` e `cursor` opcionais). |
38
+ | **`db_get_metadata`** | SQL: metadados/colunas da tabela. MongoDB: amostra de documentos. Redis: tipo e amostra do valor da chave. |
39
+ | **`db_describe_indexes`** | Índices de uma tabela SQL ou de uma coleção MongoDB. |
40
+ | **`db_query_sql`** | Executa `SELECT`/`WITH` em conexões SQL. `output_format`: `table`, `json` ou `csv`; `limit` opcional (respeitando o teto global). |
41
+ | **`db_fetch_documents`** | MongoDB: `find` com `filter_json`, `limit` e `skip`. |
42
+ | **`db_read_cache`** | Redis: leitura conforme o tipo da chave. |
43
+ | **`db_peek_sample`** | Até três registros: linhas (SQL), documentos (MongoDB) ou amostra (Redis). |
44
+
45
+ ## Resources (MCP)
46
+
47
+ | URI | Conteúdo |
48
+ |-----|----------|
49
+ | **`nautilus://connections`** | JSON com `{ "connections": [...] }` (mesmos campos que `db_list_connections`: `connection_id`, `type`, `read_only`). |
50
+
51
+ ## Como configurar as conexões
52
+
53
+ Cada conexão tem um **identificador** (`connection_id`): letras, números e underscores (ex.: `pg_prod`, `mongo_app`).
54
+
55
+ Todas as variáveis seguem o padrão:
56
+
57
+ `DATABASES__<connection_id>__<atributo>`
58
+
59
+ ### Obrigatório por conexão
60
+
61
+ - **`type`**: um entre `postgresql`, `mysql`, `mariadb` (tratado como MySQL), `sqlite`, `sqlserver`, `oracle`, `mongodb`, `redis`.
62
+ - **Conexão**, em um dos dois formatos:
63
+ - **`url`**: URL completa de conexão (ex.: `postgresql://user:senha@host:5432/banco`, `mongodb://host:27017/`, `redis://host:6379/0`, arquivo/path para SQLite conforme documentação do driver).
64
+ - **Ou campos separados** (útil se a senha tem `@`, `:`, `/`, etc.), sempre no formato `DATABASES__<connection_id>__…`: **`host`**, **`port`**, **`user`**, **`password`**, **`database`** ou **`db`**. Exemplo com id `pg`: `DATABASES__pg__host`, **`DATABASES__pg__port`** (ex.: `5432`), `DATABASES__pg__user`, `DATABASES__pg__password`, `DATABASES__pg__database`. Em vez de `port` separado, a porta pode ir junto em `host` (ex.: `db.exemplo.com:3306`). Se **`port`** for omitida e não estiver no `host`, usam-se portas padrão por tipo (PostgreSQL 5432, MySQL 3306, SQL Server 1433, Oracle 1521, MongoDB 27017, Redis 6379).
65
+
66
+ ### Opcional por conexão
67
+
68
+ - **`read_only`**: padrão é somente leitura.
69
+
70
+ ### Limites e opções globais (opcional)
71
+
72
+ | Variável | Efeito (padrão se omitida) |
73
+ |----------|----------------------------|
74
+ | `NAUTILUS_QUERY_MAX_LENGTH` | Tamanho máximo da query SQL em caracteres (2000). |
75
+ | `NAUTILUS_MAX_ROW_LIMIT` ou `NAUTILUS_MAX_ROWS` | Teto de linhas/registros e validação de `LIMIT` (200). |
76
+ | `NAUTILUS_DEFAULT_ROW_LIMIT` | Limite padrão quando a tool não fixa outro (50, até o máximo). |
77
+ | `NAUTILUS_QUERY_TIMEOUT_MS` | Timeout das operações em milissegundos (5000 se não usar a de segundos). |
78
+ | `NAUTILUS_QUERY_TIMEOUT_SECONDS` | Alternativa ao timeout em ms (só usada se `NAUTILUS_QUERY_TIMEOUT_MS` não estiver definida). |
79
+ | `NAUTILUS_READ_ONLY_MODE` | Modo somente leitura (`true` por padrão). |
80
+
81
+ ### Exemplos (`.env` ou `env` do MCP)
82
+
83
+ PostgreSQL por URL:
84
+
85
+ ```env
86
+ DATABASES__pg__type=postgresql
87
+ DATABASES__pg__url=postgresql://user:password@localhost:5432/mydb
88
+ ```
89
+
90
+ PostgreSQL com host e senha com caracteres especiais:
91
+
92
+ ```env
93
+ DATABASES__pg__type=postgresql
94
+ DATABASES__pg__host=localhost
95
+ DATABASES__pg__port=5432
96
+ DATABASES__pg__user=myuser
97
+ DATABASES__pg__password=pa@ss:word/with
98
+ DATABASES__pg__database=mydb
99
+ ```
100
+
101
+ MySQL com host e porta no mesmo campo:
102
+
103
+ ```env
104
+ DATABASES__app__type=mysql
105
+ DATABASES__app__host=db.exemplo.com:3306
106
+ DATABASES__app__user=app
107
+ DATABASES__app__password=secret
108
+ DATABASES__app__database=appdb
109
+ ```
110
+
111
+ ## Como usar nos clientes
112
+
113
+ Em qualquer cliente MCP com transporte **stdio**, configure:
114
+
115
+ - **Comando**: `npx` (no Windows, se necessário, use o caminho completo de `npx.cmd`).
116
+ - **Argumentos**: use `["-y", "nautilus-mcp-server@latest"]`. Opcionalmente fixe versão com `["-y", "nautilus-mcp-server@<versão>"]`.
117
+ - **Variáveis de ambiente**: todas as `DATABASES__…` e, se quiser, as `NAUTILUS__…`.
118
+
119
+ Exemplo de trecho JSON (Cursor, VS Code com MCP, etc.):
120
+
121
+ ```json
122
+ {
123
+ "mcpServers": {
124
+ "nautilus": {
125
+ "command": "npx",
126
+ "args": ["-y", "nautilus-mcp-server@latest"],
127
+ "env": {
128
+ "DATABASES__pg__type": "postgresql",
129
+ "DATABASES__pg__host": "localhost",
130
+ "DATABASES__pg__port": "5432",
131
+ "DATABASES__pg__user": "app",
132
+ "DATABASES__pg__password": "secret",
133
+ "DATABASES__pg__database": "appdb"
134
+ }
135
+ }
136
+ }
137
+ }
138
+ ```
139
+
140
+ ### Cursor
141
+
142
+ **Configurações → MCP** (ou JSON de MCP do projeto): adicione o servidor com `command`, `args` e `env` como acima.
143
+
144
+ ### Claude Desktop
145
+
146
+ 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](https://docs.anthropic.com/en/docs/agents-and-tools/mcp).
147
+
148
+ ### Claude Code e outras IDEs
149
+
150
+ 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.
151
+
152
+ ### Problemas comuns no Windows com `npx`
153
+
154
+ 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`.
@@ -0,0 +1,139 @@
1
+ # Nautilus MCP Server
2
+
3
+ ## O que é
4
+
5
+ É um servidor [Model Context Protocol (MCP)](https://modelcontextprotocol.io) 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`.
6
+
7
+ ## O que faz
8
+
9
+ - **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.
10
+ - **MongoDB**: listar coleções, buscar documentos com filtro em JSON e paginação, ver índices da coleção, amostra rápida.
11
+ - **Redis**: listar chaves (com padrão e cursor), ler valores conforme o tipo da chave (string, hash, lista, set, sorted set), amostra rápida.
12
+
13
+ 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.
14
+
15
+ Comportamento padrão: **somente leitura** no SQL; limites globais de tamanho de query, timeout e número de linhas/registros podem ser ajustados por variáveis de ambiente (veja abaixo).
16
+
17
+ ## Tools
18
+
19
+ | Tool | Função |
20
+ |------|--------|
21
+ | **`db_list_connections`** | Lista os `connection_id` configurados, tipo de engine e `read_only`. Use antes das demais tools para escolher o id correto. |
22
+ | **`db_list_resources`** | SQL: tabelas. MongoDB: coleções (parâmetro `database` obrigatório). Redis: chaves (`key_pattern` e `cursor` opcionais). |
23
+ | **`db_get_metadata`** | SQL: metadados/colunas da tabela. MongoDB: amostra de documentos. Redis: tipo e amostra do valor da chave. |
24
+ | **`db_describe_indexes`** | Índices de uma tabela SQL ou de uma coleção MongoDB. |
25
+ | **`db_query_sql`** | Executa `SELECT`/`WITH` em conexões SQL. `output_format`: `table`, `json` ou `csv`; `limit` opcional (respeitando o teto global). |
26
+ | **`db_fetch_documents`** | MongoDB: `find` com `filter_json`, `limit` e `skip`. |
27
+ | **`db_read_cache`** | Redis: leitura conforme o tipo da chave. |
28
+ | **`db_peek_sample`** | Até três registros: linhas (SQL), documentos (MongoDB) ou amostra (Redis). |
29
+
30
+ ## Resources (MCP)
31
+
32
+ | URI | Conteúdo |
33
+ |-----|----------|
34
+ | **`nautilus://connections`** | JSON com `{ "connections": [...] }` (mesmos campos que `db_list_connections`: `connection_id`, `type`, `read_only`). |
35
+
36
+ ## Como configurar as conexões
37
+
38
+ Cada conexão tem um **identificador** (`connection_id`): letras, números e underscores (ex.: `pg_prod`, `mongo_app`).
39
+
40
+ Todas as variáveis seguem o padrão:
41
+
42
+ `DATABASES__<connection_id>__<atributo>`
43
+
44
+ ### Obrigatório por conexão
45
+
46
+ - **`type`**: um entre `postgresql`, `mysql`, `mariadb` (tratado como MySQL), `sqlite`, `sqlserver`, `oracle`, `mongodb`, `redis`.
47
+ - **Conexão**, em um dos dois formatos:
48
+ - **`url`**: URL completa de conexão (ex.: `postgresql://user:senha@host:5432/banco`, `mongodb://host:27017/`, `redis://host:6379/0`, arquivo/path para SQLite conforme documentação do driver).
49
+ - **Ou campos separados** (útil se a senha tem `@`, `:`, `/`, etc.), sempre no formato `DATABASES__<connection_id>__…`: **`host`**, **`port`**, **`user`**, **`password`**, **`database`** ou **`db`**. Exemplo com id `pg`: `DATABASES__pg__host`, **`DATABASES__pg__port`** (ex.: `5432`), `DATABASES__pg__user`, `DATABASES__pg__password`, `DATABASES__pg__database`. Em vez de `port` separado, a porta pode ir junto em `host` (ex.: `db.exemplo.com:3306`). Se **`port`** for omitida e não estiver no `host`, usam-se portas padrão por tipo (PostgreSQL 5432, MySQL 3306, SQL Server 1433, Oracle 1521, MongoDB 27017, Redis 6379).
50
+
51
+ ### Opcional por conexão
52
+
53
+ - **`read_only`**: padrão é somente leitura.
54
+
55
+ ### Limites e opções globais (opcional)
56
+
57
+ | Variável | Efeito (padrão se omitida) |
58
+ |----------|----------------------------|
59
+ | `NAUTILUS_QUERY_MAX_LENGTH` | Tamanho máximo da query SQL em caracteres (2000). |
60
+ | `NAUTILUS_MAX_ROW_LIMIT` ou `NAUTILUS_MAX_ROWS` | Teto de linhas/registros e validação de `LIMIT` (200). |
61
+ | `NAUTILUS_DEFAULT_ROW_LIMIT` | Limite padrão quando a tool não fixa outro (50, até o máximo). |
62
+ | `NAUTILUS_QUERY_TIMEOUT_MS` | Timeout das operações em milissegundos (5000 se não usar a de segundos). |
63
+ | `NAUTILUS_QUERY_TIMEOUT_SECONDS` | Alternativa ao timeout em ms (só usada se `NAUTILUS_QUERY_TIMEOUT_MS` não estiver definida). |
64
+ | `NAUTILUS_READ_ONLY_MODE` | Modo somente leitura (`true` por padrão). |
65
+
66
+ ### Exemplos (`.env` ou `env` do MCP)
67
+
68
+ PostgreSQL por URL:
69
+
70
+ ```env
71
+ DATABASES__pg__type=postgresql
72
+ DATABASES__pg__url=postgresql://user:password@localhost:5432/mydb
73
+ ```
74
+
75
+ PostgreSQL com host e senha com caracteres especiais:
76
+
77
+ ```env
78
+ DATABASES__pg__type=postgresql
79
+ DATABASES__pg__host=localhost
80
+ DATABASES__pg__port=5432
81
+ DATABASES__pg__user=myuser
82
+ DATABASES__pg__password=pa@ss:word/with
83
+ DATABASES__pg__database=mydb
84
+ ```
85
+
86
+ MySQL com host e porta no mesmo campo:
87
+
88
+ ```env
89
+ DATABASES__app__type=mysql
90
+ DATABASES__app__host=db.exemplo.com:3306
91
+ DATABASES__app__user=app
92
+ DATABASES__app__password=secret
93
+ DATABASES__app__database=appdb
94
+ ```
95
+
96
+ ## Como usar nos clientes
97
+
98
+ Em qualquer cliente MCP com transporte **stdio**, configure:
99
+
100
+ - **Comando**: `npx` (no Windows, se necessário, use o caminho completo de `npx.cmd`).
101
+ - **Argumentos**: use `["-y", "nautilus-mcp-server@latest"]`. Opcionalmente fixe versão com `["-y", "nautilus-mcp-server@<versão>"]`.
102
+ - **Variáveis de ambiente**: todas as `DATABASES__…` e, se quiser, as `NAUTILUS__…`.
103
+
104
+ Exemplo de trecho JSON (Cursor, VS Code com MCP, etc.):
105
+
106
+ ```json
107
+ {
108
+ "mcpServers": {
109
+ "nautilus": {
110
+ "command": "npx",
111
+ "args": ["-y", "nautilus-mcp-server@latest"],
112
+ "env": {
113
+ "DATABASES__pg__type": "postgresql",
114
+ "DATABASES__pg__host": "localhost",
115
+ "DATABASES__pg__port": "5432",
116
+ "DATABASES__pg__user": "app",
117
+ "DATABASES__pg__password": "secret",
118
+ "DATABASES__pg__database": "appdb"
119
+ }
120
+ }
121
+ }
122
+ }
123
+ ```
124
+
125
+ ### Cursor
126
+
127
+ **Configurações → MCP** (ou JSON de MCP do projeto): adicione o servidor com `command`, `args` e `env` como acima.
128
+
129
+ ### Claude Desktop
130
+
131
+ 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](https://docs.anthropic.com/en/docs/agents-and-tools/mcp).
132
+
133
+ ### Claude Code e outras IDEs
134
+
135
+ 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.
136
+
137
+ ### Problemas comuns no Windows com `npx`
138
+
139
+ 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`.