mcp/atlan

Verified Publisher

By mcp

Updated 28 days ago

MCP server for interacting with Atlan services including asset search, updates, and lineage trave...

Image
Machine learning & AI
0

8.4K

mcp/atlan repository overview

Atlan MCP Server

MCP server for interacting with Atlan services including asset search, updates, and lineage traversal for comprehensive data governance and discovery.

What is an MCP Server?

MCP Info

AttributeDetails
Docker Imagemcp/atlan
Authoratlanhq
Repositoryhttps://github.com/atlanhq/agent-toolkit

Image Building Info

AttributeDetails
Dockerfilehttps://github.com/atlanhq/agent-toolkit/blob/86bb1ad27f80e189b328333d2271b360ae579f2b/modelcontextprotocol/Dockerfile
Commit86bb1ad27f80e189b328333d2271b360ae579f2b
Docker Image built byDocker Inc.
Docker Scout Health ScoreDocker Scout Health Score
Verify SignatureCOSIGN_REPOSITORY=mcp/signatures cosign verify mcp/atlan --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub
LicenceMIT License

Available Tools (14)

Tools provided by this ServerShort Description
create_data_productsCreate Data Products in Atlan.
create_domainsCreate Data Domains or Sub Domains in Atlan.
create_dq_rules_toolCreate one or multiple data quality rules in Atlan.
create_glossariesCreate one or multiple AtlasGlossary assets in Atlan.
create_glossary_categoriesCreate one or multiple AtlasGlossaryCategory assets in Atlan.
create_glossary_termsCreate one or multiple AtlasGlossaryTerm assets in Atlan.
delete_dq_rules_toolDelete one or multiple data quality rules in Atlan.
get_assets_by_dsl_toolExecute the search with the given query dsl_query : Union[str, Dict[str, Any]] (required): The DSL query used to search the index.
query_asset_toolExecute a SQL query on a table/view asset.
schedule_dq_rules_toolSchedule data quality rule execution for one or multiple assets.
search_assets_toolAdvanced asset search using FluentSearch with flexible conditions.
traverse_lineage_toolTraverse asset lineage in specified direction.
update_assets_toolUpdate one or multiple assets with different values for attributes or term operations.
update_dq_rules_toolUpdate existing data quality rules in Atlan.

Tools Details

Tool: create_data_products

Create Data Products in Atlan.

IMPORTANT BUSINESS RULES & CONSTRAINTS:

  • Before creating a product, you may want to search for existing domains to get the qualified_name for the domain relationship
  • Product names must be unique within the same domain
  • At least one asset GUID must be provided for each product Parameters|Type|Description -|-|- products|string|Either a single product specification (dict) or a list of product specifications.

Tool: create_domains

Create Data Domains or Sub Domains in Atlan.

IMPORTANT BUSINESS RULES & CONSTRAINTS:

  • Before creating a domain/subdomain, you may want to search for existing domains to avoid duplicates or to get the qualified_name for parent relationships
  • Domain names must be unique at the top level
  • Subdomain names must be unique within the same parent domain Parameters|Type|Description -|-|- domains|string|Either a single domain specification (dict) or a list of domain specifications.

Tool: create_dq_rules_tool

Create one or multiple data quality rules in Atlan.

Supports all rule types: column-level, table-level, and custom SQL rules. Rules can be created individually or in bulk for efficient setup.

ParametersTypeDescription
rulesstringEither a single rule
specification or a list of rule specifications. Each specification
must include:
  • rule_type (str): Type of rule (see Supported Rule Types) [REQUIRED]
  • asset_qualified_name (str): Qualified name of the asset (Table, View, MaterialisedView, or SnowflakeDynamicTable) [REQUIRED]
  • asset_type (str): Type of asset - "Table" | "View" | "MaterialisedView" | "SnowflakeDynamicTable" [OPTIONAL, default: "Table"]
  • threshold_value (int/float): Threshold value for comparison [REQUIRED]
  • column_qualified_name (str): Column qualified name [REQUIRED for column-level rules, NOT for Row Count/Custom SQL]
  • threshold_compare_operator (str): Comparison operator (EQUAL, GREATER_THAN, etc.) [OPTIONAL, default varies by rule]
  • threshold_unit (str): Time unit for Freshness rules (DAYS, HOURS, MINUTES) [REQUIRED for Freshness, N/A for others]
  • alert_priority (str): Alert priority level (LOW, NORMAL, URGENT) [OPTIONAL, default: NORMAL]
  • row_scope_filtering_enabled (bool): Enable row-level filtering [OPTIONAL]
  • rule_conditions (List[Dict]): Conditions for String Length/Regex/Valid Values [REQUIRED for conditional rules]
  • custom_sql (str): SQL query [REQUIRED for Custom SQL rules]
  • rule_name (str): Name for the rule [REQUIRED for Custom SQL rules]
  • dimension (str): DQ dimension [REQUIRED for Custom SQL rules]
  • description (str): Rule description [OPTIONAL]

