Skip to main content

OpenMetadata MCP Tools Reference

All OpenMetadata MCP tools, with parameters and examples.

Available Tools

Discover

Search and find data assets across your catalog using keyword, semantic, or natural language queries.

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
    }
  }
}

Inspect

Retrieve detailed information about specific entities and company knowledge pills.

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)"
      }
    ]
  }
}

Lineage & Impact

Explore data dependencies, trace upstream sources, and analyze downstream impact.

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)
includeColumnLineagebooleanNoInclude column-level lineage mappings. Default is false (table-level only)
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-Focused Impact Analysis:
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_entity_lineage",
    "arguments": {
      "entityType": "table",
      "fqn": "mysql_prod.ecommerce.public.sales_transactions",
      "upstreamDepth": 1,
      "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.

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
    }
  }
}

Knowledge

Create and manage glossaries, terms, and reusable context memories.

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"]
    }
  }
}

Govern & Classify

Define and apply classifications, tags, domains, data products, and entity updates.

create_classification

Description: Create a new Classification in OpenMetadata. A Classification is a top-level container that groups related Tags (e.g., PII, Tier). The name becomes the root segment of every tag FQN under it. The mutuallyExclusive flag is immutable once the classification exists. Parameters
ParameterTypeRequiredDescription
namestringYesName of the classification. Becomes the root segment of tag FQNs (e.g., PIIPII.Sensitive). Must be unique.
descriptionstringYesDescription of the classification in Markdown format.
displayNamestringNoHuman-readable display name.
mutuallyExclusivebooleanNoIf true, an entity can only carry one tag from this classification at a time. Immutable after creation.
ownersarrayNoOpenMetadata usernames or team names to set as owners. Each must already exist.
reviewersarrayNoOpenMetadata usernames or team names to set as reviewers. Each must already exist.
domainsarrayNoFQNs of domains this classification belongs to. Each domain must already exist.
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_classification",
    "arguments": {
      "name": "PII",
      "description": "Tags for classifying Personally Identifiable Information across data assets.",
      "mutuallyExclusive": false,
      "owners": ["data-governance-team"],
      "reviewers": ["privacy-team"]
    }
  }
}

create_tag

Description: Create a new Tag inside a Classification in OpenMetadata. The tag FQN is Classification.TagName (e.g., PII.Sensitive). At least one of classification or parent must be provided. Parameters
ParameterTypeRequiredDescription
namestringYesName of the tag (the leaf segment, e.g., Sensitive). Must be unique within its parent.
descriptionstringYesDescription of the tag in Markdown format.
classificationstringNoName of the classification this tag belongs to (e.g., PII). Must already exist. Optional if parent is provided.
parentstringNoFQN of the parent tag for a nested tag (e.g., PII.PersonalData). Must already exist. Omit for a top-level tag.
displayNamestringNoHuman-readable display name.
mutuallyExclusivebooleanNoIf true, child tags under this tag are mutually exclusive on an entity.
ownersarrayNoOpenMetadata usernames or team names to set as owners. Each must already exist.
reviewersarrayNoOpenMetadata usernames or team names to set as reviewers. Each must already exist.
domainsarrayNoFQNs of domains this tag belongs to. Each domain must already exist.
Examples Create a top-level tag:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_tag",
    "arguments": {
      "name": "Sensitive",
      "description": "Data that contains sensitive personal information requiring strict access controls.",
      "classification": "PII"
    }
  }
}
Create a nested tag:
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "create_tag",
    "arguments": {
      "name": "Email",
      "description": "Email addresses — a subset of sensitive personal data.",
      "parent": "PII.Sensitive"
    }
  }
}

create_domain

