Skip to main content
Glama
apache-atlas-mcp

apache-atlas-mcp

by DanMeon

A community-built MCP (Model Context Protocol) server that connects LLM agents to Apache Atlas metadata governance platform. Not affiliated with the Apache Software Foundation.

Read-only by default. Write operations (create/delete entities, manage classifications) require explicit opt-in via --write flag or ATLAS_ALLOW_WRITE=true.

Why?

Apache Atlas is a widely-used open-source metadata governance framework for Hadoop ecosystems and beyond. With the 2.4.0 release (Jan 2025) breaking a 2-year gap and 2.5.0 (RC) adding PostgreSQL backend support and Trino extractor, Atlas is seeing renewed activity.

This MCP server lets AI agents:

  • Search data assets across your entire metadata catalog

  • Trace lineage — understand how data flows from source to destination

  • Browse glossaries — look up business terms and definitions

  • Inspect types — understand the metadata schema structure

  • Manage classifications — apply governance tags like PII, GDPR, Confidential (write mode)

  • Create/delete entities — modify metadata catalog (write mode)

Related MCP server: zscaler-mcp-server

Quick Start

Installation

# Using uv (recommended)
uv add apache-atlas-mcp

# Using pip
pip install apache-atlas-mcp

# Run without installing
uvx apache-atlas-mcp

Configuration

Set environment variables to connect to your Atlas instance:

export ATLAS_BASE_URL=http://your-atlas-server:21000
export ATLAS_USERNAME=your-username
export ATLAS_PASSWORD=your-password

All configuration options:

Variable

Default

Description

ATLAS_BASE_URL

(required)

Atlas server URL (e.g., http://localhost:21000)

ATLAS_USERNAME

(required)

Authentication username

ATLAS_PASSWORD

(required)

Authentication password

ATLAS_VERIFY_SSL

true

Verify SSL certificates

ATLAS_TIMEOUT

30

HTTP request timeout (seconds)

ATLAS_ALLOW_WRITE

false

Enable write operations (create, delete, classify)

Usage with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "apache-atlas": {
      "command": "uvx",
      "args": ["apache-atlas-mcp"],
      "env": {
        "ATLAS_BASE_URL": "http://your-atlas-server:21000",
        "ATLAS_USERNAME": "your-username",
        "ATLAS_PASSWORD": "your-password"
      }
    }
  }
}

To enable write operations:

{
  "mcpServers": {
    "apache-atlas": {
      "command": "uvx",
      "args": ["apache-atlas-mcp", "--write"],
      "env": {
        "ATLAS_BASE_URL": "http://your-atlas-server:21000",
        "ATLAS_USERNAME": "your-username",
        "ATLAS_PASSWORD": "your-password"
      }
    }
  }
}

Usage with Claude Code

# Read-only (default)
claude mcp add atlas-server -- uvx apache-atlas-mcp

# With write operations enabled
claude mcp add atlas-server -- uvx apache-atlas-mcp --write

Run Directly

# Read-only (default)
apache-atlas-mcp

# With write operations enabled
apache-atlas-mcp --write

Available Tools

Read-Only Tools (always available)

Tool

Description

search_entities

Basic search by keyword, type, or classification

dsl_search

Advanced search using Atlas DSL query language

quick_search

Fast partial-match search (autocomplete-style)

get_entity

Get full entity details by GUID

get_entity_by_attribute

Get entity by unique attribute (e.g., qualifiedName)

get_entities_bulk

Fetch multiple entities by GUIDs

Lineage

Tool

Description

get_lineage

Trace upstream/downstream data flow by GUID

get_lineage_by_attribute

Trace lineage by unique attribute

Classifications

Tool

Description

get_classifications

List all classifications on an entity

Glossary

Tool

Description

list_glossaries

List all business glossaries

get_glossary

Get glossary details with terms and categories

get_glossary_terms

List terms in a glossary

get_glossary_term

Get full details of a glossary term

Type Definitions

Tool

Description

get_all_type_definitions

Get the complete Atlas type system

get_type_definition

Get a specific type definition by name

get_entity_type_definition

Get an entity type with all attributes

Write Tools (requires --write or ATLAS_ALLOW_WRITE=true)

Tool

Description

create_entity

Create or update an entity

delete_entity

Soft-delete an entity

add_classification

Apply a classification tag (with lineage propagation)

remove_classification

Remove a classification from an entity

Architecture

LLM Agent  <-->  MCP Protocol  <-->  Apache Atlas MCP Server  <-->  Atlas REST API v2
                                              |
                                       FastMCP + httpx
                                              |
                                     Apache Atlas Instance
                                     (HBase / PostgreSQL backend)

The server wraps the Atlas REST API v2 using:

  • FastMCP for MCP protocol handling

  • httpx for async HTTP communication

  • Pydantic V2 for data validation and serialization

The REST API is backend-independent — it works regardless of whether Atlas uses HBase, Cassandra, or the new PostgreSQL backend (Atlas 2.5.0+).

Compatibility

  • Apache Atlas: 2.1.0+ (tested with 2.3.2 and 2.4.0)

  • Python: 3.11+

  • Authentication: HTTP Basic (Atlas file-based auth, LDAP, or AD — all use Basic HTTP headers)

Development

# Clone the repository
git clone https://github.com/DanMeon/apache-atlas-mcp.git
cd apache-atlas-mcp

# Install dependencies
uv sync --group dev

# Run tests
uv run pytest tests/ -v --cov

# Lint & type check
uv run ruff check src/ tests/
uv run pyright src/apache_atlas_mcp/

License

MIT

Available Tools

