MCP Server
DataSpoc Lens incluye un MCP (Model Context Protocol) server que permite a los agentes de IA interactuar con tu data lake de forma programatica. Los agentes pueden descubrir tablas, ejecutar consultas, hacer preguntas en lenguaje natural y gestionar el cache.
Instalar
Sección titulada «Instalar»pip install dataspoc-lens[mcp]Iniciar el servidor
Sección titulada «Iniciar el servidor»dataspoc-lens mcpEl servidor se ejecuta en transporte stdio, disenado para ser iniciado por un cliente MCP (como Claude Desktop).
Configuracion de Claude Desktop
Sección titulada «Configuracion de Claude Desktop»Agrega Lens a tu archivo de configuracion MCP de Claude Desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{ "mcpServers": { "dataspoc-lens": { "command": "dataspoc-lens", "args": ["mcp"] } }}Reinicia Claude Desktop despues de guardar. Las tablas de Lens estaran disponibles para Claude como herramientas MCP.
Herramientas disponibles
Sección titulada «Herramientas disponibles»| Herramienta | Descripcion |
|---|---|
list_tables | Lista todas las tablas disponibles en el data lake |
describe_table | Muestra el esquema (columnas y tipos) de una tabla |
query | Ejecuta una consulta SQL de solo lectura (operaciones de escritura son rechazadas) |
ask | Traduce una pregunta en lenguaje natural a SQL y la ejecuta |
cache_status | Muestra el estado de todas las tablas cacheadas localmente |
cache_refresh | Fuerza la actualizacion del cache local para una tabla especifica |
cache_refresh_stale | Actualiza todas las tablas con cache desactualizado |
Detalles de las herramientas
Sección titulada «Detalles de las herramientas»list_tables Retorna un nombre de tabla por linea. Sin parametros.
describe_table
Parametros: table (string) — nombre de la tabla.
Retorna array JSON de objetos {"column_name": ..., "data_type": ...}.
query
Parametros: sql (string) — consulta SQL a ejecutar. Debe ser de solo lectura (SELECT, SHOW, etc.).
Retorna JSON con columns, rows, row_count y duration.
Las operaciones de escritura (DROP, DELETE, INSERT, UPDATE, ALTER, TRUNCATE, CREATE, REPLACE) son rechazadas.
ask
Parametros: question (string) — pregunta en lenguaje natural sobre los datos.
Retorna JSON con sql, columns, rows, duration y error.
cache_status
Retorna array JSON de objetos {"table", "status", "cached_at", "size_bytes"}.
cache_refresh
Parametros: table (string) — nombre de la tabla a actualizar.
Retorna JSON con cached_at, size_bytes y file_count.
cache_refresh_stale
Actualiza todas las tablas donde status es stale. Retorna array JSON de tablas actualizadas.
Recurso
Sección titulada «Recurso»| URI | Descripcion |
|---|---|
lens://tables | Catalogo completo de todas las tablas con sus esquemas de columnas |
El recurso lens://tables retorna un array JSON donde cada elemento contiene un nombre de table y sus columns (array de {column_name, data_type}).
Ejemplo de conversacion con agente
Sección titulada «Ejemplo de conversacion con agente»Una vez configurado en Claude Desktop, puedes interactuar con tu data lake de forma natural:
Tu: Que tablas tengo en mi data lake?
Claude (llama a
list_tables): Tienes 3 tablas:customers,ordersyproducts.
Tu: Cuantos pedidos se realizaron el mes pasado?
Claude (llama a
querycon SQL): Se realizaron 4,230 pedidos el mes pasado, con un ingreso total de $362,400.
Tu: Que clientes tienen el valor promedio de pedido mas alto pero no han comprado en 90 dias?
Claude (llama a
ask): Estos son los principales clientes inactivos de alto valor:
name avg_order_value last_order days_inactive Alice Smith $245.00 2026-01-10 95 Bob Johnson $198.50 2025-12-28 108
Tu: Cachea la tabla orders para trabajar offline.
Claude (llama a
cache_refresh): Listo. Se cacheoorders: 4 archivos, 12.3 MB. El cache ahora esta fresco.
Seguridad
Sección titulada «Seguridad»- El MCP server se ejecuta con los mismos permisos que el usuario que lo inicio
- Todo el control de acceso es manejado por IAM de la nube — el servidor solo puede acceder a buckets que el usuario tiene permiso para leer
- Las operaciones de escritura estan explicitamente bloqueadas a nivel de consulta
- No se implementa autenticacion en el servidor mismo