Skip to main content
Glama

MCP-Ambari-API

MCP Ambari API - Apache Hadoop Cluster Management Automation

🚀 Automate Apache Ambari operations with AI/LLM: Natural language commands for Hadoop cluster management, service control, configuration monitoring, and real-time status tracking via Model Context Protocol (MCP) tools.


p

📋 Overview

MCP Ambari API is a powerful Model Context Protocol (MCP) server that enables seamless Apache Ambari cluster management through natural language commands. Built for DevOps engineers, data engineers, and system administrators who work with Hadoop ecosystems.


🎯 What You Can Do

  • Automated Service Management: Start, stop, restart Hadoop services (HDFS, YARN, Spark, etc.) with simple commands
  • Real-time Monitoring: Monitor cluster health, service status, and performance metrics
  • Configuration Management: View, update, and manage cluster configurations across all services
  • Alert Management: Track and manage cluster alerts and notifications
  • User & Host Management: Manage cluster users, permissions, and host assignments
  • Request Tracking: Monitor long-running operations with detailed progress tracking

Docuement for Airflow REST-API

Topics

apache-ambari hadoop-cluster mcp-server cluster-automation devops-tools big-data infrastructure-management ai-automation llm-tools python-mcp


Example Queries - Cluster Info/Status

Example: Querying Ambari Cluster(1)

Go to More Example Queries


🚀 QuickStart Guide /w Docker

Note: The following instructions assume you are using the streamable-http mode for MCP Server.

Env

  • Ambari-3.0 Cluster

1. Prepare Ambari Cluster (Test Target)

To set up a Ambari Demo cluster, follow the guide at: Install Ambari 3.0 with Docker

Example: Ambari Demo Cluster

2. Run Docker-Compose

Start the MCP-Server, MCPO(MCP-Proxy for OpenAPI), and OpenWebUI.

  1. Ensure Docker and Docker Compose are installed on your system.
  2. Clone this repository and navigate to its root directory.
  3. Set up environment configuration:
    # Copy environment template and configure your settings cp .env.example .env # Edit .env with your Ambari cluster information
  4. Configure your Ambari connection in .env file:
    # Ambari cluster connection AMBARI_HOST=host.docker.internal AMBARI_PORT=7070 AMBARI_USER=admin AMBARI_PASS=admin AMBARI_CLUSTER_NAME=TEST-AMBARI # (Optional) Enable authentication for streamable-http mode # Recommended for production environments REMOTE_AUTH_ENABLE=false REMOTE_SECRET_KEY=your-secure-secret-key-here
  5. Run:
    docker-compose up -d
  • OpenWebUI will be available at: http://localhost:${DOCKER_EXTERNAL_PORT_OPENWEBUI} (default: 3001)
  • The MCPO-Proxy will be accessible at: http://localhost:${DOCKER_EXTERNAL_PORT_MCPO_PROXY} (default: 8001)
  • The MCPO API Docs: http://localhost:${DOCKER_EXTERNAL_PORT_MCPO_PROXY}/ambari-api/docs

Example: MCPO-Proxy

