OpenMetadata

Open-source metadata platform that unifies data catalog, lineage, quality, and governance into a single searchable graph, with an MCP server that gives AI agents governed access to that context.

15.2Kstars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
93/100Excellent
Development Activity100
Maintenance100
Community76
Maturity56
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
85/100Excellent
Architecture82
Code Quality88
Innovation85
Learning Curve85

OpenMetadata is an open-source metadata platform that connects technical metadata, lineage, data quality signals, ownership, usage, glossaries, classifications, and data contracts into a single searchable knowledge graph. Rather than treating cataloging, lineage, quality, and governance as separate tools, it models them as one connected schema so a table, its column-level lineage, its owning team, its glossary terms, and its test results all live behind one entity.

The platform ships with 130+ connectors covering warehouses, lakes, BI tools, pipelines, ML platforms, messaging systems, and storage services, ingested through a Python framework that posts normalized metadata to the same REST API humans and UIs use. Every entity is generated from one of 904 JSON Schemas that act as the source of truth across the Java backend, Python ingestion client, and TypeScript frontend, so the three languages never drift from a shared model by accident.

OpenMetadata also ships an MCP server, exposing semantic search, lineage traversal, glossary and classification lookups, and metadata mutations as tools any MCP-compatible LLM or agent can call, plus a separate AI SDK for wiring that context into LangChain or OpenAI function-calling workflows. A newer ‘memory’ primitive lets teams attach conversations, decisions, and remediation notes directly to data assets so that tribal knowledge survives outside of chat threads.

The project is Apache-2.0 licensed with no license-gated features in the self-hosted build; Collate, a separate company, offers a managed cloud version with additional AI automation on top of the same open-source core.

What You Get

  • Unified metadata graph - tables, dashboards, pipelines, topics, ML models, glossary terms, policies, data contracts, and now memory nuggets, all connected as one entity graph instead of siloed tools.
  • 130+ connectors - a Python ingestion framework with ready-made sources for warehouses, lakes, BI tools, pipelines, messaging systems, and ML platforms, plus APIs and SDKs for custom sources.
  • Column-level lineage and impact analysis - upstream/downstream lineage across tables, dashboards, pipelines, and ML models, including OpenLineage event ingestion.
  • Data quality and observability - configurable test suites, profiling, freshness/volume/null/uniqueness checks, and incident workflows with root-cause context.
  • MCP server and AI SDK - exposes search, lineage, glossary, and mutation tools to MCP-compatible agents, and a separate SDK for LangChain/OpenAI function-calling integrations.
  • Schema-first typing - 904 JSON Schemas generate the Java, Python, and TypeScript models, keeping backend, ingestion, and UI in sync by construction.
  • Governance and access control - roles, policies, classifications, SSO, bot/user tokens, and certification workflows for who can see or change what.

Common Use Cases

  • Data discovery - engineers and analysts search across every connected system by name, owner, or business meaning instead of asking in Slack.
  • Impact analysis before a migration - trace which dashboards, pipelines, and ML models break if a specific table or column changes.
  • Data quality monitoring - define tests once, track freshness/volume/uniqueness over time, and route failures into incident workflows.
  • Governance and compliance - classify sensitive columns, enforce ownership and certification policies, and manage data contracts across teams.
  • Grounding AI agents in trusted context - connect a coding agent or chat assistant to OpenMetadata’s MCP server so it reasons over real schemas, lineage, and glossary terms instead of guessing.

Under The Hood

