Skip to main content

Documentation Index

Fetch the complete documentation index at: https://openmetadata-update-mcp-ref.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

OpenMetadata MCP Tools Reference

All OpenMetadata MCP tools, with parameters and examples.

Available Tools

ToolCategoryDescription
search_metadataDiscoveryKeyword-based search for data assets and business terms
semantic_searchDiscoveryMeaning-based search using vector embeddings
get_entity_detailsDiscoveryRetrieve full details for a specific entity by FQN
patch_entityGovernanceUpdate an existing entity using JSON Patch
create_glossaryGovernanceCreate a new glossary to organize business terms
create_glossary_termGovernanceAdd a term to an existing glossary
create_metricGovernanceCreate a new metric entity
get_entity_lineageLineageExplore upstream/downstream dependencies
create_lineageLineageCreate a lineage relationship between two entities
get_test_definitionsData QualityList available test definitions for tables or columns
create_test_caseData QualityCreate a data quality test for a table or column
root_cause_analysisData QualityPerform root cause analysis via data quality lineage

Discovery & Search Tools

search_metadata

Description: Find data assets and business terms by keyword. Use when you know specific names, owners, tags, tiers, services, or column names. Use Cases:
  • Discover tables containing specific data
  • Find dashboards related to business areas
  • Search for glossary terms
  • Locate pipelines by name or description

Parameters

ParameterTypeRequiredDescription
querystringNoKeywords to search for
entityTypestringNoFilter by entity type (see list below)
sizeintegerNoMax results to return (default: 10, max: 50)
fromintegerNoOffset for pagination (default: 0)
fieldsstringNoComma-separated additional fields to include
queryFilterstringNoAdvanced: direct OpenSearch DSL JSON query
includeDeletedbooleanNoInclude deleted entities (default: false)
includeAggregationsbooleanNoInclude aggregation/facet data (default: false)
maxAggregationBucketsintegerNoMax buckets per aggregation (default: 10, max: 50)

Entity Types

  • Service Entities: databaseService, messagingService, apiService, dashboardService, pipelineService, storageService, mlmodelService, metadataService, searchService
  • Data Asset Entities: apiCollection, apiEndpoint, table, storedProcedure, database, databaseSchema, dashboard, dashboardDataModel, pipeline, chart, topic, searchIndex, mlmodel, container
  • User Entities: user, team
  • Domain Entities: domain, dataProduct
  • Governance Entities: metric, glossary, glossaryTerm

Examples

Basic Search:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_metadata",
    "arguments": {
      "query": "sales"
    }
  }
}
Search for a Specific Entity Type:
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "search_metadata",
    "arguments": {
      "query": "customer",
      "entityType": "table",
      "size": 15
    }
  }
}
Search with Additional Fields:
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "search_metadata",
    "arguments": {
      "query": "order",
      "entityType": "table",
      "fields": "columns,queries,upstreamLineage",
      "size": 5
    }
  }
}
Sample Response:
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Found 5 results matching 'sales':\n\n**Tables:**\n1. **sales_transactions** (mysql_prod.ecommerce.public.sales_transactions)\n   - Description: Daily sales transaction records\n   - Service: mysql_prod (MySQL)\n   - Owners: sales-team, john.doe@company.com\n   - Tags: PII, Financial\n\n2. **sales_reports** (postgresql_analytics.reporting.main.sales_reports)\n   - Description: Aggregated sales reporting data\n   - Service: postgresql_analytics (PostgreSQL)\n\n**Dashboards:**\n3. **Sales Performance Dashboard** (looker_prod.sales.sales_performance)\n   - Description: Real-time sales KPI dashboard\n   - Charts: 8 charts"
      }
    ]
  }
}

Description: Find data assets by meaning using vector search (setup guide). Use for exploratory queries where you don’t know exact names. Returns conceptually related assets even when no keywords match. Use Cases:
  • Explore data when you don’t know exact table names
  • Find assets related to a concept (e.g., “customer spending behavior”)
  • Discover hidden relationships across services

