Know exactly what changed in your data catalog, when it changed, and how severe the impact is — from the CLI or directly inside Claude.
No heavy dependencies. No openmetadata-ingestion. Just pip install and go.
Run the official Docker Compose stack locally. Takes about 60 seconds to be ready.
curl -sL https://bit.ly/3VIBsRL -o docker-compose.yml docker compose up -d
Open Settings → Bots → Ingestion Bot in the OM UI. Copy the JWT token.
export OPENMETADATA_HOST=\ http://localhost:8585/api export OPENMETADATA_JWT_TOKEN=\ <your-jwt-token>
Install the package, then diff any entity by its fully qualified name.
pip install "ometa-diff[mcp]" ometa-diff diff table \ my_service.db.schema.payments
Three commands cover every observability need — entity diff, time-window changelog, and service-wide summary.
Compare the two most recent versions of any metadata entity. Shows every field-level change with severity.
ometa-diff diff table my_service.prod_db.public.payments
Field-by-field breakdown
| Severity | Field | Change | Old Value | New Value |
|---|---|---|---|---|
| ★ MAJOR | columns.payment_method | REMOVED | VARCHAR — Payment method used | — |
| ● MINOR | owner | MODIFIED | data_team | payments_team |
Severity rules: MAJOR = column removed / dataType changed / owner removed · MINOR = description / tag / owner changed · PATCH = cosmetic fields
Aggregate all changes across a service, user, or entity type over a configurable time window.
ometa-diff changelog --service my_service --since 7d
ometa-diff changelog \ --user alice --since 30d
ometa-diff changelog \ --type table --since 7d
Every command supports --format json and --format markdown for programmatic use and CI pipelines.
ometa-diff diff table my_service.prod_db.public.payments --format json
{
"entity_type": "table",
"entity_fqn": "my_service.prod_db.public.payments",
"from_version": "0.2",
"to_version": "0.3",
"updated_by": "bob",
"is_major": true,
"summary": "2 changes: 1 major, 1 minor",
"changes": [
{
"field_path": "columns.payment_method",
"change_type": "removed",
"severity": "major",
"old_value": { "name": "payment_method", "dataType": "VARCHAR" },
"new_value": null
},
{
"field_path": "owner",
"change_type": "modified",
"severity": "minor",
"old_value": "data_team",
"new_value": "payments_team"
}
]
}
ometa-diff ships as a Model Context Protocol server — drop it into any MCP-compatible client and your AI assistant gains live metadata diff intelligence.
Claude Desktop config
{
"mcpServers": {
"ometa-diff": {
"command": "uvx",
"args": ["--from", "ometa-diff[mcp]", "ometa-diff", "serve"],
"env": {
"OPENMETADATA_HOST": "http://localhost:8585/api",
"OPENMETADATA_JWT_TOKEN": "<your-jwt-token>"
}
}
}
}
Three tools exposed to the LLM
Field-by-field diff between two versions of any entity. Triggered by: "What changed in the payments table?"
Aggregate changes across a service, user, or entity type. Triggered by: "What did alice change this week?"
Catalog-wide activity stats — total changes, severity breakdown, top changers. Covers tables, dashboards, pipelines, topics.
OpenMetadata already stores every version of every entity. ometa-diff makes that history actionable.
Uses httpx directly — no openmetadata-ingestion, no JVM, no Spark.
Automatically classifies every change as MAJOR, MINOR, or PATCH so you know what actually matters.
Works with Claude Desktop, Cursor, VS Code + Copilot, Windsurf, Zed — any client that speaks MCP.
One command, three interfaces: CLI, Python library, and MCP server — all from the same package.