Ir al contenido

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.

Ventana de terminal
pip install dataspoc-lens[mcp]
Ventana de terminal
dataspoc-lens mcp

El servidor se ejecuta en transporte stdio, disenado para ser iniciado por un cliente MCP (como 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.

HerramientaDescripcion
list_tablesLista todas las tablas disponibles en el data lake
describe_tableMuestra el esquema (columnas y tipos) de una tabla
queryEjecuta una consulta SQL de solo lectura (operaciones de escritura son rechazadas)
askTraduce una pregunta en lenguaje natural a SQL y la ejecuta
cache_statusMuestra el estado de todas las tablas cacheadas localmente
cache_refreshFuerza la actualizacion del cache local para una tabla especifica
cache_refresh_staleActualiza todas las tablas con cache desactualizado

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.

URIDescripcion
lens://tablesCatalogo 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}).

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, orders y products.

Tu: Cuantos pedidos se realizaron el mes pasado?

Claude (llama a query con 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:

nameavg_order_valuelast_orderdays_inactive
Alice Smith$245.002026-01-1095
Bob Johnson$198.502025-12-28108

Tu: Cachea la tabla orders para trabajar offline.

Claude (llama a cache_refresh): Listo. Se cacheo orders: 4 archivos, 12.3 MB. El cache ahora esta fresco.

  • 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