Parameters

ParameterTypeRequiredDescription
querystringYesNatural language description of what you’re looking for
filtersobjectNoOptional filters: entityType, service, tags (each an array of strings)
sizeintegerNoNumber of results to return (default: 10, max: 50)
kintegerNoKNN neighbor count for tuning result quality (default: 100)
thresholdnumberNoMinimum similarity score 0.0–1.0 (default: 0.0)

Examples

Conceptual Search:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "semantic_search",
    "arguments": {
      "query": "tables tracking customer purchase history and lifetime value"
    }
  }
}
Search with Filters and Threshold:
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "semantic_search",
    "arguments": {
      "query": "revenue forecasting and financial reporting",
      "filters": {
        "entityType": ["table", "dashboard"],
        "service": ["BigQuery"]
      },
      "threshold": 0.5,
      "size": 5
    }
  }
}

get_entity_details

Description: Retrieve full details for a specific entity by fully qualified name (FQN). Pass the exact fullyQualifiedName value from search results — do not construct FQNs manually.

Parameters

ParameterTypeRequiredDescription
entityTypestringYesType of entity (e.g., table, dashboard, topic, pipeline)
fqnstringYesFully qualified name — use the exact value from search_metadata or semantic_search results

Examples

Get Table Details:
{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "get_entity_details",
    "arguments": {
      "entityType": "table",
      "fqn": "mysql_prod.ecommerce.public.customer_orders"
    }
  }
}
Get Dashboard Details:
{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "get_entity_details",
    "arguments": {
      "entityType": "dashboard",
      "fqn": "superset_prod.sales.quarterly_revenue"
    }
  }
}
Sample Response:
{
  "jsonrpc": "2.0",
  "id": 4,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "## Table: customer_orders\n\n**FQN**: mysql_prod.ecommerce.public.customer_orders\n**Service**: mysql_prod (MySQL)\n**Database**: ecommerce | **Schema**: public\n**Description**: Stores all customer order transactions\n\n**Owners**: ecommerce-team, sarah.johnson@company.com\n**Tags**: PII, Financial, Customer-Data | **Tier**: Tier1\n\n**Columns** (5):\n- order_id (BIGINT) - Primary key\n- customer_id (BIGINT) - FK to customer table\n- order_date (TIMESTAMP)\n- total_amount (DECIMAL)\n- status (VARCHAR)"
      }
    ]
  }
}

Governance Tools

patch_entity

Description: Update an existing entity’s properties using JSON Patch (RFC 6902). Use get_entity_details first to retrieve the current state before constructing a patch.

Example

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "patch_entity",
    "arguments": {
      "entityType": "table",
      "fqn": "mysql_prod.ecommerce.public.customer_orders",
      "patch": "[{\"op\":\"replace\",\"path\":\"/description\",\"value\":\"Updated description for customer orders table.\"}]"
    }
  }
}

create_glossary

Description: Create a new glossary to organize business terms. Set mutuallyExclusive: true to restrict entities to a single term from the glossary at a time.

Parameters

ParameterTypeRequiredDescription
namestringYesName of the glossary
descriptionstringYesDescription of the glossary’s purpose
mutuallyExclusivebooleanYesIf true, only one term from this glossary can tag an entity at a time
ownersarrayNoList of owner usernames or emails
reviewersarrayNoList of reviewer usernames or emails

Examples

