/ Directorio / Playground / SQLite
● Oficial modelcontextprotocol ⚡ Instantáneo

SQLite

por modelcontextprotocol · modelcontextprotocol/servers

Consulta un archivo SQLite local. Perfecto para proyectos personales, volcados de datos exportados o análisis en un archivo de diario/registro/base de datos.

El MCP de referencia para SQLite. Apunta a un único archivo SQLite y expone introspección de esquema, consultas de lectura y consultas de escritura (configurables). Cero configuración, sin servidor, sin red — y a diferencia del MCP de Postgres, también puede escribir si lo permites.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

sqlite.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "sqlite",
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "sqlite": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-server-sqlite",
          "--db-path",
          "/data/sample.db"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add sqlite -- uvx mcp-server-sqlite --db-path /data/sample.db

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: SQLite

Analiza un volcado de CSV/JSON cargándolo en SQLite

👤 Analistas, ingenieros explorando datos exportados ⏱ ~15 min beginner

Cuándo usarlo: Alguien te envió un CSV con 200 mil filas y la pregunta 'qué segmento convierte mejor?' — demasiado grande para hojas de cálculo, demasiado pequeño para una base de datos real.

Requisitos previos
  • Archivo de origen en disco — Guárdalo como .csv o .json en una carpeta de trabajo
  • Una ruta de archivo SQLite vacío — Elige una ubicación como /tmp/analysis.db; el MCP la creará
Flujo
  1. Crea la tabla y carga
    Crea una tabla signups en /tmp/analysis.db que coincida con las columnas de /data/signups.csv. Carga todas las filas. Dime el número de filas.✓ Copiado
    → Tabla creada, número de filas coincide con el archivo
  2. Explora el esquema
    ¿Qué columnas existen? Para cada una, ¿cuál es la distribución de valores (5 valores distintos principales para categóricas; mín/máx/prom para numéricas)?✓ Copiado
    → Perfil por columna
  3. Responde la pregunta real
    Agrupa por signup_source. Para cada una, calcula: total de registros, tasa de conversión (registros con completed_onboarding=true / total). Ordena por tasa de conversión.✓ Copiado
    → Tabla de calidad de decisión con la SQL mostrada

Resultado: Respuestas defensibles en 5 minutos, con un archivo .db que puedes consultar nuevamente cuando surjan nuevas preguntas.

Errores comunes
  • Columnas CSV con tipo automático incorrecto (números como TEXT) — Después de cargar, ejecuta PRAGMA table_info(signups) y CAST o recrea las columnas con tipos explícitos si es necesario
  • Las cadenas de fecha no se ordenan/comparan correctamente como TEXT — Almacena fechas como ISO 8601 (YYYY-MM-DDTHH:MM:SSZ) para que lexicográfico = cronológico; o usa julianday() para cálculos
Combinar con: filesystem · antv-chart

Inspecciona y edita la base de datos SQLite de una aplicación personal

👤 Desarrolladores creando herramientas CLI, aplicaciones de diario o software local-first ⏱ ~10 min beginner

Cuándo usarlo: Estás creando una aplicación local-first, quieres ver qué hay en la base de datos sin escribir una CLI para ella.

Flujo
  1. Inspecciona el esquema
    Lista todas las tablas en /Users/me/Library/Application Support/MyApp/data.db. Para cada una, muestra el esquema y el número de filas.✓ Copiado
    → Inventario de la base de datos de la aplicación en vivo
  2. Investiga una fila
    Encuentra el registro del usuario donde email = '[email protected]'. Muestra la fila y todas las filas relacionadas en otras tablas (órdenes, sesiones).✓ Copiado
    → Imagen completa de los datos de un usuario
  3. Corrige datos incorrectos
    Hay una orden atascada en estado 'pending' para ese usuario desde hace 2 días. Actualízala a 'cancelled'. Muestra la SQL antes de ejecutar.✓ Copiado
    → Vista previa de SQL antes de la mutación, luego fila actualizada

Resultado: Depuración de la aplicación sin escribir scripts SQL desechables.

Errores comunes
  • La aplicación puede tener la base de datos bloqueada abierta en modo WAL — Si obtienes 'database is locked', detén la aplicación o consulta la instantánea de solo lectura fusionada con WAL mediante ?mode=ro&immutable=1
Combinar con: filesystem

Construye accesorios de prueba deterministas a partir de una muestra de datos de producción

👤 Ingenieros escribiendo pruebas de integración ⏱ ~25 min intermediate

Cuándo usarlo: Quieres datos de prueba repetibles que se parezcan a producción pero que sean pequeños y seguros.

Flujo
  1. Muestrea filas anonimizadas
    De /prod-export/orders.db, toma una muestra de 100 filas de orders cubriendo cada estado. Anonimiza nombres y correos electrónicos.✓ Copiado
    → Muestra con información personal identificable anonimizada
  2. Guarda como archivo de accesorio
    Escribe las filas muestreadas en /test/fixtures/orders.db como un archivo SQLite nuevo. Incluye el esquema.✓ Copiado
    → Archivo de accesorio nuevo creado
  3. Verifica contra tu cargador de pruebas
    Ejecuta mi suite de pruebas (npm test) — ¿recoge el accesorio nuevo? Si no, ¿cuál es la primera prueba que falla?✓ Copiado
    → Pruebas ejecutadas; fallos localizados