Architecture OpenMetadata is one Java backend (openmetadata-service, built on Dropwizard/JAX-RS via Jersey) fronting a MySQL/Postgres catalog and an Elasticsearch/OpenSearch index, paired with a React SPA (openmetadata-ui) and a separate Python ingestion framework (ingestion/) that writes back through the same REST API rather than touching the database directly. A request flows from a JAX-RS resource in service/resources/** into a JDBI3 repository (service/jdbi3/**, extending EntityRepository) and its DAO layer, with search indexing and change events fanned out asynchronously afterward. The twelve Maven modules form an acyclic, downward-only dependency graph with zero cycles measured across module boundaries, and every entity is typed from 904 JSON Schemas in openmetadata-spec that generate the Java, Python, and TypeScript models used by each layer. Inside the service module itself, the documented resources -> jdbi3 -> DAO layering is not actually acyclic — the project’s own architecture notes measure a mutual resources <-> jdbi3 cycle and 18 of 21 package pairs as cyclic, an honest, self-documented departure from the intended flow that would make tracing a bug through that layer nontrivial for a newcomer.

Tech Stack The backend runs on Dropwizard 5.0 with Jersey 3.1 for JAX-RS, JDBI3 3.37 for SQL access against MySQL or Postgres, and a shaded dependency module that lets both Elasticsearch 7.17 and OpenSearch 2.6 clients coexist behind es.*/os.* namespaces. The ingestion side is a standalone Python package (openmetadata-ingestion) with per-source connector modules following a ServiceSpec plugin contract, loaded dynamically at runtime by a DefaultSourceLoader. The frontend is a React 18 SPA using Ant Design 4.24, React Router 7, TanStack Query 5, TypeScript, and a Vite (rolldown) build, alongside a separate openmetadata-ui-core-components package that is meant to replace Ant Design incrementally. An MCP server module (openmetadata-mcp) and a Kubernetes operator module round out the deployable surface, with all modules assembled by openmetadata-dist.

Code Quality Testing is extensive and present at every layer: roughly 919 Java test files, 1,157 Python test files, and 1,551 TypeScript test files, backed by a CI matrix that runs backend integration tests against MySQL+Elasticsearch, Postgres+Elasticsearch+Redis, and Postgres+OpenSearch combinations separately, plus dedicated Java Checkstyle, CodeQL, and Sonar workflows. Formatting and linting are enforced through pre-commit hooks (Ruff for Python, google-style Java formatting, Prettier for the frontend). The project also publishes an unusually candid internal architecture audit that names its own layering violations with measured counts rather than hiding them, which is a stronger quality signal than a README claiming clean architecture without evidence. The migration system is documented as append-only but not enforced by CI or a runtime checksum check, which the maintainers flag themselves as a real risk for silent schema drift.

What Makes It Unique Most open-source data catalogs stop at cataloging and lineage; OpenMetadata’s schema-first design generates working models in three different languages from one set of 904 JSON Schemas, so the Java backend, Python ingestion client, and TypeScript frontend cannot silently drift from each other without a regeneration step catching it. Layering an MCP server and a separate AI SDK directly on top of that same governed graph — rather than bolting on a generic database connector for LLMs — lets an agent call semantic search, lineage traversal, and metadata mutation as typed tools instead of writing raw SQL against a warehouse it cannot verify. The newer ‘memory’ primitive, which lets conversations, decisions, and remediation notes attach to any entity in the graph, is a comparatively unusual attempt to make tribal knowledge a first-class, queryable part of the catalog rather than something that lives only in chat history.

Self-Hosting

Licensing Model Apache License 2.0 — every feature in this repository is available in a self-hosted deployment with no license key or gated module. There is no ee/, enterprise/, or pro/ directory, and no license-check code was found anywhere in the Java, Python, or TypeScript sources.

Self-Hosting Restrictions None found — the full catalog, lineage, quality, governance, and MCP server ship in the open-source build.

Cloud vs Self-Hosted Collate (getcollate.io), the company behind OpenMetadata, sells a separate managed cloud product with additional AI automation (‘Collate AI’, ‘AI Studio’) and managed operations layered on top of the same open-source core, plus commercial support. The README documents this as a distinct product rather than a gated tier of this repository.

License Key Required No — the self-hosted server runs fully featured without any license key.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search