db_schema_save
Save a snapshot of database schema structure including tables, columns, types, and relationships for persistent reference and version tracking.
Instructions
Guarda una instantánea del esquema de una base de datos.
schema debe ser un objeto JSON con la estructura que quieras persistir
(por ejemplo tablas con columnas, tipos, nullability, PK/FK e índices).
Args: workspace_id: Identificador del proyecto o carpeta (p. ej. nombre del repo). connection_name: Nombre lógico de la BD (p. ej. local, staging, prod). schema: Objeto o texto JSON con el esquema. dialect: Opcional: postgresql, mysql, sqlite, etc. label: Etiqueta opcional (p. ej. versión de migración). summary: Nota corta opcional.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| connection_name | Yes | ||
| schema | Yes | ||
| dialect | No | ||
| label | No | ||
| summary | No |
Implementation Reference
- schema_engram_mcp/server.py:33-65 (handler)The db_schema_save tool is registered and implemented as a decorated function in server.py, which calls storage.save_snapshot to persist the schema data.
@mcp.tool() def db_schema_save( workspace_id: str, connection_name: str, schema: Any, dialect: str | None = None, label: str | None = None, summary: str | None = None, ) -> str: """ Guarda una instantánea del esquema de una base de datos. `schema` debe ser un objeto JSON con la estructura que quieras persistir (por ejemplo tablas con columnas, tipos, nullability, PK/FK e índices). Args: workspace_id: Identificador del proyecto o carpeta (p. ej. nombre del repo). connection_name: Nombre lógico de la BD (p. ej. local, staging, prod). schema: Objeto o texto JSON con el esquema. dialect: Opcional: postgresql, mysql, sqlite, etc. label: Etiqueta opcional (p. ej. versión de migración). summary: Nota corta opcional. """ sid = storage.save_snapshot( _get_conn(), workspace_id=workspace_id.strip(), connection_name=connection_name.strip(), schema=schema, dialect=dialect.strip() if dialect else None, label=label.strip() if label else None, summary=summary.strip() if summary else None, ) return json.dumps({"snapshot_id": sid, "ok": True}, ensure_ascii=False)