3. Registering the Tool in OpenWebUI

  1. logging in to OpenWebUI with an admin account
  2. go to "Settings" → "Tools" from the top menu.
  3. Enter the ambari-api Tool address (e.g., http://localhost:8000/ambari-api) to connect MCP Tools with your Ambari cluster.

4. More Examples: Using MCP Tools to Query Ambari Cluster

Below is an example screenshot showing how to query the Ambari cluster using MCP Tools in OpenWebUI:

Example Query - Cluster Configuration Review & Recommendations

Example: Querying Ambari Cluster(2)

Example Query - Restart HDFS Service

Example: Querying Ambari Cluster(3) Example: Querying Ambari Cluster(3)


💡 Tool Example Queries

🔍 Cluster & Service Management

get_cluster_info

  • "Show cluster summary and basic information."
  • "What's the cluster name and version?"
  • "Display cluster overview with service counts."
  • 📋 Features: Cluster name, version, service counts, basic cluster information

get_cluster_services

  • "Show all cluster services and their current status."
  • "List all services with their states."
  • "Display service overview for the cluster."
  • "Which services are running in the cluster?"
  • 📋 Features: Service names, states, health status overview

get_service_status

  • "What's the status of HDFS service?"
  • "Check if YARN is running properly."
  • "Show current state of HBase service."
  • "Is the MapReduce service healthy?"
  • 📋 Features: Individual service state, health check, status details

get_service_components

  • "Show HDFS components and which hosts they're running on."
  • "List all YARN components with their host assignments."
  • "Display component distribution for Kafka service."
  • "Which hosts are running NameNode components?"
  • 📋 Features: Component-to-host mapping, service distribution analysis

get_service_details

  • "Get detailed information about HDFS service including all components."
  • "Show comprehensive YARN service overview with component states."
  • "Display full service details for Spark with host assignments."
  • 📋 Features: Complete service overview with components and host details

⚙️ Service Operations

start_service / stop_service / restart_service

  • "Start the HDFS service."
  • "Stop the MapReduce service."
  • "Restart the YARN service."
  • "Please restart the HBase service."
  • 📋 Features: Individual service lifecycle management
  • ⚠️ Note: Returns request ID for operation tracking

start_all_services / stop_all_services / restart_all_services

  • "Start all cluster services."
  • "Stop all services in the cluster."
  • "Restart all cluster services."
  • 📋 Features: Bulk service operations for entire cluster
  • ⚠️ Warning: These are high-impact operations affecting the entire cluster

📊 Operations & Monitoring

get_active_requests

  • "Show all running operations."
  • "List current service requests in progress."
  • "What operations are currently active?"
  • "Display ongoing cluster operations."
  • 📋 Features: Real-time operation status, request monitoring

get_request_status

  • "Check the status of request ID 123."
  • "Show progress for operation 456."
  • "Get details for the last restart request."
  • "Monitor request 789 completion status."
  • 📋 Features: Detailed request progress, completion status, error tracking

🖥️ Host Management

list_hosts

  • "List all hosts in the cluster."
  • "Show cluster node inventory."
  • "Display all available hosts."
  • 📋 Features: Host inventory, cluster node overview

get_host_details

  • "Show detailed information for host node1.example.com."
  • "Get component status on host node2.example.com."
  • "Display all host details with component states."
  • "Show hardware and component information for specific host."
  • 📋 Features: Hardware specs, component states, host health status
  • 💡 Tip: Omit hostname parameter to get details for all hosts

🔧 Configuration Management

dump_configurations

  • "Show all configuration types available."
  • "Display HDFS configuration settings."
  • "Get YARN resource manager configuration."
  • "Show core-site.xml configuration values."
  • "Find all configurations containing 'memory' settings."
  • "Display summarized view of all service configurations."
  • 📋 Features: Configuration type exploration, property search, service-specific configs
  • 💡 Usage: Use summarize=True for overview, filter parameter for specific properties

👥 User Management

list_users

  • "Show all cluster users."
  • "List users with access to Ambari."
  • "Display user accounts and their roles."
  • 📋 Features: User accounts, role assignments, access permissions

get_user

  • "Get detailed information for user 'admin'."
  • "Show profile and permissions for user 'operator'."
  • "Display authentication details for specific user."
  • 📋 Features: User profile, permissions, authentication source, role details

🚨 Alert Management

get_alerts_history (current mode)

  • "Show current active alerts."
  • "Display all current alert states."
  • "List active alerts for HDFS service."
  • "Show critical alerts that are currently active."
  • 📋 Features: Real-time alert monitoring, service-specific alerts, severity filtering

get_alerts_history (history mode)

  • "Show alert history for the last 24 hours."
  • "Display HDFS alerts from yesterday."
  • "Get critical alerts from last week."
  • "Show all alerts that occurred in the past month."
  • "Find alerts for specific host from last 7 days."
  • 📋 Features: Historical alert analysis, time-based filtering, trend analysis
  • 💡 Smart Time Processing: Supports natural language time expressions in any language

📚 System Information

get_prompt_template

  • "Show available prompt template sections."
  • "Get tool usage guidelines."
  • "Display example queries for reference."
  • 📋 Features: Template documentation, usage guidelines, section navigation

🐛 Usage & Configuration

This MCP server supports two connection modes: stdio (traditional) and streamable-http (Docker-based). You can configure the transport mode using CLI arguments or environment variables.

Configuration Priority: CLI arguments > Environment variables > Default values

CLI Arguments

  • --type (-t): Transport type (stdio or streamable-http) - Default: stdio
  • --host: Host address for HTTP transport - Default: 127.0.0.1
  • --port (-p): Port number for HTTP transport - Default: 8000
  • --auth-enable: Enable Bearer token authentication for streamable-http mode - Default: false
  • --secret-key: Secret key for Bearer token authentication (required when auth enabled)

Environment Variables

VariableDescriptionDefaultProject Default
PYTHONPATHPython module search path for MCP server imports-/app/src
MCP_LOG_LEVELServer logging verbosity (DEBUG, INFO, WARNING, ERROR)INFOINFO
FASTMCP_TYPEMCP transport protocol (stdio for CLI, streamable-http for web)stdiostreamable-http
FASTMCP_HOSTHTTP server bind address (0.0.0.0 for all interfaces)127.0.0.10.0.0.0
FASTMCP_PORTHTTP server port for MCP communication80008000
REMOTE_AUTH_ENABLEEnable Bearer token authentication for streamable-http modeDefault: false (if undefined, empty, or null)falsefalse
REMOTE_SECRET_KEYSecret key for Bearer token authenticationRequired when REMOTE_AUTH_ENABLE=true-your-secret-key-here
AMBARI_HOSTAmbari server hostname or IP address127.0.0.1host.docker.internal
AMBARI_PORTAmbari server port number80808080
AMBARI_USERUsername for Ambari server authenticationadminadmin
AMBARI_PASSPassword for Ambari server authenticationadminadmin
AMBARI_CLUSTER_NAMEName of the target Ambari clusterTEST-AMBARITEST-AMBARI
DOCKER_EXTERNAL_PORT_OPENWEBUIHost port mapping for Open WebUI container80803001
DOCKER_EXTERNAL_PORT_MCP_SERVERHost port mapping for MCP server container808018001
DOCKER_EXTERNAL_PORT_MCPO_PROXYHost port mapping for MCPO proxy container80008001

Note: AMBARI_CLUSTER_NAME serves as the default target cluster for operations when no specific cluster is specified. All environment variables can be configured via the .env file.

Transport Selection Logic:

Configuration Priority: CLI arguments > Environment variables > Default values

Transport Selection Logic:

  • CLI Priority: --type streamable-http --host 0.0.0.0 --port 18001
  • Environment Priority: FASTMCP_TYPE=streamable-http FASTMCP_HOST=0.0.0.0 FASTMCP_PORT=18001
  • Legacy Support: FASTMCP_PORT=18001 (automatically enables streamable-http mode)
  • Default: stdio mode when no configuration is provided

Environment Setup

# 1. Clone the repository git clone https://github.com/call518/MCP-Ambari-API.git cd MCP-Ambari-API # 2. Set up environment configuration cp .env.example .env # 3. Configure your Ambari connection in .env file AMBARI_HOST=your-ambari-host AMBARI_PORT=your-ambari-port AMBARI_USER=your-username AMBARI_PASS=your-password AMBARI_CLUSTER_NAME=your-cluster-name

🔐 Security & Authentication

Bearer Token Authentication

For streamable-http mode, this MCP server supports Bearer token authentication to secure remote access. This is especially important when running the server in production environments.

Configuration

Enable Authentication:

# In .env file REMOTE_AUTH_ENABLE=true REMOTE_SECRET_KEY=your-secure-secret-key-here

Or via CLI:

python -m mcp_ambari_api --type streamable-http --auth-enable --secret-key your-secure-secret-key-here
Security Levels
  1. stdio mode (Default): Local-only access, no authentication needed
  2. streamable-http + REMOTE_AUTH_ENABLE=false/undefined: Remote access without authentication ⚠️ NOT RECOMMENDED for production
  3. streamable-http + REMOTE_AUTH_ENABLE=true: Remote access with Bearer token authentication ✅ RECOMMENDED for production

🔒 Default Policy: REMOTE_AUTH_ENABLE defaults to false if undefined, empty, or null. This ensures the server starts even without explicit authentication configuration.

Client Configuration

When authentication is enabled, MCP clients must include the Bearer token in the Authorization header:

{ "mcpServers": { "ambari-api": { "type": "streamable-http", "url": "http://your-server:8000/mcp", "headers": { "Authorization": "Bearer your-secure-secret-key-here" } } } }
Security Best Practices
  • Always enable authentication when using streamable-http mode in production
  • Use strong, randomly generated secret keys (32+ characters recommended)
  • Use HTTPS when possible (configure reverse proxy with SSL/TLS)
  • Restrict network access using firewalls or network policies
  • Rotate secret keys regularly for enhanced security
  • Monitor access logs for unauthorized access attempts
Error Handling

When authentication fails, the server returns:

  • 401 Unauthorized for missing or invalid tokens
  • Detailed error messages in JSON format for debugging

Method 1: Local MCP (transport="stdio")

{ "mcpServers": { "ambari-api": { "command": "uvx", "args": ["--python", "3.11", "mcp-ambari-api"], "env": { "AMBARI_HOST": "host.docker.internal", "AMBARI_PORT": "8080", "AMBARI_USER": "admin", "AMBARI_PASS": "admin", "AMBARI_CLUSTER_NAME": "TEST-AMBARI", "MCP_LOG_LEVEL": "INFO" } } } }

Method 2: Remote MCP (transport="streamable-http")

On MCP-Client Host:

{ "mcpServers": { "ambari-api": { "type": "streamable-http", "url": "http://localhost:18001/mcp" } } }

With Bearer Token Authentication (Recommended for production):

{ "mcpServers": { "ambari-api": { "type": "streamable-http", "url": "http://localhost:18001/mcp", "headers": { "Authorization": "Bearer your-secure-secret-key-here" } } } }

Example usage: Claude-Desktop

claude_desktop_config.json

{ "mcpServers": { "ambari-api": { "command": "uvx", "args": ["--python", "3.11", "mcp-ambari-api"], "env": { "AMBARI_HOST": "localhost", "AMBARI_PORT": "7070", "AMBARI_USER": "admin", "AMBARI_PASS": "admin", "AMBARI_CLUSTER_NAME": "TEST-AMBARI", "MCP_LOG_LEVEL": "INFO" } } } }

Example: Claude-Desktop(3)

(Option) Configure Multiple Ambari Cluster

{ "mcpServers": { "Ambari-Cluster-A": { "command": "uvx", "args": ["--python", "3.11", "mcp-ambari-api"], "env": { "AMBARI_HOST": "a.foo.com", "AMBARI_PORT": "8080", "AMBARI_USER": "admin-user", "AMBARI_PASS": "admin-pass", "AMBARI_CLUSTER_NAME": "AMBARI-A", "MCP_LOG_LEVEL": "INFO" } }, "Ambari-Cluster-B": { "command": "uvx", "args": ["--python", "3.11", "mcp-ambari-api"], "env": { "AMBARI_HOST": "b.bar.com", "AMBARI_PORT": "8080", "AMBARI_USER": "admin-user", "AMBARI_PASS": "admin-pass", "AMBARI_CLUSTER_NAME": "AMBARI-B", "MCP_LOG_LEVEL": "INFO" } } } }

Remote Access with Authentication (Claude Desktop):

{ "mcpServers": { "ambari-api-remote": { "type": "streamable-http", "url": "http://your-server-ip:18001/mcp", "headers": { "Authorization": "Bearer your-secure-secret-key-here" } } } }

🎯 Core Features & Capabilities

Service Operations

  • Hadoop Service Management: Start, stop, restart HDFS, YARN, Spark, HBase, and more
  • Bulk Operations: Control all cluster services simultaneously
  • Status Monitoring: Real-time service health and performance tracking

Configuration Management

  • Unified Config Tool: Single interface for all configuration types (yarn-site, hdfs-site, etc.)
  • Bulk Configuration: Export and manage multiple configurations with filtering
  • Configuration Validation: Syntax checking and validation before applying changes

Monitoring & Alerting

  • Real-time Alerts: Current and historical cluster alerts with filtering
  • Request Tracking: Monitor long-running operations with detailed progress
  • Host Monitoring: Hardware metrics, component states, and resource utilization

Administration

  • User Management: Check cluster user administration
  • Host Management: Node registration, component assignments, and health monitoring

Available MCP Tools

This MCP server provides the following tools for Ambari cluster management:

Cluster Management

  • get_cluster_info - Retrieve basic cluster information and status
  • get_active_requests - List currently active/running operations
  • get_request_status - Check status and progress of specific requests

Service Management

  • get_cluster_services - List all services with their status
  • get_service_status - Get detailed status of a specific service
  • get_service_components - List components and host assignments for a service
  • get_service_details - Get comprehensive service information
  • start_service - Start a specific service
  • stop_service - Stop a specific service
  • restart_service - Restart a specific service
  • start_all_services - Start all services in the cluster
  • stop_all_services - Stop all services in the cluster
  • restart_all_services - Restart all services in the cluster

Configuration Tools

  • dump_configurations - Unified configuration tool (replaces get_configurations, list_configurations, and the former internal dump_all_configurations). Supports:
    • Single type: dump_configurations(config_type="yarn-site")
    • Bulk summary: dump_configurations(summarize=True)
    • Filter by substring (type or key): dump_configurations(filter="memory")
    • Service filter (narrow types by substring): dump_configurations(service_filter="yarn", summarize=True)
    • Keys only (no values): dump_configurations(include_values=False)
    • Limit number of types: dump_configurations(limit=10, summarize=True)

Breaking Change: get_configurations and list_configurations were removed in favor of this single, more capable tool.

Host Management

  • list_hosts - List all hosts in the cluster
  • get_host_details - Get detailed information for specific or all hosts (includes component states, hardware metrics, and service assignments)

User Management

  • list_users - List all users in the Ambari system with their usernames and API links
  • get_user - Get detailed information about a specific user including:
    • Basic profile (ID, username, display name, user type)
    • Status information (admin privileges, active status, login failures)
    • Authentication details (LDAP user status, authentication sources)
    • Group memberships, privileges, and widget layouts

Alert Management

  • get_alerts_history - Unified alert tool for both current and historical alerts:
    • Current mode (mode="current"): Retrieve current/active alerts with real-time status
      • Current alert states across cluster, services, or hosts
      • Maintenance mode filtering (ON/OFF)
      • Summary formats: basic summary and grouped by definition
      • Detailed alert information including timestamps and descriptions
    • History mode (mode="history"): Retrieve historical alert events from the cluster
      • Scope filtering: cluster-wide, service-specific, or host-specific alerts
      • Time range filtering: from/to timestamp support
      • Pagination support for large datasets
    • Common features (both modes):
      • State filtering: CRITICAL, WARNING, OK, UNKNOWN alerts
      • Definition filtering: filter by specific alert definition names
      • Multiple output formats: detailed, summary, compact
      • Unified API for consistent alert querying experience

🤝 Contributing & Support

How to Contribute

Technologies Used

  • Language: Python 3.11
  • Framework: Model Context Protocol (MCP)
  • API: Apache Ambari REST API
  • Transport: stdio (local) and streamable-http (remote)
  • Deployment: Docker, Docker Compose, PyPI

Dev Env.

  • WSL2(networkingMode = bridged) + Docker-Desktop
    • .wslconfig: tested with networkingMode = bridged
  • Python 3.11 venv
    ### Option-1: with uv uv venv --python 3.11 --seed ### Option-2: with pip python3.11 -m venv .venv source .venv/bin/activate pip install -U pip

❓ Frequently Asked Questions

Q: What Ambari versions are supported?

A: Ambari 2.7+ is recommended. Earlier versions may work but are not officially tested.

Q: Can I use this with cloud-managed Hadoop clusters?

A: Yes, as long as Ambari API endpoints are accessible, it works with on-premise, cloud, and hybrid deployments.

Q: How do I troubleshoot connection issues?

A: Check your AMBARI_HOST, AMBARI_PORT, and network connectivity. Enable debug logging with MCP_LOG_LEVEL=DEBUG.

Q: How does this compare to Ambari Web UI?

A: This provides programmatic access via AI/LLM commands, perfect for automation, scripting, and integration with modern DevOps workflows.


Contributing

🤝 Got ideas? Found bugs? Want to add cool features?

We're always excited to welcome new contributors! Whether you're fixing a typo, adding a new monitoring tool, or improving documentation - every contribution makes this project better.

Ways to contribute:

  • 🐛 Report issues or bugs
  • 💡 Suggest new PostgreSQL monitoring features
  • 📝 Improve documentation
  • 🚀 Submit pull requests
  • ⭐ Star the repo if you find it useful!

Pro tip: The codebase is designed to be super friendly for adding new tools. Check out the existing @mcp.tool() functions in mcp_main.py.


📄 License

This project is licensed under the MIT License.

Deploy Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Manage and monitor Hadoop clusters via Apache Ambari API, enabling service operations, configuration changes, status checks, and request tracking through a unified MCP interface for simplified administration.

  1. 📋 Overview
    1. 🎯 What You Can Do
    2. Docuement for Airflow REST-API
  2. Topics
    1. Example Queries - Cluster Info/Status
      1. 🚀 QuickStart Guide /w Docker
        1. Env
        2. 1. Prepare Ambari Cluster (Test Target)
        3. 2. Run Docker-Compose
        4. 3. Registering the Tool in OpenWebUI
        5. 4. More Examples: Using MCP Tools to Query Ambari Cluster
      2. 💡 Tool Example Queries
        1. 🔍 Cluster & Service Management
        2. ⚙️ Service Operations
        3. 📊 Operations & Monitoring
        4. 🖥️ Host Management
        5. 🔧 Configuration Management
        6. 👥 User Management
        7. 🚨 Alert Management
        8. 📚 System Information
      3. 🐛 Usage & Configuration
        1. CLI Arguments
        2. Environment Variables
        3. Environment Setup
      4. 🔐 Security & Authentication
        1. Bearer Token Authentication
        2. Method 1: Local MCP (transport="stdio")
        3. Method 2: Remote MCP (transport="streamable-http")
      5. Example usage: Claude-Desktop
        1. 🎯 Core Features & Capabilities
          1. Service Operations
          2. Configuration Management
          3. Monitoring & Alerting
          4. Administration
        2. Available MCP Tools
          1. Cluster Management
          2. Service Management
          3. Configuration Tools
          4. Host Management
          5. User Management
          6. Alert Management
        3. 🤝 Contributing & Support
          1. How to Contribute
          2. Technologies Used
          3. Dev Env.
        4. ❓ Frequently Asked Questions
          1. Q: What Ambari versions are supported?
          2. Q: Can I use this with cloud-managed Hadoop clusters?
          3. Q: How do I troubleshoot connection issues?
          4. Q: How does this compare to Ambari Web UI?
        5. Contributing
          1. 📄 License

            Related MCP Servers

            • A
              security
              A
              license
              A
              quality
              A MCP server connecting to a managed index on LlamaCloud. This is a TypeScript-based MCP server that implements a connection to a managed index on LlamaCloud.
              Last updated -
              15
              81
              MIT License
              • Apple
            • -
              security
              F
              license
              -
              quality
              An MCP server that allows AI assistants to access AWS CloudWatch logs by listing log groups and reading log entries.
              Last updated -
              25
            • -
              security
              -
              license
              -
              quality
              Server that connects MCP (Multi-Capability Platform) with OpenHAB REST API, allowing MCP to interact with OpenHAB items through operations like getItemState and sendCommand.
              Last updated -
            • -
              security
              F
              license
              -
              quality
              A local CLI & API for MCP management that allows users to download, install, manage, and interact with MCPs from GitHub, featuring process state management, port allocation, and HTTP API routes.
              Last updated -
              78
              • Apple
              • Linux

            View all related MCP servers

            MCP directory API

            We provide all the information about MCP servers via our MCP API.

            curl -X GET 'https://glama.ai/api/mcp/v1/servers/call518/MCP-Ambari-API'

            If you have feedback or need assistance with the MCP directory API, please join our Discord server