All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 21s
Mejoras implementadas:
- Parámetro verbose en metabase_cards, metabase_databases, metabase_collections
- Paginación en metabase_cards (page, pageSize)
- Funciones helper para filtrado de campos (filterCardFields, filterDatabaseFields, filterCollectionFields)
- Corrección de bug en metabase_databases con include_tables (API devuelve {data: []} en lugar de array directo)
Resultados:
- Reducción 94.7% en tamaño de respuestas de cards (60KB → 3KB por 5 cards)
- Reducción 90.2% en tamaño de respuestas de databases (2KB → 198 bytes)
- 100% de pruebas exitosas (9/9)
Documentación:
- Agregado ANALISIS-RESULTADOS.md con análisis detallado
- Agregado SPEC-VERBOSE.md con especificación técnica
- Agregado README-TESTING.md con guía de pruebas
- Actualizado README.md con ejemplos de uso de verbose y paginación
- Actualizado .gitignore para excluir scripts de prueba con API keys
195 lines
4.2 KiB
Markdown
195 lines
4.2 KiB
Markdown
# MCP Metabase Server
|
|
|
|
Servidor MCP (Model Context Protocol) para interactuar con Metabase API.
|
|
|
|
## Instalación Rápida
|
|
|
|
```bash
|
|
claude mcp add --transport http nucleodocs-metabase https://metabase.nucleoriofrio.com/mcp
|
|
```
|
|
|
|
## Características
|
|
|
|
Proporciona herramientas MCP para:
|
|
|
|
- **metabase_cards**: Listar y buscar cards/questions con soporte para `verbose` y paginación
|
|
- **metabase_card_info**: Obtener detalles de una card específica
|
|
- **metabase_execute_card**: Ejecutar cards con parámetros dinámicos
|
|
- **metabase_create_card**: Crear nuevas cards/questions
|
|
- **metabase_update_card**: Actualizar nombre y descripción de cards
|
|
- **metabase_collections**: Listar colecciones con soporte para `verbose`
|
|
- **metabase_databases**: Listar bases de datos con soporte para `verbose` y metadata
|
|
- **metabase_dashboards**: Listar dashboards
|
|
- **metabase_dashboard_info**: Obtener detalles de un dashboard
|
|
|
|
### Parámetro `verbose`
|
|
|
|
Por defecto, las herramientas devuelven respuestas **ligeras** optimizadas para listados (reducción de ~90-95% en tamaño).
|
|
Usa `verbose: true` para obtener **toda la información** disponible.
|
|
|
|
**Beneficios:**
|
|
- ⚡ Respuestas 10-20x más rápidas por defecto
|
|
- 💾 Reducción de 90-95% en uso de tokens
|
|
- 🎯 Solo pides información detallada cuando la necesitas
|
|
|
|
**Herramientas con soporte `verbose`:**
|
|
- `metabase_cards`
|
|
- `metabase_databases`
|
|
- `metabase_collections`
|
|
|
|
## Variables de Entorno
|
|
|
|
```bash
|
|
PORT=3000 # Puerto del servidor (default: 3000)
|
|
METABASE_URL=http://metabase:3000 # URL de Metabase
|
|
METABASE_API_KEY=mb_xxxxxxxxxxxxx # API Key de Metabase (requerida)
|
|
```
|
|
|
|
## Autenticación
|
|
|
|
Este servidor usa **API Keys** de Metabase para autenticación.
|
|
|
|
### Crear una API Key en Metabase:
|
|
|
|
1. Ve a Settings → Admin → API Keys
|
|
2. Crea una nueva API Key
|
|
3. Copia la key y configúrala como `METABASE_API_KEY`
|
|
|
|
## Desarrollo Local
|
|
|
|
```bash
|
|
# Instalar dependencias
|
|
npm install
|
|
|
|
# Desarrollo con hot reload
|
|
npm run dev
|
|
|
|
# Build
|
|
npm run build
|
|
|
|
# Producción
|
|
npm start
|
|
```
|
|
|
|
## Docker
|
|
|
|
```bash
|
|
# Build
|
|
docker build -t mcp-metabase-server .
|
|
|
|
# Run
|
|
docker run -p 3000:3000 \
|
|
-e METABASE_URL=http://metabase:3000 \
|
|
-e METABASE_API_KEY=mb_xxxxx \
|
|
mcp-metabase-server
|
|
```
|
|
|
|
## Uso con Claude Code
|
|
|
|
```bash
|
|
claude mcp add --transport http nucleodocs-metabase https://metabase.tudominio.com/mcp
|
|
```
|
|
|
|
## Ejemplos de Uso
|
|
|
|
### Listar cards (modo ligero - default)
|
|
|
|
```typescript
|
|
{
|
|
"action": "list",
|
|
"pageSize": 20 // Máximo 100
|
|
}
|
|
// Respuesta: ~600 bytes por 20 cards (solo campos esenciales)
|
|
```
|
|
|
|
### Listar cards (modo verbose - completo)
|
|
|
|
```typescript
|
|
{
|
|
"action": "list",
|
|
"pageSize": 20,
|
|
"verbose": true // Incluye creator, dataset_query, parameters, etc.
|
|
}
|
|
// Respuesta: ~240 KB por 20 cards (todos los campos)
|
|
```
|
|
|
|
### Buscar cards por nombre
|
|
|
|
```typescript
|
|
{
|
|
"action": "search",
|
|
"query": "ventas"
|
|
}
|
|
```
|
|
|
|
### Paginación
|
|
|
|
```typescript
|
|
{
|
|
"action": "list",
|
|
"page": 2,
|
|
"pageSize": 50
|
|
}
|
|
// Devuelve página 2 con 50 cards
|
|
```
|
|
|
|
### Ejecutar card con parámetros
|
|
|
|
```typescript
|
|
{
|
|
"card_id": 123,
|
|
"parameters": [
|
|
{
|
|
"type": "date/single",
|
|
"target": ["variable", ["template-tag", "fecha_desde"]],
|
|
"value": "2025-01-01"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Crear nueva card con SQL nativa
|
|
|
|
```typescript
|
|
{
|
|
"name": "Reporte de Ventas",
|
|
"description": "Ventas del último mes",
|
|
"dataset_query": {
|
|
"type": "native",
|
|
"database": 2,
|
|
"native": {
|
|
"query": "SELECT * FROM ventas WHERE fecha >= {{fecha_desde}}",
|
|
"template_tags": {
|
|
"fecha_desde": {
|
|
"type": "date",
|
|
"name": "fecha_desde",
|
|
"display_name": "Fecha Desde"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"display": "table",
|
|
"collection_id": 5
|
|
}
|
|
```
|
|
|
|
## API Metabase
|
|
|
|
Documentación: https://www.metabase.com/docs/latest/api
|
|
|
|
Endpoints implementados:
|
|
- `GET /api/card` - Listar cards
|
|
- `GET /api/card/:id` - Obtener card
|
|
- `POST /api/card/:id/query` - Ejecutar card
|
|
- `POST /api/card` - Crear card
|
|
- `PUT /api/card/:id` - Actualizar card
|
|
- `GET /api/collection` - Listar colecciones
|
|
- `GET /api/database` - Listar bases de datos
|
|
- `GET /api/database/:id/metadata` - Metadata de BD
|
|
- `GET /api/dashboard` - Listar dashboards
|
|
- `GET /api/dashboard/:id` - Obtener dashboard
|
|
|
|
## Licencia
|
|
|
|
MIT
|