s3db.js 11.2.6 → 11.3.1

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.
package/mcp/Makefile ADDED
@@ -0,0 +1,162 @@
1
+ # S3DB MCP Server Makefile
2
+
3
+ .PHONY: help server server-v2 test test-simple test-interactive health tools minio clean
4
+
5
+ # Default target
6
+ help:
7
+ @echo "S3DB MCP Server Commands"
8
+ @echo "========================"
9
+ @echo ""
10
+ @echo "Server Commands:"
11
+ @echo " make server - Start original MCP server (SSE)"
12
+ @echo " make server-v2 - Start refactored MCP server v2 (SSE)"
13
+ @echo " make server-stdio - Start server with stdio transport"
14
+ @echo ""
15
+ @echo "Test Commands:"
16
+ @echo " make test - Run automated tests"
17
+ @echo " make test-simple - Run simple HTTP tests"
18
+ @echo " make test-mock - Run tests with mock client"
19
+ @echo " make test-interactive - Interactive test client"
20
+ @echo ""
21
+ @echo "Utility Commands:"
22
+ @echo " make health - Check server health"
23
+ @echo " make tools - List available tools"
24
+ @echo " make minio - Start MinIO for local testing"
25
+ @echo " make clean - Clean cache and temp files"
26
+ @echo ""
27
+ @echo "Docker Commands:"
28
+ @echo " make docker-build - Build Docker image"
29
+ @echo " make docker-run - Run in Docker container"
30
+ @echo " make docker-compose - Start with docker-compose"
31
+
32
+ # Server targets
33
+ server:
34
+ @echo "Starting MCP Server (original)..."
35
+ @node server.js --transport=sse
36
+
37
+ server-v2:
38
+ @echo "Starting MCP Server v2..."
39
+ @node server-v2.js --transport=sse
40
+
41
+ server-stdio:
42
+ @echo "Starting MCP Server (stdio)..."
43
+ @node server-v2.js --transport=stdio
44
+
45
+ # Test targets
46
+ test:
47
+ @echo "Running automated tests..."
48
+ @node test-mcp-v2.js
49
+
50
+ test-simple:
51
+ @echo "Running simple tests..."
52
+ @node test-simple.js
53
+
54
+ test-mock:
55
+ @echo "Running tests with mock client..."
56
+ @node test-mcp-v2.js --mock
57
+
58
+ test-interactive:
59
+ @echo "Starting interactive test client..."
60
+ @node test-mcp-v2.js --interactive
61
+
62
+ # Utility targets
63
+ health:
64
+ @echo "Checking server health..."
65
+ @curl -s http://localhost:8001/health | jq '.' || echo "Server not running"
66
+
67
+ tools:
68
+ @echo "Listing available tools..."
69
+ @curl -s http://localhost:8001/tools | jq '.' || echo "Server not running"
70
+
71
+ minio:
72
+ @echo "Starting MinIO..."
73
+ @docker run -d \
74
+ --name minio-s3db \
75
+ -p 9000:9000 \
76
+ -p 9001:9001 \
77
+ -e MINIO_ROOT_USER=minioadmin \
78
+ -e MINIO_ROOT_PASSWORD=minioadmin \
79
+ -v minio-data:/data \
80
+ minio/minio server /data --console-address ":9001"
81
+ @echo "MinIO started at http://localhost:9000 (console: http://localhost:9001)"
82
+ @echo "Credentials: minioadmin/minioadmin"
83
+
84
+ minio-stop:
85
+ @echo "Stopping MinIO..."
86
+ @docker stop minio-s3db && docker rm minio-s3db
87
+
88
+ # Docker targets
89
+ docker-build:
90
+ @echo "Building Docker image..."
91
+ @docker build -t s3db-mcp-server .
92
+
93
+ docker-run:
94
+ @echo "Running in Docker..."
95
+ @docker run -it --rm \
96
+ -p 8000:8000 \
97
+ -p 8001:8001 \
98
+ -e S3DB_CONNECTION=$${S3DB_CONNECTION} \
99
+ s3db-mcp-server
100
+
101
+ docker-compose:
102
+ @echo "Starting with docker-compose..."
103
+ @docker-compose up -d
104
+
105
+ docker-compose-down:
106
+ @echo "Stopping docker-compose..."
107
+ @docker-compose down
108
+
109
+ # Clean target
110
+ clean:
111
+ @echo "Cleaning cache and temp files..."
112
+ @rm -rf cache/
113
+ @rm -rf ./test-cache/
114
+ @rm -f *.log
115
+ @echo "Cleaned!"
116
+
117
+ # Development targets
118
+ dev:
119
+ @echo "Starting development environment..."
120
+ @make minio
121
+ @sleep 2
122
+ @make server-v2 &
123
+ @sleep 2
124
+ @make test-simple
125
+
126
+ dev-stop:
127
+ @echo "Stopping development environment..."
128
+ @pkill -f "node server" || true
129
+ @make minio-stop
130
+
131
+ # Watch for changes
132
+ watch:
133
+ @echo "Watching for changes..."
134
+ @nodemon --watch lib --watch server-v2.js --exec "make server-v2"
135
+
136
+ # Benchmark
137
+ benchmark:
138
+ @echo "Running benchmarks..."
139
+ @node test-mcp-v2.js --benchmark
140
+
141
+ # Installation
142
+ install:
143
+ @echo "Installing dependencies..."
144
+ @pnpm install
145
+ @pnpm install -D @modelcontextprotocol/sdk nodemon
146
+
147
+ # Environment setup
148
+ setup:
149
+ @echo "Setting up environment..."
150
+ @cp .env.example .env 2>/dev/null || echo "No .env.example found"
151
+ @echo "S3DB_CONNECTION=s3://minioadmin:minioadmin@test-bucket?endpoint=http://localhost:9000&forcePathStyle=true" >> .env
152
+ @echo "MCP_TRANSPORT=sse" >> .env
153
+ @echo "MCP_SERVER_HOST=0.0.0.0" >> .env
154
+ @echo "MCP_SERVER_PORT=8000" >> .env
155
+ @echo "Environment setup complete!"
156
+
157
+ # Combined targets
158
+ all: install setup minio server-v2
159
+
160
+ test-all: test-simple test-mock
161
+
162
+ .DEFAULT_GOAL := help
@@ -0,0 +1,327 @@
1
+ # 🚀 NPX Setup - S3DB MCP Server
2
+
3
+ Use o S3DB MCP Server diretamente com `npx` - sem precisar clonar o repositório!
4
+
5
+ ## ⚡ Quick Start (30 segundos)
6
+
7
+ ### Para Claude CLI
8
+
9
+ ```bash
10
+ # Adicionar o MCP server
11
+ claude mcp add s3db \
12
+ --transport stdio \
13
+ -- npx -y s3db.js s3db-mcp --transport=stdio
14
+ ```
15
+
16
+ Pronto! Agora você pode usar todas as 39 tools do S3DB no Claude CLI.
17
+
18
+ ### Para Claude Desktop
19
+
20
+ Edite `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) ou equivalente:
21
+
22
+ ```json
23
+ {
24
+ "mcpServers": {
25
+ "s3db": {
26
+ "command": "npx",
27
+ "args": ["-y", "s3db.js", "s3db-mcp", "--transport=sse"],
28
+ "env": {
29
+ "S3DB_CONNECTION_STRING": "s3://ACCESS_KEY:SECRET_KEY@bucket/databases/myapp",
30
+ "S3DB_CACHE_ENABLED": "true",
31
+ "S3DB_CACHE_DRIVER": "memory",
32
+ "S3DB_COSTS_ENABLED": "true"
33
+ }
34
+ }
35
+ }
36
+ }
37
+ ```
38
+
39
+ ## 🔧 Configurações Avançadas
40
+
41
+ ### Com variáveis de ambiente
42
+
43
+ ```bash
44
+ claude mcp add s3db \
45
+ --transport stdio \
46
+ -- npx -y s3db.js s3db-mcp --transport=stdio
47
+
48
+ # Depois edite para adicionar env vars
49
+ claude mcp edit s3db
50
+ ```
51
+
52
+ Adicione:
53
+ ```json
54
+ {
55
+ "s3db": {
56
+ "transport": "stdio",
57
+ "command": "npx",
58
+ "args": ["-y", "s3db.js", "s3db-mcp", "--transport=stdio"],
59
+ "env": {
60
+ "S3DB_CONNECTION_STRING": "s3://minioadmin:minioadmin123@localhost:9000/dev-bucket?forcePathStyle=true",
61
+ "S3DB_CACHE_ENABLED": "true",
62
+ "S3DB_CACHE_DRIVER": "memory",
63
+ "S3DB_CACHE_MAX_SIZE": "1000",
64
+ "S3DB_CACHE_TTL": "300000",
65
+ "S3DB_VERBOSE": "false",
66
+ "S3DB_COSTS_ENABLED": "true"
67
+ }
68
+ }
69
+ }
70
+ ```
71
+
72
+ ### Servidor HTTP (background)
73
+
74
+ ```bash
75
+ # Iniciar servidor em background
76
+ npx s3db.js s3db-mcp --transport=sse &
77
+
78
+ # Ou com PM2
79
+ pm2 start "npx s3db.js s3db-mcp --transport=sse" --name s3db-mcp
80
+
81
+ # Configurar Claude CLI para usar HTTP
82
+ claude mcp add s3db --transport http http://localhost:17500/sse
83
+ ```
84
+
85
+ ### MCP Inspector (para testes)
86
+
87
+ ```bash
88
+ # Inicie o inspector
89
+ npx @modelcontextprotocol/inspector
90
+
91
+ # Configure o comando:
92
+ npx -y s3db.js s3db-mcp --transport=stdio
93
+ ```
94
+
95
+ ## 🎯 Exemplos Práticos
96
+
97
+ ### Exemplo 1: Development Local (MinIO)
98
+
99
+ ```bash
100
+ # 1. Configurar MCP
101
+ claude mcp add s3db-dev \
102
+ --transport stdio \
103
+ -- npx -y s3db.js s3db-mcp --transport=stdio
104
+
105
+ # 2. Editar para adicionar MinIO
106
+ claude mcp edit s3db-dev
107
+
108
+ # 3. Adicionar:
109
+ {
110
+ "env": {
111
+ "S3DB_CONNECTION_STRING": "s3://minioadmin:minioadmin123@localhost:9000/dev-bucket?forcePathStyle=true"
112
+ }
113
+ }
114
+
115
+ # 4. Testar
116
+ claude
117
+
118
+ # No chat:
119
+ "Connect to the database and create a test resource"
120
+ ```
121
+
122
+ ### Exemplo 2: Production (AWS S3)
123
+
124
+ ```bash
125
+ # 1. Configurar MCP com credenciais AWS
126
+ claude mcp add s3db-prod \
127
+ --transport stdio \
128
+ -- npx -y s3db.js s3db-mcp --transport=stdio
129
+
130
+ # 2. Editar configuração
131
+ claude mcp edit s3db-prod
132
+
133
+ # 3. Adicionar credenciais seguras:
134
+ {
135
+ "env": {
136
+ "S3DB_CONNECTION_STRING": "s3://prod-data-bucket/databases/main",
137
+ "AWS_ACCESS_KEY_ID": "AKIA...",
138
+ "AWS_SECRET_ACCESS_KEY": "...",
139
+ "AWS_REGION": "us-east-1",
140
+ "S3DB_CACHE_DRIVER": "filesystem",
141
+ "S3DB_CACHE_DIRECTORY": "/tmp/s3db-cache"
142
+ }
143
+ }
144
+ ```
145
+
146
+ ### Exemplo 3: Múltiplos Ambientes
147
+
148
+ ```bash
149
+ # Development
150
+ claude mcp add s3db-dev \
151
+ --transport stdio \
152
+ -- npx -y s3db.js s3db-mcp --transport=stdio
153
+
154
+ # Staging
155
+ claude mcp add s3db-staging \
156
+ --transport stdio \
157
+ -- npx -y s3db.js s3db-mcp --transport=stdio
158
+
159
+ # Production
160
+ claude mcp add s3db-prod \
161
+ --transport stdio \
162
+ -- npx -y s3db.js s3db-mcp --transport=stdio
163
+
164
+ # Ver todos
165
+ claude mcp list
166
+ ```
167
+
168
+ ## 🧪 Testando a Instalação
169
+
170
+ ### 1. Verificar se o comando funciona
171
+
172
+ ```bash
173
+ # Testar diretamente
174
+ npx -y s3db.js s3db-mcp --help
175
+
176
+ # Deve mostrar informações do servidor
177
+ ```
178
+
179
+ ### 2. Verificar configuração MCP
180
+
181
+ ```bash
182
+ claude mcp list
183
+ ```
184
+
185
+ Deve mostrar:
186
+ ```
187
+ s3db - stdio://npx -y s3db.js s3db-mcp --transport=stdio
188
+ ```
189
+
190
+ ### 3. Testar no Claude
191
+
192
+ ```bash
193
+ claude
194
+ ```
195
+
196
+ No chat:
197
+ ```
198
+ "Can you show me the S3DB MCP server status and list available tools?"
199
+ ```
200
+
201
+ ## 🔍 Comandos Úteis
202
+
203
+ ```bash
204
+ # Ver servidores configurados
205
+ claude mcp list
206
+
207
+ # Ver detalhes de um servidor
208
+ claude mcp show s3db
209
+
210
+ # Remover servidor
211
+ claude mcp remove s3db
212
+
213
+ # Editar configuração
214
+ claude mcp edit s3db
215
+
216
+ # Testar servidor diretamente
217
+ npx -y s3db.js s3db-mcp --transport=stdio
218
+ ```
219
+
220
+ ## 📊 Variáveis de Ambiente Disponíveis
221
+
222
+ ### Connection
223
+ ```bash
224
+ S3DB_CONNECTION_STRING="s3://key:secret@bucket/path"
225
+ AWS_ACCESS_KEY_ID="AKIA..."
226
+ AWS_SECRET_ACCESS_KEY="..."
227
+ AWS_REGION="us-east-1"
228
+ ```
229
+
230
+ ### Cache
231
+ ```bash
232
+ S3DB_CACHE_ENABLED="true"
233
+ S3DB_CACHE_DRIVER="memory" # ou "filesystem"
234
+ S3DB_CACHE_MAX_SIZE="1000" # apenas para memory
235
+ S3DB_CACHE_TTL="300000" # 5 minutos em ms
236
+ S3DB_CACHE_DIRECTORY="./cache" # apenas para filesystem
237
+ S3DB_CACHE_PREFIX="s3db"
238
+ ```
239
+
240
+ ### Server
241
+ ```bash
242
+ MCP_TRANSPORT="sse" # ou "stdio"
243
+ MCP_SERVER_HOST="0.0.0.0"
244
+ MCP_SERVER_PORT="17500"
245
+ NODE_ENV="production" # ou "development"
246
+ ```
247
+
248
+ ### S3DB Core
249
+ ```bash
250
+ S3DB_VERBOSE="false"
251
+ S3DB_PARALLELISM="10"
252
+ S3DB_PASSPHRASE="secret"
253
+ S3DB_VERSIONING_ENABLED="false"
254
+ S3DB_COSTS_ENABLED="true"
255
+ ```
256
+
257
+ ## 🐛 Troubleshooting
258
+
259
+ ### Erro: "command not found: npx"
260
+
261
+ ```bash
262
+ # Instalar Node.js/npm primeiro
263
+ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
264
+ nvm install --lts
265
+ ```
266
+
267
+ ### Erro: "package not found: s3db.js"
268
+
269
+ ```bash
270
+ # Verificar se o pacote existe
271
+ npm view s3db.js
272
+
273
+ # Usar versão específica
274
+ npx s3db.js@latest s3db-mcp --transport=stdio
275
+ ```
276
+
277
+ ### Erro: "Database not connected"
278
+
279
+ No chat do Claude, sempre conecte primeiro:
280
+ ```
281
+ "Please connect to the database using dbConnect with connection string: s3://..."
282
+ ```
283
+
284
+ ### Servidor não responde
285
+
286
+ ```bash
287
+ # Verificar se está rodando
288
+ ps aux | grep s3db-mcp
289
+
290
+ # Matar processos antigos
291
+ pkill -f s3db-mcp
292
+
293
+ # Reiniciar
294
+ npx -y s3db.js s3db-mcp --transport=sse
295
+ ```
296
+
297
+ ### Ver logs detalhados
298
+
299
+ ```bash
300
+ # Ativar verbose mode
301
+ S3DB_VERBOSE=true npx -y s3db.js s3db-mcp --transport=stdio
302
+ ```
303
+
304
+ ## 🎉 Vantagens do npx
305
+
306
+ ✅ **Sem instalação** - não precisa clonar o repo
307
+ ✅ **Sempre atualizado** - usa a última versão publicada
308
+ ✅ **Fácil de compartilhar** - um comando funciona para todos
309
+ ✅ **Zero configuração** - funciona out-of-the-box
310
+ ✅ **Multi-ambiente** - configure dev/staging/prod facilmente
311
+
312
+ ## 📚 Recursos
313
+
314
+ - [MCP Documentation](https://modelcontextprotocol.io)
315
+ - [S3DB Documentation](../README.md)
316
+ - [Full MCP Guide](../docs/mcp.md)
317
+ - [Claude CLI](https://docs.claude.com/en/docs/claude-code)
318
+ - [NPM Package](https://www.npmjs.com/package/s3db.js)
319
+
320
+ ## ⚡ One-Liner Setup
321
+
322
+ ```bash
323
+ # Tudo em um comando:
324
+ claude mcp add s3db --transport stdio -- npx -y s3db.js s3db-mcp --transport=stdio && echo "✅ S3DB MCP Server configured! Type 'claude' to start."
325
+ ```
326
+
327
+ Pronto! Agora você pode usar `npx s3db.js s3db-mcp` de qualquer lugar! 🚀