Ansible Automation Platform Operations
MCP Server
- Repository: sibilleb/AAP-Enterprise-MCP-Server
- Transport: stdio (Python via
uv run ansible.py)
- Install:
git clone + uv sync (or pip install -e .)
- Requires:
AAP_URL, AAP_TOKEN
Available Tools (45)
Inventory & Host Management (11)
| Tool |
What It Does |
list_inventories |
Retrieve all inventories from AAP |
get_inventory |
Fetch details for a specific inventory by ID |
create_inventory |
Create a new inventory with organization and configuration |
delete_inventory |
Remove an inventory from the platform |
list_hosts |
List all hosts within a specific inventory |
get_host_details |
Get comprehensive information about a host |
get_host_facts |
Obtain gathered facts for a host |
add_host_to_inventory |
Add a new host with optional variables |
update_host |
Modify host properties including variables and status |
delete_host |
Remove a host from inventory |
get_failed_hosts |
List hosts with active failures |
Group Management (6)
| Tool |
What It Does |
list_groups |
Show all groups in an inventory |
get_group_details |
Retrieve group information |
create_group |
Create a new group within an inventory |
add_host_to_group |
Associate a host with a group |
remove_host_from_group |
Disassociate a host from a group |
get_host_groups |
List all groups containing a host |
Job & Template Management (8)
| Tool |
What It Does |
list_job_templates |
List all available job templates |
get_job_template |
Get details for a specific job template |
create_job_template |
Create a new job template with playbook configuration |
run_job |
Execute a job template with optional extra variables |
list_jobs |
Show all jobs in the platform |
list_recent_jobs |
Filter jobs by timeframe |
job_status |
Check current status of a job |
job_logs |
Retrieve execution logs for a job |
Project Management (7)
| Tool |
What It Does |
list_projects |
List all projects |
get_project |
Get project details |
create_project |
Create a project with SCM configuration |
update_project |
Trigger an SCM sync |
list_project_updates |
Show all project update jobs |
get_project_update |
Get status of an update job |
get_project_update_logs |
Retrieve logs from an SCM sync |
Inventory Sources (6)
| Tool |
What It Does |
list_inventory_sources |
Show all dynamic inventory sources |
get_inventory_source |
Get details for a specific source |
create_inventory_source |
Create a dynamic inventory source |
update_inventory_source |
Modify an existing source |
delete_inventory_source |
Remove an inventory source |
sync_inventory_source |
Trigger a manual sync |
Ad-Hoc Commands (3)
| Tool |
What It Does |
run_adhoc_command |
Execute Ansible commands directly against hosts |
get_adhoc_command_status |
Check execution status |
get_adhoc_command_output |
Retrieve command output |
Galaxy Search (4)
| Tool |
What It Does |
search_galaxy_collections |
Search Ansible Galaxy for collections |
search_galaxy_roles |
Search Galaxy for roles |
get_collection_details |
Get comprehensive collection info |
get_role_details |
Get detailed role info |
Key Concepts
| Concept |
What It Means |
| AAP |
Ansible Automation Platform — Red Hat's enterprise automation controller |
| Inventory |
Collection of managed hosts organized by groups |
| Job Template |
Reusable playbook execution definition with parameters |
| Project |
SCM-backed collection of Ansible playbooks |
| Ad-Hoc Command |
One-off Ansible module execution against hosts |
| Inventory Source |
Dynamic inventory pulled from cloud/CMDB/external systems |
Workflow: Run a Playbook Against Inventory
- List inventories:
list_inventories — find the target inventory
- List hosts:
list_hosts — verify target hosts are present
- Find template:
list_job_templates — locate the playbook to run
- Execute:
run_job — launch the job template with extra vars if needed
- Monitor:
job_status — poll until completion
- Review:
job_logs — check execution output
- Report: Summarize success/failure per host
Workflow: Inventory Audit
- List inventories:
list_inventories — enumerate all inventories
- For each inventory:
list_hosts — count and list hosts
- Check failures:
get_failed_hosts — identify hosts with active failures
- Get facts:
get_host_facts — verify host data is current
- Cross-reference: Compare with NetBox or Nautobot source of truth
- Report: Inventory coverage, stale hosts, failed hosts
Workflow: Project SCM Sync
- List projects:
list_projects — find the project
- Sync:
update_project — trigger SCM pull
- Monitor:
get_project_update — check sync status
- Review logs:
get_project_update_logs — verify no errors
- Report: Sync success/failure, last commit pulled
Integration with Other Skills
| Skill |
How They Work Together |
aap-eda |
AAP job execution + EDA event-driven triggers |
aap-lint |
Validate playbooks before running them through AAP |
netbox-reconcile |
Cross-reference AAP inventories with NetBox DCIM |
nautobot-sot |
AAP inventory validation against Nautobot IPAM |
servicenow-change-workflow |
ServiceNow CR gating before AAP job execution |
github-ops |
Commit playbooks and inventory changes to Git |
pyats-health-check |
Device health verification before/after AAP automation |
gait-session-tracking |
Audit trail for all AAP operations |
Environment Variables
AAP_URL — AAP Controller API endpoint (e.g., https://aap.example.com/api/controller/v2)
AAP_TOKEN — AAP API token (Write scope)
Important Rules
- Job execution changes infrastructure — always verify the target inventory and template before running
- ServiceNow CR — gate job execution behind change requests in production
- Record in GAIT — log all AAP operations for audit trail
- SSL handling — self-signed certificates are automatically handled for lab environments
Failure Behavior
- If a tool call fails with an authentication or connection error, check that
AAP_TOKEN, AAP_URL are set and valid before assuming a data or device problem.
- On a tool error (timeout, unreachable host, malformed response), report the failure and its error message directly to the user rather than fabricating or guessing at results.
- Do not automatically retry a write/mutating operation after a failure — surface the error and get explicit confirmation before retrying, since a blind retry on a partially-applied change can leave state inconsistent.