Tool: create_glossaries

Create one or multiple AtlasGlossary assets in Atlan.

IMPORTANT BUSINESS RULES & CONSTRAINTS:

  • Check for duplicate names within the same request and ask user to choose different names
  • Do NOT use search tool before creating glossaries - Atlan will handle existence validation
  • If user gives ambiguous instructions, ask clarifying questions Parameters|Type|Description -|-|- glossaries|string|Either a single glossary specification (dict) or a list of glossary specifications. Each specification can be a dictionary containing:
  • name (str): Name of the glossary (required)
  • user_description (str, optional): Detailed description of the glossary proposed by the user
  • certificate_status (str, optional): Certification status ("VERIFIED", "DRAFT", or "DEPRECATED")

Tool: create_glossary_categories

Create one or multiple AtlasGlossaryCategory assets in Atlan.

IMPORTANT BUSINESS RULES & CONSTRAINTS:

  • There cannot be two categories with the same name under the same glossary (at the same level)
  • Under a parent category, there cannot be subcategories with the same name (at the same level)
  • Categories with the same name can exist under different glossaries (this is allowed)
  • Cross-level naming is allowed: category "a" can have subcategory "b", and category "b" can have subcategory "a"
  • Example allowed structure: Glossary "bui" → category "a" → subcategory "b" AND category "b" → subcategory "a"
  • Always check for duplicate names at the same level and ask user to choose different names
  • Before creating a category, perform a single search to check if the glossary or categories with the same name already exist. Skip this step if you already have the required GUIDs.
  • Example call for searching glossary and categories before category creation(Query - create categories Locations and Characters under Marvel Cinematic Universe (MCU) glossary): { "limit": 10, "conditions": { "type_name": ["AtlasGlossary", "AtlasGlossaryCategory"], "name": ["Marvel Cinematic Universe (MCU)", "Characters", "Locations"] } }
  • If user gives ambiguous instructions, ask clarifying questions Parameters|Type|Description -|-|- categories|string|Either a single category specification (dict) or a list of category specifications. Each specification can be a dictionary containing:
  • name (str): Name of the category (required)
  • glossary_guid (str): GUID of the glossary this category belongs to (required)
  • user_description (str, optional): Detailed description of the category proposed by the user
  • certificate_status (str, optional): Certification status ("VERIFIED", "DRAFT", or "DEPRECATED")
  • parent_category_guid (str, optional): GUID of the parent category if this is a subcategory

Tool: create_glossary_terms

Create one or multiple AtlasGlossaryTerm assets in Atlan.

IMPORTANT BUSINESS RULES & CONSTRAINTS:

  • Within a glossary, a term (single GUID) can be associated with many categories
  • Two terms with the same name CANNOT exist within the same glossary (regardless of categories)
  • A term is always anchored to a glossary and may also be associated with one or more categories inside the same glossary
  • Before creating a term, perform a single search to check if the glossary, categories, or term with the same name already exist. Search for all relevant glossaries, categories, and terms in one call. Skip this step if you already have the required GUIDs.
  • Example call for searching glossary categories and terms before term creation(Query - create a term fighterz under category Characters and Locations under Marvel Cinematic Universe (MCU) glossary): { "limit": 10, "conditions": { "type_name": ["AtlasGlossary", "AtlasGlossaryCategory","AtlasGlossaryTerm"], "name": ["Marvel Cinematic Universe (MCU)", "Characters", "Locations","fighterz"] } } Parameters|Type|Description -|-|- terms|string|Either a single term specification (dict) or a list of term specifications. Each specification can be a dictionary containing:
  • name (str): Name of the term (required)
  • glossary_guid (str): GUID of the glossary this term belongs to (required)
  • user_description (str, optional): Detailed description of the term proposed by the user
  • certificate_status (str, optional): Certification status ("VERIFIED", "DRAFT", or "DEPRECATED")
  • category_guids (List[str], optional): List of category GUIDs this term belongs to.

Tool: delete_dq_rules_tool

Delete one or multiple data quality rules in Atlan.

ParametersTypeDescription
rule_guidsstringSingle rule GUID (string) or list of rule GUIDs to delete.

Tool: get_assets_by_dsl_tool

Execute the search with the given query dsl_query : Union[str, Dict[str, Any]] (required): The DSL query used to search the index.

Example: dsl_query = '''{ "query": { "function_score": { "boost_mode": "sum", "functions": [ {"filter": {"match": {"starredBy": "john.doe"}}, "weight": 10}, {"filter": {"match": {"certificateStatus": "VERIFIED"}}, "weight": 15}, {"filter": {"match": {"certificateStatus": "DRAFT"}}, "weight": 10}, {"filter": {"bool": {"must_not": [{"exists": {"field": "certificateStatus"}}]}}, "weight": 8}, {"filter": {"bool": {"must_not": [{"terms": {"__typeName.keyword": ["Process", "DbtProcess"]}}]}}, "weight": 20} ], "query": { "bool": { "filter": [ { "bool": { "minimum_should_match": 1, "must": [ {"bool": {"should": [{"terms": {"certificateStatus": ["VERIFIED"]}}]}}, {"term": {"__state": "ACTIVE"}} ], "must_not": [ {"term": {"isPartial": "true"}}, {"terms": {"__typeName.keyword": ["Procedure", "DbtColumnProcess", "BIProcess", "MatillionComponent", "SnowflakeTag", "DbtTag", "BigqueryTag", "AIApplication", "AIModel"]}}, {"terms": {"__typeName.keyword": ["MCIncident", "AnomaloCheck"]}} ], "should": [ {"terms": {"__typeName.keyword": ["Query", "Collection", "AtlasGlossary", "AtlasGlossaryCategory", "AtlasGlossaryTerm", "Connection", "File"]}}, ] } } ] }, "score_mode": "sum" }, "score_mode": "sum" } }, "post_filter": { "bool": { "filter": [ { "bool": { "must": [{"terms": {"__typeName.keyword": ["Table", "Column"]}}], "must_not": [{"exists": {"field": "termType"}}] } } ] }, "sort": [ {"_score": {"order": "desc"}}, {"popularityScore": {"order": "desc"}}, {"starredCount": {"order": "desc"}}, {"name.keyword": {"order": "asc"}} ], "track_total_hits": true, "size": 10, "include_meta": false }''' response = get_assets_by_dsl(dsl_query)

ParametersTypeDescription
dsl_querystring

Tool: query_asset_tool

Execute a SQL query on a table/view asset.

This tool enables querying table/view assets on the source similar to what's available in the insights table. It uses the Atlan query capabilities to execute SQL against connected data sources.

CRITICAL: Use READ-ONLY queries to retrieve data. Write and modify queries are not supported by this tool.

ParametersTypeDescription
connection_qualified_namestringConnection qualified name to use for the query.
This is the same parameter used in search_assets_tool.
You can find this value by searching for Table/View assets using search_assets_tool
and extracting the first part of the 'qualifiedName' attribute.
Example: from "default/snowflake/1657275059/LANDING/FRONTEND_PROD/PAGES"
use "default/snowflake/1657275059"
sqlstringThe SQL query to execute (read-only queries allowed)
default_schemastring optionalDefault schema name to use for unqualified
objects in the SQL, in the form "DB.SCHEMA"
(e.g., "RAW.WIDEWORLDIMPORTERS_WAREHOUSE")

Tool: schedule_dq_rules_tool

Schedule data quality rule execution for one or multiple assets.

ParametersTypeDescription
schedulesstringSingle schedule or list of schedules. Each schedule requires:
  • asset_type (str): "Table", "View", "MaterialisedView", or "SnowflakeDynamicTable"
  • asset_name (str): Name of the asset
  • asset_qualified_name (str): Qualified name of the asset
  • schedule_crontab (str): Cron expression (5 fields: min hour day month weekday)
  • schedule_time_zone (str): Timezone (e.g., "UTC", "America/New_York")

Tool: search_assets_tool

Advanced asset search using FluentSearch with flexible conditions.

ParametersTypeDescription
asset_typestring optionalType of asset to search for.
Either a class (e.g., Table, Column) or a string type name (e.g., "Table", "Column")
conditionsstring optionalDictionary of attribute conditions to match.
Format: {"attribute_name": value} or {"attribute_name": {"operator": operator, "value": value}}
connection_qualified_namestring optionalConnection qualified name to filter by. ex: default/snowflake/123456/abc
date_rangestring optionalDate range filters.
Format: {"attribute_name": {"gte": start_timestamp, "lte": end_timestamp}}
directly_taggedstring optionalWhether to filter for directly tagged assets only. Defaults to True.
domain_guidsstring optionalList of domain GUIDs to filter by.
guidsstring optionalList of asset GUIDs to filter by.
include_archivedstring optionalWhether to include archived assets. Defaults to False.
include_attributesstring optionalList of specific attributes to include in results.
Can be string attribute names or AtlanField objects.
limitstring optionalMaximum number of results to return. Defaults to 10.
min_somesstring optionalMinimum number of some_conditions that must match. Defaults to 1.
negative_conditionsstring optionalDictionary of attribute conditions to exclude.
Format: {"attribute_name": value} or {"attribute_name": {"operator": operator, "value": value}}
offsetstring optionalOffset for pagination. Defaults to 0.
some_conditionsstring optionalConditions for where_some() queries that require min_somes of them to match.
Format: {"attribute_name": value} or {"attribute_name": {"operator": operator, "value": value}}
sort_bystring optionalAttribute to sort by. Defaults to None.
sort_orderstring optionalSort order, "ASC" or "DESC". Defaults to "ASC".
tagsstring optionalList of tags to filter by.

Tool: traverse_lineage_tool

Traverse asset lineage in specified direction.

By default, essential attributes are included in results. Additional attributes can be specified via include_attributes parameter for richer lineage information.

ParametersTypeDescription
directionstringDirection to traverse ("UPSTREAM" or "DOWNSTREAM")
guidstringGUID of the starting asset
depthstring optionalMaximum depth to traverse. Defaults to 1000000.
immediate_neighborsstring optionalOnly return immediate neighbors. Defaults to True.
include_attributesstring optionalList of additional attribute names to include in results.
These will be added to the default set.
sizestring optionalMaximum number of results to return. Defaults to 10.

Tool: update_assets_tool

Update one or multiple assets with different values for attributes or term operations.

ParametersTypeDescription
assetsstringAsset(s) to update.
Can be a single UpdatableAsset or a list of UpdatableAsset objects.
For asset of type_name=AtlasGlossaryTerm or type_name=AtlasGlossaryCategory, each asset dictionary MUST include a "glossary_guid" key which is the GUID of the glossary that the term belongs to.
attribute_namestringName of the attribute to update.
Supports "user_description", "certificate_status", "readme", and "term".
attribute_valuesstringList of values to set for the attribute.
For certificateStatus, only "VERIFIED", "DRAFT", or "DEPRECATED" are allowed.
For readme, the value must be a valid Markdown string.
For term, the value must be a dict with "operation" and "term_guids" keys.

Tool: update_dq_rules_tool

Update existing data quality rules in Atlan.

ParametersTypeDescription
rulesstringSingle rule dict or list of rule dicts. Required fields:
  • qualified_name: Rule's qualified name
  • rule_type: Rule type (e.g., "Null Count", "Row Count", "Custom SQL")
  • asset_qualified_name: Table/view qualified name

Use this MCP Server

{
  "mcpServers": {
    "atlan": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "ATLAN_API_KEY",
        "-e",
        "ATLAN_BASE_URL",
        "mcp/atlan"
      ],
      "env": {
        "ATLAN_API_KEY": "<YOUR_ATLAN_API_KEY>",
        "ATLAN_BASE_URL": "https://your-instance.atlan.com"
      }
    }
  }
}

Why is it safer to run MCP Servers with Docker?

Install from MCP:Hub

Tag summary

Content type

Image

Digest

sha256:eda35f218

Size

105.1 MB

Last updated

28 days ago

docker pull mcp/atlan

This week's pulls

Pulls:

1,056

Last week