Description: Create a new Domain in OpenMetadata. A Domain is a top-level governance grouping of data assets. To create a child domain, set parent to the FQN of an existing parent domain. domainType defaults to Aggregate if omitted. Parameters
ParameterTypeRequiredDescription
namestringYesName of the domain. Must be unique.
descriptionstringYesDescription of the domain in Markdown format.
domainTypestringNoType of domain: Source-aligned, Consumer-aligned, or Aggregate (default).
parentstringNoFQN of an existing parent domain when creating a child domain. Omit for a top-level domain.
displayNamestringNoHuman-readable display name.
expertsarrayNoOpenMetadata login names of domain experts (e.g., john.doe). Each must already exist.
ownersarrayNoOpenMetadata usernames or team names to set as owners. Each must already exist.
tagsarrayNoTag FQNs to apply to this domain (e.g., Tier.Tier1).
Examples Create a top-level domain:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_domain",
    "arguments": {
      "name": "Finance",
      "description": "Domain for all finance and accounting data assets.",
      "domainType": "Consumer-aligned",
      "experts": ["jane.doe"],
      "owners": ["finance-team"]
    }
  }
}
Create a child domain:
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "create_domain",
    "arguments": {
      "name": "Revenue",
      "description": "Sub-domain covering revenue tracking and forecasting.",
      "domainType": "Aggregate",
      "parent": "Finance"
    }
  }
}

create_data_product

Description: Create a new Data Product in OpenMetadata. A Data Product groups data assets that deliver business value and must belong to at least one Domain. All referenced domain FQNs must already exist. Parameters
ParameterTypeRequiredDescription
namestringYesName of the data product. Must be unique.
descriptionstringYesDescription of the data product in Markdown format.
domainsarrayYesFQNs of the domains this data product belongs to (e.g., Finance). At least one required; each must already exist.
displayNamestringNoHuman-readable display name.
expertsarrayNoOpenMetadata login names of data product experts (e.g., john.doe). Each must already exist.
ownersarrayNoOpenMetadata usernames or team names to set as owners. Each must already exist.
reviewersarrayNoOpenMetadata usernames or team names to set as reviewers. Each must already exist.
tagsarrayNoTag FQNs to apply to this data product (e.g., Tier.Tier1, PII.Sensitive).
Example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_data_product",
    "arguments": {
      "name": "customer_360",
      "displayName": "Customer 360",
      "description": "Unified view of customer data including orders, support history, and lifetime value.",
      "domains": ["Finance", "Marketing"],
      "experts": ["alice.smith"],
      "owners": ["data-platform-team"],
      "tags": ["Tier.Tier1"]
    }
  }
}

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. Parameters
ParameterTypeRequiredDescription
entityTypestringYesType of entity to patch (e.g., table, glossaryTerm)
fqnstringYesFully qualified name of the entity to patch
patchstringYesJSON Patch operations array as a JSON string. Each operation has op (add/remove/replace), path, and value
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.\"}]"
    }
  }
}

Data Quality

Access test definitions and create test cases to validate your data assets.

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 OpenMetadata entity type (default: table). For column-level tests, keep entityType as table and set columnName.
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": "table",
      "testDefinitionName": "columnValuesToBeNotNull",
      "description": "Ensures customer_id is always populated for downstream joins",
      "parameterValues": []
    }
  }
}

Metrics

Define and track measurable business and technical KPIs.

create_metric

Description: Create a new metric entity in OpenMetadata to track and standardize business KPIs. Parameters
ParameterTypeRequiredDescription
namestringYesName of the metric
descriptionstringNoDescription of the metric in Markdown format
displayNamestringNoHuman-readable display name for the metric
metricExpressionLanguagestringYesExpression language used for the metric (for example, SQL)
metricExpressionCodestringYesMetric formula/expression in the selected language
metricTypestringNoMetric type such as COUNT, SUM, AVERAGE, RATIO, or OTHER
granularitystringNoTime granularity such as DAY, WEEK, MONTH, QUARTER, or YEAR
unitOfMeasurementstringNoUnit of measurement such as COUNT, DOLLARS, PERCENTAGE, or OTHER
customUnitOfMeasurementstringNoCustom unit string, required when unitOfMeasurement is OTHER
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",
      "displayName": "Monthly Recurring Revenue",
      "description": "Monthly recurring revenue from active subscriptions.",
      "metricExpressionLanguage": "SQL",
      "metricExpressionCode": "SUM(subscription_amount)",
      "metricType": "SUM",
      "granularity": "MONTH",
      "unitOfMeasurement": "DOLLARS",
      "owners": ["finance-team"],
      "reviewers": ["data-governance-team"],
      "tags": ["Finance", "KPI"],
      "domains": ["Revenue"]
    }
  }
}