Resultado: Accesorios realistas que no se desvinculan de las formas de datos reales.

Errores comunes
  • Anonimización que rompe la integridad referencial — Anonimiza claves de unión consistentemente (mismo hash) en todas las tablas; nunca aleatorices por fila
Combinar con: filesystem · github

Analiza un archivo de registro/evento respaldado por SQLite

👤 Ingenieros depurando herramientas CLI o aplicaciones que registran en SQLite ⏱ ~10 min beginner

Cuándo usarlo: Muchas herramientas modernas (homebrew, algunos navegadores, cachés de aplicaciones) almacenan estado en SQLite. Quieres consultarlas.

Flujo
  1. Confirma que es el archivo correcto
    Abre ~/Library/Application Support/SomeApp/cache.db. Lista las tablas y una muestra de filas recientes.✓ Copiado
    → El esquema reconocible confirma que tienes el archivo correcto
  2. Encuentra la respuesta
    ¿Cuántas entradas mantiene la caché por dominio de origen? Las 20 principales.✓ Copiado
    → Resultado de la agregación
  3. Opcionalmente limpia
    Elimina entradas de dominios que no han sido accedidos en 90 días. Muestra el conteo primero, pregunta antes de eliminar.✓ Copiado
    → Vista previa, confirmación, luego elimina

Resultado: Respuestas sobre el comportamiento de la aplicación sin necesidad de un comando 'stats' integrado.

Errores comunes
  • Modificar la base de datos en vivo de una aplicación mientras se ejecuta puede dañarla — Siempre cierra la aplicación primero, o trabaja en una copia del archivo .db
Combinar con: filesystem

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

sqlite + filesystem

Lee un CSV desde disco y cárgalo en SQLite para análisis

Lee /data/orders.csv con MCP de filesystem, infiere tipos y carga en /tmp/analysis.db como tabla orders a través de MCP de sqlite.✓ Copiado
sqlite + antv-chart

Consulta una base de datos SQLite y grafica los resultados

De /tmp/analysis.db, obtén los registros mensuales para 2026. Renderiza como un gráfico de barras mediante antv-chart.✓ Copiado
sqlite + github

Analiza datos, escribe hallazgos en un GitHub Issue

Ejecuta mi análisis de deserción en /tmp/users.db. Crea un GitHub Issue en acme/analytics resumiendo los 3 hallazgos principales con el apéndice SQL.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
list_tables (ninguno) Primer paso en cualquier sesión gratuito
describe_table table_name: str Inspecciona el esquema de una única tabla gratuito
read_query query: str (SELECT only) Ejecuta un SELECT — seguro por defecto gratuito
write_query query: str (INSERT/UPDATE/DELETE) Mutar datos — controlado; requiere consentimiento explícito en la mayoría de clientes gratuito
create_table query: str (CREATE TABLE ...) DDL — crea o altera el esquema gratuito
append_insight insight: str Agrega un hallazgo al memo de sesión (usado por algunos clientes para construir un informe) gratuito

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Ilimitado — local
Tokens por llamada
Consultas de esquema: pequeño. Los conjuntos de resultados se escalan con el número de filas — siempre LIMIT para consultas exploratorias
Monetario
Gratuito
Consejo
Agrega LIMIT 100 a cada consulta exploratoria y solo elimínalo cuando sepas qué obtendrás.

Seguridad

Permisos, secretos, alcance

Almacenamiento de credenciales: Sin credenciales. El archivo de base de datos es cualquier ruta con la que se inicia mediante --db-path.
Salida de datos: Ninguno del servidor. Los resultados de consulta se envían a tu proveedor LLM como contexto.
No conceder nunca: nunca apuntes a un archivo que contenga datos sensibles a menos que tengas la intención de que el modelo lo vea

Resolución de problemas

Errores comunes y soluciones

database is locked

Otro proceso (a menudo la aplicación propietaria de la base de datos) mantiene el bloqueo. Cierra ese proceso o copia el archivo .db y consulta la copia.

Verificar: lsof <db file>
no such table: X

Archivo de base de datos incorrecto o esquema no como piensas. Ejecuta list_tables para ver qué hay realmente. Verifica el argumento de inicio --db-path en la configuración de tu cliente MCP.

datatype mismatch / unexpected NULL

SQLite es de tipo dinámico — una columna declarada INTEGER puede contener TEXT. Usa CAST(col AS INTEGER) defensivamente, o corrige al cargar.

Disk image is malformed

Base de datos dañada, a menudo por matar un proceso durante una escritura. Intenta sqlite3 file.db .recover > out.sql y reconstruye desde el volcado.

Alternativas

SQLite vs otros

AlternativaCuándo usarlaContrapartida
Postgres MCPAcceso concurrente multi-usuario, base de datos en red, o ya estás en PostgresRequiere un servidor; Postgres MCP es de solo lectura por diseño
DuckDB (via shell)El mismo modelo de un archivo pero para análisis con forma OLAP con escaneos mucho más rápidosSin MCP de primera parte aún; columnar por lo que tiene características de rendimiento diferentes
dbHubNecesitas un MCP para SQLite + Postgres + MySQL + otrosMás nuevo; menos probado en batalla

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills