feat: v1.3.1 - Multi-transport + Production deployment

- Add HTTP transport (StreamableHTTPServerTransport)
- Add shared server module (src/server/)
- Configure production for hub.descomplicar.pt
- Add SSH tunnel script (start-tunnel.sh)
- Fix connection leak in pg-client.ts
- Fix atomicity bug in comments deletion
- Update docs with test plan for 164 tools

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-31 17:06:30 +00:00
parent 0329a1179a
commit 5f49cb63e8
15 changed files with 1381 additions and 464 deletions

View File

@@ -2,97 +2,386 @@
## Estado Actual
**MCP Outline PostgreSQL v1.2.3** - DESENVOLVIMENTO COMPLETO + SECURITY HARDENED
**MCP Outline PostgreSQL v1.3.1** - PRODUÇÃO CONFIGURADA
- 164 tools implementadas em 33 módulos
- Conectado a **hub.descomplicar.pt** (448 documentos)
- Build passa sem erros
- Repositório: https://git.descomplicar.pt/ealmeida/mcp-outline-postgresql
- Configurado em `~/.claude.json` como `outline-postgresql`
- **Security Score: 8.5/10** (após auditorias v1.2.2 e v1.2.3)
## Security Fixes (v1.2.3)
- Cryptographic random generation (`crypto.randomBytes()`) para OAuth secrets, API keys, share URLs
- API keys armazenam apenas hash (SHA-256), nunca texto plain
- Validação URL HTTP(S) para prevenir javascript:, data:, file: XSS
- Validação de inteiros para IDs externos (Desk CRM)
- Memory leak fix no rate limiter (lifecycle com start/stop)
- Graceful shutdown handler no index.ts
## Módulos Implementados (33 total, 164 tools)
### Core (50 tools)
- documents (19) - CRUD, search, archive, move, templates, memberships
- collections (14) - CRUD, memberships, groups, export
- users (9) - CRUD, suspend, activate, promote, demote
- groups (8) - CRUD, memberships
### Collaboration (14 tools)
- comments (6) - CRUD, resolve
- shares (5) - CRUD, revoke
- revisions (3) - list, info, compare
### System (12 tools)
- events (3) - audit log, statistics
- attachments (5) - CRUD, stats
- file-operations (4) - import/export jobs
### Authentication (10 tools)
- oauth (8) - OAuth clients, authentications
- auth (2) - auth info, config
### User Engagement (14 tools)
- stars (3) - bookmarks
- pins (3) - pinned documents
- views (2) - view tracking
- reactions (3) - emoji reactions
- emojis (3) - custom emojis
### API & Integration (14 tools)
- api-keys (4) - programmatic access
- webhooks (4) - event subscriptions
- integrations (6) - external integrations (Slack, embeds)
### Notifications (8 tools)
- notifications (4) - user notifications
- subscriptions (4) - document subscriptions
### Templates & Imports (9 tools)
- templates (5) - document templates
- imports (4) - import job management
### Permissions (3 tools)
- user-permissions (3) - grant/revoke permissions
### Bulk Operations (6 tools)
- bulk-operations (6) - batch archive, delete, move, restore, user management
### Analytics & Search (15 tools)
- backlinks (1) - document link references
- search-queries (2) - search analytics
- advanced-search (6) - faceted search, recent, orphaned, duplicates
- analytics (6) - overview, user activity, content insights, growth metrics
### Teams (5 tools)
- teams (5) - team/workspace management
### Export/Import & External Sync (4 tools)
- export-import (2) - Markdown export/import with hierarchy
- desk-sync (2) - Desk CRM integration
- Multi-transport: stdio + HTTP
- Security hardened (v1.2.2-v1.2.5)
## Configuração Actual
**Produção:** hub.descomplicar.pt via túnel SSH
```json
"outline-postgresql": {
"command": "node",
"args": ["/home/ealmeida/mcp-servers/mcp-outline-postgresql/dist/index.js"],
"env": {
"DATABASE_URL": "postgres://outline:outline_dev_2026@localhost:5432/outline",
"DATABASE_URL": "postgres://postgres:***@localhost:5433/descomplicar",
"LOG_LEVEL": "error"
}
}
```
## ANTES DE COMEÇAR
```bash
# 1. Verificar/iniciar túnel SSH
/home/ealmeida/mcp-servers/mcp-outline-postgresql/start-tunnel.sh status
# Se inactivo:
/home/ealmeida/mcp-servers/mcp-outline-postgresql/start-tunnel.sh start
# 2. Reiniciar Claude Code se necessário
```
---
## PLANO DE TESTES - 164 Tools
### Fase 1: Core (50 tools) - CRÍTICO
#### Documents (19 tools)
```
outline_list_documents # Listar documentos
outline_get_document # Obter documento por ID
outline_search_documents # Pesquisar documentos
outline_create_document # Criar documento
outline_update_document # Actualizar documento
outline_archive_document # Arquivar documento
outline_restore_document # Restaurar documento
outline_delete_document # Eliminar documento
outline_move_document # Mover documento
outline_duplicate_document # Duplicar documento
outline_get_document_info # Info detalhada
outline_list_document_children # Filhos do documento
outline_get_document_path # Caminho do documento
outline_list_document_backlinks # Backlinks
outline_get_document_memberships # Membros
outline_add_document_member # Adicionar membro
outline_remove_document_member # Remover membro
outline_star_document # Marcar favorito
outline_unstar_document # Desmarcar favorito
```
#### Collections (14 tools)
```
outline_list_collections # Listar colecções
outline_get_collection # Obter colecção
outline_create_collection # Criar colecção
outline_update_collection # Actualizar colecção
outline_delete_collection # Eliminar colecção
outline_list_collection_documents # Docs da colecção
outline_add_user_to_collection # Adicionar utilizador
outline_remove_user_from_collection # Remover utilizador
outline_list_collection_memberships # Membros
outline_add_group_to_collection # Adicionar grupo
outline_remove_group_from_collection # Remover grupo
outline_list_collection_group_memberships # Membros grupo
outline_export_collection # Exportar
outline_get_collection_stats # Estatísticas
```
#### Users (9 tools)
```
outline_list_users # Listar utilizadores
outline_get_user # Obter utilizador
outline_create_user # Criar utilizador (CUIDADO)
outline_update_user # Actualizar utilizador
outline_delete_user # Eliminar utilizador (CUIDADO)
outline_suspend_user # Suspender
outline_activate_user # Activar
outline_promote_user # Promover admin
outline_demote_user # Despromover
```
#### Groups (8 tools)
```
outline_list_groups # Listar grupos
outline_get_group # Obter grupo
outline_create_group # Criar grupo
outline_update_group # Actualizar grupo
outline_delete_group # Eliminar grupo
outline_list_group_members # Membros do grupo
outline_add_user_to_group # Adicionar ao grupo
outline_remove_user_from_group # Remover do grupo
```
### Fase 2: Collaboration (14 tools)
#### Comments (6 tools)
```
outline_comments_list # Listar comentários
outline_comments_info # Info comentário
outline_comments_create # Criar comentário
outline_comments_update # Actualizar comentário
outline_comments_delete # Eliminar comentário
outline_comments_resolve # Resolver comentário
```
#### Shares (5 tools)
```
outline_shares_list # Listar partilhas
outline_shares_info # Info partilha
outline_shares_create # Criar partilha
outline_shares_update # Actualizar partilha
outline_shares_revoke # Revogar partilha
```
#### Revisions (3 tools)
```
outline_revisions_list # Listar revisões
outline_revisions_info # Info revisão
outline_revisions_compare # Comparar revisões
```
### Fase 3: System (12 tools)
#### Events (3 tools)
```
outline_events_list # Listar eventos
outline_events_info # Info evento
outline_events_stats # Estatísticas
```
#### Attachments (5 tools)
```
outline_attachments_list # Listar anexos
outline_attachments_info # Info anexo
outline_attachments_create # Criar anexo
outline_attachments_delete # Eliminar anexo
outline_attachments_stats # Estatísticas
```
#### File Operations (4 tools)
```
outline_file_operations_list # Listar operações
outline_file_operations_info # Info operação
outline_file_operations_redirect # Redirect
outline_file_operations_delete # Eliminar
```
### Fase 4: Authentication (10 tools)
#### OAuth (8 tools)
```
outline_oauth_clients_list # Listar clientes OAuth
outline_oauth_clients_info # Info cliente
outline_oauth_clients_create # Criar cliente
outline_oauth_clients_update # Actualizar cliente
outline_oauth_clients_rotate_secret # Rodar secret
outline_oauth_clients_delete # Eliminar cliente
outline_oauth_authentications_list # Listar autenticações
outline_oauth_authentications_delete # Eliminar autenticação
```
#### Auth (2 tools)
```
outline_auth_info # Info autenticação
outline_auth_config # Configuração
```
### Fase 5: User Engagement (14 tools)
#### Stars (3 tools)
```
outline_stars_list # Listar favoritos
outline_stars_create # Criar favorito
outline_stars_delete # Eliminar favorito
```
#### Pins (3 tools)
```
outline_pins_list # Listar pins
outline_pins_create # Criar pin
outline_pins_delete # Eliminar pin
```
#### Views (2 tools)
```
outline_views_list # Listar visualizações
outline_views_create # Registar visualização
```
#### Reactions (3 tools)
```
outline_reactions_list # Listar reacções
outline_reactions_create # Criar reacção
outline_reactions_delete # Eliminar reacção
```
#### Emojis (3 tools)
```
outline_emojis_list # Listar emojis
outline_emojis_create # Criar emoji
outline_emojis_delete # Eliminar emoji
```
### Fase 6: API & Integration (14 tools)
#### API Keys (4 tools)
```
outline_api_keys_list # Listar API keys
outline_api_keys_create # Criar API key
outline_api_keys_update # Actualizar API key
outline_api_keys_delete # Eliminar API key
```
#### Webhooks (4 tools)
```
outline_webhooks_list # Listar webhooks
outline_webhooks_create # Criar webhook
outline_webhooks_update # Actualizar webhook
outline_webhooks_delete # Eliminar webhook
```
#### Integrations (6 tools)
```
outline_integrations_list # Listar integrações
outline_integrations_get # Obter integração
outline_integrations_create # Criar integração
outline_integrations_update # Actualizar integração
outline_integrations_delete # Eliminar integração
outline_integrations_sync # Sincronizar
```
### Fase 7: Notifications (8 tools)
#### Notifications (4 tools)
```
outline_notifications_list # Listar notificações
outline_notifications_mark_read # Marcar lida
outline_notifications_mark_all_read # Marcar todas
outline_notifications_settings # Configurações
```
#### Subscriptions (4 tools)
```
outline_subscriptions_list # Listar subscrições
outline_subscriptions_subscribe # Subscrever
outline_subscriptions_unsubscribe # Dessubscrever
outline_subscriptions_settings # Configurações
```
### Fase 8: Templates & Imports (9 tools)
#### Templates (5 tools)
```
outline_templates_list # Listar templates
outline_templates_get # Obter template
outline_templates_create_from # Criar de documento
outline_templates_convert_to # Converter para
outline_templates_convert_from # Converter de
```
#### Imports (4 tools)
```
outline_imports_list # Listar imports
outline_imports_status # Estado import
outline_imports_create # Criar import
outline_imports_cancel # Cancelar import
```
### Fase 9: Permissions & Bulk (9 tools)
#### User Permissions (3 tools)
```
outline_user_permissions_list # Listar permissões
outline_user_permissions_grant # Conceder permissão
outline_user_permissions_revoke # Revogar permissão
```
#### Bulk Operations (6 tools)
```
outline_bulk_archive_documents # Arquivar em massa
outline_bulk_delete_documents # Eliminar em massa
outline_bulk_move_documents # Mover em massa
outline_bulk_restore_documents # Restaurar em massa
outline_bulk_add_users_to_collection # Adicionar users
outline_bulk_remove_users_from_collection # Remover users
```
### Fase 10: Analytics & Search (15 tools)
#### Backlinks (1 tool)
```
outline_backlinks_list # Listar backlinks
```
#### Search Queries (2 tools)
```
outline_search_queries_list # Listar pesquisas
outline_search_queries_stats # Estatísticas
```
#### Advanced Search (6 tools)
```
outline_advanced_search # Pesquisa avançada
outline_search_facets # Facetas
outline_recent_documents # Recentes
outline_user_activity # Actividade user
outline_orphaned_documents # Documentos órfãos
outline_duplicate_documents # Duplicados
```
#### Analytics (6 tools)
```
outline_analytics_overview # Visão geral
outline_analytics_user_activity # Actividade users
outline_analytics_content_insights # Insights conteúdo
outline_analytics_collection_stats # Stats colecções
outline_analytics_growth_metrics # Métricas crescimento
outline_analytics_search # Analytics pesquisa
```
### Fase 11: Teams & External (9 tools)
#### Teams (5 tools)
```
outline_teams_get # Obter equipa
outline_teams_update # Actualizar equipa
outline_teams_stats # Estatísticas
outline_teams_domains # Domínios
outline_teams_settings # Configurações
```
#### Export/Import (2 tools)
```
outline_export_collection_to_markdown # Exportar MD
outline_import_markdown_folder # Importar MD
```
#### Desk Sync (2 tools)
```
outline_create_desk_project_doc # Criar doc projecto
outline_link_desk_task # Linkar tarefa
```
---
## Testes Rápidos de Sanidade
```
# 1. Listar documentos (confirma conexão)
outline_list_documents
# 2. Pesquisar (confirma full-text search)
outline_search_documents query="teste"
# 3. Listar colecções
outline_list_collections
# 4. Listar utilizadores
outline_list_users
# 5. Analytics (confirma queries complexas)
outline_analytics_overview
```
---
## Prompt Para Continuar
```
@@ -100,34 +389,39 @@ Continuo o trabalho no MCP Outline PostgreSQL.
Path: /home/ealmeida/mcp-servers/mcp-outline-postgresql
Estado: v1.2.3 completo com 164 tools em 33 módulos.
Security hardened após auditorias (SQL injection, crypto, URL validation, transactions).
Estado: v1.3.1 em PRODUÇÃO (hub.descomplicar.pt, 448 docs)
- 164 tools em 33 módulos
- Túnel SSH activo na porta 5433
- Configurado em ~/.claude.json como "outline-postgresql"
O MCP está configurado em ~/.claude.json como "outline-postgresql".
```
## Ficheiros Chave
- `src/index.ts` - Entry point MCP
- `src/tools/*.ts` - 31 módulos de tools
- `src/pg-client.ts` - Cliente PostgreSQL
- `.env` - Configuração BD local
- `SPEC-MCP-OUTLINE.md` - Especificação completa
- `CHANGELOG.md` - Histórico de alterações
## Utils Disponíveis (v1.2.3)
```
src/utils/
├── security.ts # Validações, rate limiting, URL validation
├── transaction.ts # Transacções com retry logic
├── query-builder.ts # Query builder parametrizado
├── validation.ts # Validação Zod-based
├── audit.ts # Audit logging
├── monitoring.ts # Pool health monitoring
├── pagination.ts # Cursor-based pagination
└── logger.ts # Logging
TAREFA: Testar todas as 164 ferramentas do MCP seguindo o plano em CONTINUE.md.
Começar pela Fase 1 (Core) e avançar sistematicamente.
```
---
*Última actualização: 2026-01-31 (v1.2.3)*
## Ficheiros Chave
| Ficheiro | Descrição |
|----------|-----------|
| `src/index.ts` | Entry point stdio |
| `src/index-http.ts` | Entry point HTTP |
| `src/server/` | Lógica partilhada |
| `src/tools/*.ts` | 33 módulos de tools |
| `start-tunnel.sh` | Script túnel SSH |
| `CREDENTIALS-BACKUP.md` | Credenciais backup |
| `CHANGELOG.md` | Histórico alterações |
| `SPEC-MCP-OUTLINE.md` | Especificação completa |
---
## Notas de Teste
- **READ-ONLY primeiro:** Começar com operações de leitura
- **WRITE com cuidado:** Criar docs/users de teste, não alterar dados reais
- **BULK Operations:** Testar com IDs de teste apenas
- **Rollback:** Se algo correr mal, usar outline_restore_document
---
*Última actualização: 2026-01-31 (v1.3.1 - Produção)*