16 tools
get_all_type_definitionsA

Get all type definitions from Atlas.

Returns the complete type system including entity types, classification types, relationship types, enum types, and struct types. This is useful for understanding the metadata schema structure.

Warning: This can return a large response. Consider using get_type_definition for specific types instead.

Inputs: no named parameters. Returns: object

get_classificationsA

Get all classifications (tags) applied to an entity.

Classifications are used for data governance — e.g., PII, Confidential, HIPAA, GDPR tags that indicate sensitivity or compliance requirements.

Args: guid: The GUID of the entity.

Inputs: guid (required). Returns: object

get_entities_bulkA

Get multiple entities by their GUIDs in a single request.

Efficient way to fetch details for several entities at once, e.g., after collecting GUIDs from a search or lineage query.

Args: guids: List of entity GUIDs to retrieve (max 25).

Inputs: guids (required). Returns: object

get_entityA

Get full details of an entity by its GUID.

Returns the complete entity with all attributes, classifications, relationship attributes, and optionally referred entities.

Args: guid: The unique identifier (GUID) of the entity. min_ext_info: If true, returns minimal info for referred entities. ignore_relationships: If true, omits relationship attributes.

Inputs: guid (required), min_ext_info, ignore_relationships. Returns: object

get_entity_by_attributeA

Get an entity by its unique attribute value.

Useful when you know the qualified name or another unique attribute instead of the GUID. Common pattern: look up by qualifiedName.

Args: type_name: The entity type (e.g., "hive_table", "rdbms_table"). attribute_name: Unique attribute name (typically "qualifiedName"). attribute_value: The attribute value to match.

Inputs: type_name (required), attribute_name (required), attribute_value (required). Returns: object

get_entity_type_definitionA

Get an entity type definition by name.

Returns the entity type definition with all attribute definitions, super types, sub types, and relationship attribute definitions.

Args: name: The entity type name (e.g., "hive_table", "hive_db", "rdbms_table").

Inputs: name (required). Returns: object

get_glossaryA

Get a glossary by its GUID, including its terms and categories.

Args: glossary_guid: The GUID of the glossary.

Inputs: glossary_guid (required). Returns: object

get_glossary_termA

Get a glossary term by its GUID.

Returns the full term including definition, linked entities, related terms (seeAlso), and category assignments.

Args: term_guid: The GUID of the glossary term.

Inputs: term_guid (required). Returns: object

get_glossary_termsA

List terms in a specific glossary.

Returns business terms with their definitions, linked entities, and category assignments.

Args: glossary_guid: The GUID of the glossary. limit: Maximum number of terms to return. offset: Pagination offset.

Inputs: glossary_guid (required), limit, offset. Returns: result

get_lineageA

Get the data lineage graph for an entity.

Traces upstream (INPUT) and/or downstream (OUTPUT) data flow relationships. This is the most valuable tool for understanding how data moves through your system.

The response includes:

  • guidEntityMap: All entities in the lineage graph

  • relations: Directed edges showing data flow

Args: guid: The GUID of the entity to trace lineage for. direction: "INPUT" (upstream), "OUTPUT" (downstream), or "BOTH". depth: How many hops to traverse (default: 3, max: 10).

Inputs: guid (required), direction, depth. Returns: object

get_lineage_by_attributeA

Get lineage for an entity identified by a unique attribute.

Same as get_lineage but uses a unique attribute (like qualifiedName) instead of a GUID. Convenient when you know the entity's name but not its GUID.

Args: type_name: Entity type (e.g., "hive_table"). attribute_name: Unique attribute name (typically "qualifiedName"). attribute_value: The attribute value to match. direction: "INPUT" (upstream), "OUTPUT" (downstream), or "BOTH". depth: How many hops to traverse (default: 3, max: 10).

Inputs: type_name (required), attribute_name (required), attribute_value (required), direction, +1 more. Returns: object

get_type_definitionA

Get a specific type definition by name.

Returns the full type definition including attributes, super types, and constraints. Useful for understanding what attributes an entity type has.

Args: name: The type name (e.g., "hive_table", "rdbms_column", "PII").

Inputs: name (required). Returns: object

list_glossariesA

List all business glossaries.

Glossaries organize business terms and definitions, providing a shared vocabulary for data assets across the organization.

Args: limit: Maximum number of glossaries to return. offset: Pagination offset.

Inputs: limit, offset. Returns: result

search_entitiesB

Search for entities in Apache Atlas using basic search.

Finds data assets (tables, columns, processes, etc.) by keyword, type, or classification. Returns matching entity headers with key attributes.

Args: query: Free-text search query (e.g., "customer_orders"). type_name: Filter by entity type (e.g., "hive_table", "rdbms_table"). classification: Filter by classification tag (e.g., "PII", "Confidential"). limit: Maximum number of results (default: 25, max: 100). offset: Pagination offset.

Inputs: query, type_name, classification, limit, +1 more. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 16 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: search (dsl, quick, basic), entity retrieval, lineage, type definitions, glossaries, and classifications. No overlap in functionality.

    Naming Consistency5/5

    Tool names follow a consistent verb_noun pattern with underscores (get_, list_, search_, quick_search). All names are descriptive and predictable.

    Tool Count5/5

    With 16 tools, the server covers the main facets of Apache Atlas metadata management without being bloated or sparse. Each tool serves a distinct need.

    Completeness4/5

    The tool set is comprehensive for metadata discovery: search, retrieval, lineage, type definitions, glossaries, and classifications. However, it lacks write operations (create, update, delete) for entities, classifications, and glossaries, which limits full lifecycle coverage.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers