SQLite

Servidor MCP para archivos SQLite. ¡Compatible con metadatos de Datasette!

Documentación

mcp-sqlite

Proporciona datos útiles a los agentes de IA sin darles acceso a sistemas externos. ¡Compatible con Datasette para usuarios humanos!

Características

  • Los agentes de IA pueden obtener la estructura de todas las tablas y columnas de la base de datos SQLite en un solo comando - sqlite_get_catalog.
    • El catálogo se puede enriquecer con descripciones de las tablas y columnas usando un archivo de metadatos YAML o JSON simple.
  • El mismo archivo de metadatos puede contener consultas predefinidas para que la IA las use. Cada consulta predefinida se convertirá en una herramienta MCP separada sqlite_execute_main_{tool name}.
  • Los agentes de IA pueden ejecutar consultas SQL arbitrarias con sqlite_execute.

Inicio rápido con Visual Studio Code

  1. Instala uv.

  2. Instala Visual Studio Code si aún no lo tienes. Activa GitHub Copilot.

  3. Abre este repositorio en VS Code. Abre un chat en modo agente de GitHub Copilot. Revisa las herramientas disponibles: deberías ver MCP Server: sqlite_sample con tres herramientas disponibles.

  4. Deberías poder preguntarle a Copilot en modo agente algo como "Obtén los sobrevivientes del Titanic de 28 años" y obtener una respuesta.

  5. Usa el archivo de configuración MCP de ejemplo mcp.json y el archivo de metadatos de ejemplo titanic.yml como punto de partida para tu propia configuración.

Exploración interactiva con MCP Inspector y Datasette

Los mismos archivos de base de datos y metadatos se pueden usar para explorar los datos de forma interactiva con MCP Inspector y Datasette.

MCP InspectorDatasette

MCP Inspector

Usa el panel de MCP Inspector para interactuar con la base de datos SQLite de la misma manera que lo haría un agente de IA:

  1. Instala npm.
  2. Ejecuta:
    npx @modelcontextprotocol/inspector uvx mcp-sqlite sample/titanic.db --metadata sample/titanic.yml
    

Datasette

Dado que los metadatos de mcp-sqlite son compatibles con el archivo de metadatos de Datasette, también puedes explorar tus datos con Datasette:

uvx datasette serve sample/titanic.db --metadata sample/titanic.yml

¡La compatibilidad con Datasette permite que tanto los agentes de IA como los humanos exploren fácilmente los mismos datos locales!

Herramientas MCP proporcionadas por mcp-sqlite

  • sqlite_get_catalog(): Herramienta que el agente puede llamar para obtener el catálogo completo de las bases de datos, tablas y columnas de los datos, combinado con los metadatos del archivo de metadatos. En una iteración anterior de mcp-sqlite, esto era un recurso en lugar de una herramienta, pero los recursos no están tan ampliamente soportados, así que se convirtió en una herramienta. Si tienes un caso de uso para el catálogo como recurso, abre un issue y lo traeremos de vuelta.
  • sqlite_execute(sql): Herramienta que el agente puede llamar para ejecutar SQL arbitrario. Los resultados de la tabla se devuelven como HTML. Para más información sobre por qué HTML es el mejor formato para que los LLM lo procesen, consulta Siu et al.
  • {canned query name}({canned query args}): Se crea una herramienta para cada consulta predefinida en los metadatos, permitiendo al agente ejecutar consultas predefinidas sin escribir SQL.

Uso

Opciones de línea de comandos

usage: mcp-sqlite [-h] [-m METADATA] [-p PREFIX] [-v] sqlite_file

CLI command to start an MCP server for interacting with SQLite data.

positional arguments:
  sqlite_file           Path to SQLite file to serve the MCP server for.

options:
  -h, --help            show this help message and exit
  -m, --metadata METADATA
                        Path to Datasette-compatible metadata YAML or JSON file.
  -p, --prefix PREFIX   Prefix for MCP tools. Defaults to no prefix.
  -v, --verbose         Be verbose. Include once for INFO output, twice for DEBUG output.

Metadatos

Tablas ocultas

Ocultar una tabla con hidden: true la ocultará del catálogo devuelto por la herramienta MCP sqlite_get_catalog(). Sin embargo, ten en cuenta que la tabla seguirá siendo accesible para el agente de IA. ¡Nunca confíes en ocultar una tabla del catálogo como característica de seguridad!

Consultas predefinidas

Consultas predefinidas se convierten cada una en una herramienta MCP invocable separada por mcp-sqlite.

Por ejemplo, una consulta llamada my_canned_query se convertirá en una herramienta my_canned_query.

La funcionalidad de consultas predefinidas sigue en desarrollo activo con más características planeadas para desarrollo pronto:

Hoja de ruta

Característica de consulta de Datasette¿Compatible con mcp-sqlite?
Mostrado en el catálogo✅
Ejecutable✅
Títulos✅
Descripciones✅
Parámetros✅
Parámetros explícitos❌ (planeado)
Ocultar SQL✅
Restricciones de escritura en consultas predefinidas✅
Paginación❌ (planeado)
Consultas entre bases de datos❌ (planeado)
Fragmentos❌ (no planeado)
Parámetros mágicos❌ (no planeado)