db_schema_update
Update an existing database schema snapshot by modifying its JSON structure, metadata, or renaming identifiers while maintaining data integrity.
Instructions
Actualiza una instantánea existente. Debes indicar el mismo workspace_id y
connection_name que tenía el registro (sirven como comprobación).
Los argumentos opcionales con valor por defecto en el cliente no aplican cambios
salvo que los envíes: schema sustituye el JSON completo; dialect, label
y summary solo se escriben si los pasas (cadena vacía → NULL en BD).
new_workspace_id / new_connection_name renombran la instantánea si se indican.
Con bump_captured_at=true (por defecto) se actualiza la fecha de la fila.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| snapshot_id | Yes | ||
| workspace_id | Yes | ||
| connection_name | Yes | ||
| schema | No | ||
| dialect | No | ||
| label | No | ||
| summary | No | ||
| new_workspace_id | No | ||
| new_connection_name | No | ||
| bump_captured_at | No |
Implementation Reference
- schema_engram_mcp/server.py:114-165 (handler)The `db_schema_update` function is the handler for updating existing schema snapshots. It validates input parameters, prepares renaming parameters, calls the `storage.update_snapshot` helper, and returns the result as a JSON string.
def db_schema_update( snapshot_id: int, workspace_id: str, connection_name: str, schema: Any | None = None, dialect: str | None = None, label: str | None = None, summary: str | None = None, new_workspace_id: str | None = None, new_connection_name: str | None = None, bump_captured_at: bool = True, ) -> str: """ Actualiza una instantánea existente. Debes indicar el mismo ``workspace_id`` y ``connection_name`` que tenía el registro (sirven como comprobación). Los argumentos opcionales con valor por defecto en el cliente no aplican cambios salvo que los envíes: ``schema`` sustituye el JSON completo; ``dialect``, ``label`` y ``summary`` solo se escriben si los pasas (cadena vacía → NULL en BD). ``new_workspace_id`` / ``new_connection_name`` renombran la instantánea si se indican. Con ``bump_captured_at=true`` (por defecto) se actualiza la fecha de la fila. """ rename_ws: str | None = None if new_workspace_id is not None: rename_ws = new_workspace_id.strip() if not rename_ws: return json.dumps({"error": "new_workspace_id no puede estar vacío"}, ensure_ascii=False) rename_cn: str | None = None if new_connection_name is not None: rename_cn = new_connection_name.strip() if not rename_cn: return json.dumps({"error": "new_connection_name no puede estar vacío"}, ensure_ascii=False) row = storage.update_snapshot( _get_conn(), snapshot_id, workspace_id=workspace_id.strip(), connection_name=connection_name.strip(), schema=schema, dialect=dialect, label=label, summary=summary, new_workspace_id=rename_ws, new_connection_name=rename_cn, bump_captured_at=bump_captured_at, ) if row is None: return json.dumps( {"error": "no encontrado o workspace/connection no coinciden"}, ensure_ascii=False, ) return json.dumps(row, ensure_ascii=False) - schema_engram_mcp/server.py:113-114 (registration)The tool is registered using the `@mcp.tool()` decorator on the `db_schema_update` function.
@mcp.tool() def db_schema_update(