π 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.
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.
- 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
apache-ambari
hadoop-cluster
mcp-server
cluster-automation
devops-tools
big-data
infrastructure-management
ai-automation
llm-tools
python-mcp
Note: The following instructions assume you are using the
streamable-http
mode for MCP Server.
- Ambari-3.0 Cluster
To set up a Ambari Demo cluster, follow the guide at: Install Ambari 3.0 with Docker
Start the MCP-Server
, MCPO
(MCP-Proxy for OpenAPI), and OpenWebUI
.
- Ensure Docker and Docker Compose are installed on your system.
- Clone this repository and navigate to its root directory.
- Set up environment configuration:
# Copy environment template and configure your settings cp .env.example .env # Edit .env with your Ambari cluster information
- 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
- 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
- logging in to OpenWebUI with an admin account
- go to "Settings" β "Tools" from the top menu.
- Enter the
ambari-api
Tool address (e.g.,http://localhost:8000/ambari-api
) to connect MCP Tools with your Ambari cluster.
Below is an example screenshot showing how to query the Ambari cluster using MCP Tools in OpenWebUI:
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
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
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
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
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
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
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
get_prompt_template
- "Show available prompt template sections."
- "Get tool usage guidelines."
- "Display example queries for reference."
- π Features: Template documentation, usage guidelines, section navigation
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
--type
(-t
): Transport type (stdio
orstreamable-http
) - Default:stdio
--host
: Host address for HTTP transport - Default:127.0.0.1
--port
(-p
): Port number for HTTP transport - Default:8080
Variable | Description | Default | Project Default |
---|---|---|---|
PYTHONPATH |
Python module search path for MCP server imports | - | /app/src |
MCP_LOG_LEVEL |
Server logging verbosity (DEBUG, INFO, WARNING, ERROR) | INFO |
INFO |
FASTMCP_TYPE |
MCP transport protocol (stdio for CLI, streamable-http for web) | stdio |
streamable-http |
FASTMCP_HOST |
HTTP server bind address (0.0.0.0 for all interfaces) | 127.0.0.1 |
0.0.0.0 |
FASTMCP_PORT |
HTTP server port for MCP communication | 8080 |
8080 |
AMBARI_HOST |
Ambari server hostname or IP address | 127.0.0.1 |
host.docker.internal |
AMBARI_PORT |
Ambari server port number | 8080 |
8080 |
AMBARI_USER |
Username for Ambari server authentication | admin |
admin |
AMBARI_PASS |
Password for Ambari server authentication | changeme!@34 |
admin |
AMBARI_CLUSTER_NAME |
Name of the target Ambari cluster | TEST-AMBARI |
TEST-AMBARI |
AMBARI_LOG_LEVEL |
Logging level for the MCP server (DEBUG, INFO, WARNING, ERROR) | INFO |
INFO |
DOCKER_EXTERNAL_PORT_OPENWEBUI |
Host port mapping for Open WebUI container | 8080 |
3001 |
DOCKER_EXTERNAL_PORT_MCP_SERVER |
Host port mapping for MCP server container | 8080 |
18001 |
DOCKER_EXTERNAL_PORT_MCPO_PROXY |
Host port mapping for MCPO proxy container | 8000 |
8001 |
MCP_SERVER_IMAGE_VERSION |
Docker image version for MCP server | latest |
1.0.0 |
MCPO_PROXY_IMAGE_VERSION |
Docker image version for MCPO proxy | latest |
1.0.2 |
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
# 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
{
"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",
"AMBARI_LOG_LEVEL": "INFO"
}
}
}
}
On MCP-Client Host:
{
"mcpServers": {
"ambari-api": {
"type": "streamable-http",
"url": "http://localhost:18001/mcp"
}
}
}
On MCP-Client Host:
{
"mcpServers": {
"ambari-api": {
"type": "streamable-http",
"url": "http://localhost:8080/mcp"
}
}
}
- 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
- 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
- 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
- User Management: Check cluster user administration
- Host Management: Node registration, component assignments, and health monitoring
This MCP server provides the following tools for Ambari cluster management:
get_cluster_info
- Retrieve basic cluster information and statusget_active_requests
- List currently active/running operationsget_request_status
- Check status and progress of specific requests
get_cluster_services
- List all services with their statusget_service_status
- Get detailed status of a specific serviceget_service_components
- List components and host assignments for a serviceget_service_details
- Get comprehensive service informationstart_service
- Start a specific servicestop_service
- Stop a specific servicerestart_service
- Restart a specific servicestart_all_services
- Start all services in the clusterstop_all_services
- Stop all services in the clusterrestart_all_services
- Restart all services in the cluster
dump_configurations
- Unified configuration tool (replacesget_configurations
,list_configurations
, and the former internaldump_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)
- Single type:
Breaking Change:
get_configurations
andlist_configurations
were removed in favor of this single, more capable tool.
list_hosts
- List all hosts in the clusterget_host_details
- Get detailed information for specific or all hosts (includes component states, hardware metrics, and service assignments)
list_users
- List all users in the Ambari system with their usernames and API linksget_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
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
- Current mode (
- π Report Bugs: GitHub Issues
- π‘ Request Features: Feature Requests
- π§ Submit PRs: Contributing Guidelines
- π Improve Docs: Help make documentation better
- 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
-
WSL2(networkingMode = bridged) + Docker-Desktop
.wslconfig
: tested withnetworkingMode = 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
A: Ambari 2.7+ is recommended. Earlier versions may work but are not officially tested.
A: Yes, as long as Ambari API endpoints are accessible, it works with on-premise, cloud, and hybrid deployments.
A: Check your AMBARI_HOST
, AMBARI_PORT
, and network connectivity. Enable debug logging with AMBARI_LOG_LEVEL=DEBUG
.
A: This provides programmatic access via AI/LLM commands, perfect for automation, scripting, and integration with modern DevOps workflows.
π€ 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 ambari_api.py
.
This project is licensed under the MIT License.