Create a Business Glossary:
{
  "jsonrpc": "2.0",
  "id": 6,
  "method": "tools/call",
  "params": {
    "name": "create_glossary",
    "arguments": {
      "name": "Marketing Terms",
      "description": "Marketing-related terms used across campaigns, analytics, and reporting",
      "owners": ["marketing-team", "alice.smith@company.com"],
      "reviewers": ["data-governance-team"],
      "mutuallyExclusive": false
    }
  }
}
Create a Mutually Exclusive Technical Glossary:
{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "tools/call",
  "params": {
    "name": "create_glossary",
    "arguments": {
      "name": "Data Quality Metrics",
      "description": "Standardized definitions for data quality measurements and KPIs",
      "owners": ["data-quality-team"],
      "mutuallyExclusive": true
    }
  }
}
Sample Response:
{
  "jsonrpc": "2.0",
  "id": 6,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "✅ Successfully created glossary: **Marketing Terms**\n\n- Owners: marketing-team, alice.smith@company.com\n- Reviewers: data-governance-team\n- Mutually Exclusive: No\n- Status: Active"
      }
    ]
  }
}

create_glossary_term

Description: Create a new term within an existing glossary. Supports hierarchical parent–child relationships between terms.

Parameters

ParameterTypeRequiredDescription
glossarystringYesFQN of the parent glossary
namestringYesName of the term
descriptionstringYesDefinition of the term
parentTermstringNoFQN of the parent term (for nested/hierarchical terms)
ownersarrayNoList of owner usernames or emails
reviewersarrayNoList of reviewer usernames or emails

Examples

Create a Root-Level Term:
{
  "jsonrpc": "2.0",
  "id": 8,
  "method": "tools/call",
  "params": {
    "name": "create_glossary_term",
    "arguments": {
      "glossary": "marketing-terms",
      "name": "Customer Acquisition Cost",
      "description": "The total cost of acquiring a new customer, including marketing and sales expenses divided by the number of customers acquired in a specific period",
      "owners": ["marketing-team", "finance-team"]
    }
  }
}
Create a Child Term:
{
  "jsonrpc": "2.0",
  "id": 9,
  "method": "tools/call",
  "params": {
    "name": "create_glossary_term",
    "arguments": {
      "glossary": "marketing-terms",
      "parentTerm": "marketing-terms.customer-acquisition-cost",
      "name": "Organic CAC",
      "description": "Customer acquisition cost for customers acquired through organic channels (SEO, word of mouth) without paid advertising",
      "owners": ["marketing-team"]
    }
  }
}

create_metric

Description: Create a new metric entity in OpenMetadata to track and standardize business KPIs.

Parameters

ParameterTypeRequiredDescription
namestringYesName of the metric
metricExpressionLanguagestringYesExpression language used for the metric (for example, SQL)
metricExpressionCodestringYesMetric formula/expression in the selected language
metricTypestringNoMetric classification/type
granularitystringNoTime granularity such as DAILY, WEEKLY, or MONTHLY
unitOfMeasurementstringNoUnit label for the metric value
ownersarrayNoList of owner usernames or emails
reviewersarrayNoList of reviewer usernames or emails
relatedMetricsarrayNoList of related metric FQNs
tagsarrayNoList of tags to apply
domainsarrayNoList of domains to associate

Example

{
  "jsonrpc": "2.0",
  "id": 10,
  "method": "tools/call",
  "params": {
    "name": "create_metric",
    "arguments": {
      "name": "monthly_recurring_revenue",
      "metricExpressionLanguage": "SQL",
      "metricExpressionCode": "SUM(subscription_amount)",
      "metricType": "BUSINESS",
      "granularity": "MONTHLY",
      "unitOfMeasurement": "USD",
      "owners": ["finance-team"],
      "reviewers": ["data-governance-team"],
      "tags": ["Finance", "KPI"],
      "domains": ["Revenue"]
    }
  }
}

Lineage Tools

get_entity_lineage

Description: Retrieve upstream and downstream lineage for any entity to understand data dependencies and perform impact analysis. Pass the exact fullyQualifiedName from search results.

Parameters

ParameterTypeRequiredDescription
entityTypestringYesType of entity
fqnstringYesFully qualified name of the entity
upstreamDepthintegerNoHops to traverse upstream (default: 3, max: 10)
downstreamDepthintegerNoHops to traverse downstream (default: 3, max: 10)

Examples

Get Full Lineage:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_entity_lineage",
    "arguments": {
      "entityType": "table",
      "fqn": "mysql_prod.ecommerce.public.sales_transactions",
      "upstreamDepth": 3,
      "downstreamDepth": 3
    }
  }
}
Downstream Impact Analysis Only:
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_entity_lineage",
    "arguments": {
      "entityType": "table",
      "fqn": "mysql_prod.ecommerce.public.sales_transactions",
      "upstreamDepth": 0,
      "downstreamDepth": 5
    }
  }
}

create_lineage

Description: Create a lineage relationship between two entities. Requires the id (UUID) and type of both the source and destination entities.

Parameters

ParameterTypeRequiredDescription
fromEntityobjectYesSource entity with type (string) and id (UUID string)
toEntityobjectYesDestination entity with type (string) and id (UUID string)

Example

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_lineage",
    "arguments": {
      "fromEntity": {
        "type": "table",
        "id": "3a1b2c3d-4e5f-6789-abcd-ef0123456789"
      },
      "toEntity": {
        "type": "table",
        "id": "9f8e7d6c-5b4a-3210-fedc-ba9876543210"
      }
    }
  }
}
Tip: Retrieve entity UUIDs from get_entity_details results before calling create_lineage.

Data Quality Tools

get_test_definitions

Description: List test definitions available in OpenMetadata for tables or columns. Call this before create_test_case to identify valid test types and their required parameters.

Parameters

ParameterTypeRequiredDescription
entityTypestringYesTABLE for table-level tests or COLUMN for column-level tests
limitintegerNoMax results to return (default: 10)
afterstringNoPagination cursor — use nextCursor from the previous response
testPlatformstringNoFilter by platform: OpenMetadata, GreatExpectations, DBT, Deequ, Soda, Other (default: OpenMetadata)

Example

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_test_definitions",
    "arguments": {
      "entityType": "COLUMN",
      "limit": 20
    }
  }
}

create_test_case

Description: Create a data quality test case for a table or column. For column tests, ensure the column’s data type is listed in the test definition’s supportedDataTypes.

Parameters

ParameterTypeRequiredDescription
namestringYesName of the test case
fqnstringYesFQN of the target entity (typically the table FQN)
testDefinitionNamestringYesName of the test definition returned by get_test_definitions
parameterValuesarrayYesList of test parameter objects (name + value) required by the test definition
columnNamestringNoColumn name for column-level test cases
entityTypestringNoTarget type, such as TABLE or COLUMN
descriptionstringNoOptional description of the test case

Example

{
  "jsonrpc": "2.0",
  "id": 11,
  "method": "tools/call",
  "params": {
    "name": "create_test_case",
    "arguments": {
      "name": "customer_id_not_null",
      "fqn": "mysql_prod.ecommerce.public.customer_orders",
      "columnName": "customer_id",
      "entityType": "COLUMN",
      "testDefinitionName": "columnValuesToBeNotNull",
      "description": "Ensures customer_id is always populated for downstream joins",
      "parameterValues": []
    }
  }
}

root_cause_analysis

Description: Trace a data quality failure back to its origin by traversing data quality lineage across pipeline hops.

Parameters

ParameterTypeRequiredDescription
fqnstringYesFQN of the entity where failure was detected
entityTypestringYesEntity type to analyze (for example, table)
upstreamDepthintegerNoHops to traverse upstream (default: 3, max: 10)
downstreamDepthintegerNoHops to traverse downstream (default: 3, max: 10)
queryFilterstringNoOptional OpenSearch DSL filter JSON
includeDeletedbooleanNoInclude deleted entities in traversal (default: false)

Example

{
  "jsonrpc": "2.0",
  "id": 12,
  "method": "tools/call",
  "params": {
    "name": "root_cause_analysis",
    "arguments": {
      "fqn": "mysql_prod.ecommerce.public.customer_orders",
      "entityType": "table",
      "upstreamDepth": 4,
      "downstreamDepth": 1,
      "includeDeleted": false
    }
  }
}