MCP Ambari API
Model Context Protocol (MCP) server for Apache Ambari API integration. This project provides tools for managing Hadoop clusters, including service operations, configuration management, status monitoring, and request tracking.
Note: In order to minimize risk, the current release operates in read-only mode (querying cluster state, alerts, configurations). Any mutating operations (service start/stop/restart, configuration updates) are currently on hold and will be enabled in a future version.
- Ambari API Documents
Example Query - Cluster Info/Status
Usages
This MCP server supports two connection modes: stdio (traditional) and streamable-http (Docker-based). The transport mode is automatically determined by the MCP_SERVER_PORT
environment variable.
Using this is very simple and straightforward. If you already have an MCP Tools environment running, just add the following configuration to your mcp-config.json
file:
Method 1: Traditional stdio Mode (Local Installation)
{
"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"
}
}
}
}
Method 2: Docker streamable-http Mode
{
"mcpServers": {
"ambari-api": {
"type": "streamable-http",
"url": "http://host.docker.internal:18001/mcp"
}
}
}
Transport Selection Logic:
- stdio mode: When
MCP_SERVER_PORT
environment variable is NOT set - streamable-http mode: When
MCP_SERVER_PORT
environment variable is set
Features
- Manage Hadoop services (start, stop, restart)
- Monitor service and cluster status
- Unified configuration introspection (single type or bulk with filtering / summarization)
- Track request progress (request IDs surfaced for all operations)
- Manage cluster users and access permissions
Available MCP Tools
This MCP server provides the following tools for Ambari cluster management:
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
Service Management
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
Configuration Management
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.
Host Management
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)
User Management
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
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
- Current mode (
QuickStart (Demo - streamable-http): Running OpenWebUI and MCP-Ambari-API with Docker
Tested Env.
- WSL2 Linux on Windows11 (networkingMode = bridged)
- 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
"PYTHONPATH": "/app/src",
"AMBARI_HOST": "host.docker.internal",
"AMBARI_PORT": "8080",
"AMBARI_USER": "admin",
"AMBARI_PASS": "admin",
"AMBARI_CLUSTER_NAME": "TEST-AMBARI",
"AMBARI_LOG_LEVEL": "INFO"
(NOTE) Make sure these values match your Ambari cluster setup.
2. MCP Tools Environment Setup
- Ensure Docker and Docker Compose are installed on your system.
- Clone this repository and navigate to its root directory.
- Check and update
docker-compose.yml
. - Start the OpenWebUI and MCPO-Proxy environment:
docker-compose up -d
- OpenWebUI will be available at the port specified in your
docker-compose.yml
(default: 3000 or as configured). You can access OpenWebUI at: (e.g.) http://localhost:3000 - The MCPO-Proxy will be accessible for API requests and cluster management, and its port is also specified in your
docker-compose.yml
(default: 8000 or as configured). - The list of MCP tool features provided by
src/mcp_ambari_api/ambari_api.py
can be found in the MCPO API Docs: (e.g.) http://localhost:8000/ambari-api/docs
4. Registering the Ambari-API MCP Tool in OpenWebUI
After logging in to OpenWebUI with an admin account, go to "Settings" โ "Tools" from the top menu.Here, enter the Ambari-API address (e.g., http://localhost:8000/ambari-api
) to connect MCP Tools with your Ambari cluster.
5. 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 Query - Restart HDFS Service
Roadmap
โ : Implemented โฌ: Planned / Useful (from Ambari API v1 docs)
- Cluster information & status (
clusters.md
,clusters-cluster.md
,cluster-resources.md
) - Service list & status (
services.md
,services-service.md
,service-resources.md
) - Start/Stop/Restart services (
update-service.md
,update-services.md
,services-service.md
) - Cluster configuration (get & update) (
configuration.md
,config-groups.md
) - Request & task tracking (
requests.md
,request-resources.md
,tasks.md
,task-resources.md
) - Service component/host information (
components.md
,components-component.md
,component-resources.md
,hosts.md
,hosts-host.md
,host-resources.md
,host-components.md
,host-component.md
) - Host/HostComponent detailed management (
host-components.md
,host-component.md
,hosts-host.md
) - User management (
user-*.md
) - Permission management (
permission-*.md
) - View management (
view-resources.md
) - Alert definitions & dispatching (
alert-definitions.md
,alert-dispatching.md
,alerts.md
) - Authentication source management (
authentication-source-*.md
) - Config group management (
config-groups.md
) - Credential management (
credential-*.md
) - Repository/Stack version management (
repository-version-resources.md
,stack-version-resources.md
)
Only the most practical and useful features are selected. Contributions and suggestions are welcome!
License
This project is licensed under the MIT License.