AAP MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | Host for HTTP server when using streamable-http transport | 0.0.0.0 |
| MCP_PORT | No | Port for HTTP server when using streamable-http transport | 8000 |
| MCP_TRANSPORT | No | Transport mode: 'stdio' or 'streamable-http' | stdio |
| AAP_VERIFY_SSL | No | Whether to verify SSL certificates (set to 'true' or 'false') | false |
| AAP_OAUTH_TOKEN | Yes | OAuth token for authentication (required) | |
| AAP_API_BASE_PATH | No | Base path for the AAP API (e.g., /api/controller/v2) | /api/v2 |
| AAP_CONTROLLER_URL | Yes | URL of the Ansible Automation Platform controller (required) | |
| AAP_MCP_READ_ONLY_MODE | No | Enable read-only mode to block all mutations | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| aap_list_organizationsA | List all organizations in Ansible Automation Platform. Returns a paginated list of organizations with their IDs, names, descriptions, and member counts. Args: params (ListOrgsInput): - page (int): Page number, default 1 - page_size (int): Results per page, default 20 - search (Optional[str]): Filter by name substring Returns: str: JSON with keys: count, page, page_size, results (list of orgs) |
| aap_get_organizationA | Get details of a specific AAP organization by ID. Args: params (GetOrgInput): - org_id (int): Organization ID Returns: str: JSON with organization details including id, name, description, max_hosts, custom_virtualenv, created, modified. |
| aap_create_organizationA | Create a new organization in Ansible Automation Platform. Args: params (CreateOrgInput): - name (str): Organization name - description (str): Optional description - max_hosts (int): Max hosts (0 = unlimited) Returns: str: JSON with created organization details including id. |
| aap_update_organizationA | Update an existing AAP organization. Only fields provided will be updated (PATCH semantics). Args: params (UpdateOrgInput): - org_id (int): Organization ID - name (Optional[str]): New name - description (Optional[str]): New description - max_hosts (Optional[int]): New max hosts limit Returns: str: JSON with updated organization details. |
| aap_delete_organizationA | Delete an AAP organization. DESTRUCTIVE - requires confirmation token. Call once without confirmation_token to get a token, then call again with the token to confirm deletion. Args: params (DeleteOrgInput): - org_id (int): Organization ID - confirmation_token (Optional[str]): Token from first call Returns: str: Confirmation request message, or success/error JSON. |
| aap_list_usersA | List AAP users. Can filter for superusers/admins. Example: "List users with admin privileges" → set is_superuser=True Args: params (ListUsersInput): - page, page_size: Pagination - search (Optional[str]): Username/email substring - is_superuser (Optional[bool]): Filter superusers Returns: str: JSON with user list. |
| aap_create_userA | Create a new AAP user. Args: params (CreateUserInput): User details. Returns: str: JSON with created user id and username. |
| aap_assign_roleA | Assign an RBAC role to an AAP user. Args: params (AssignRoleInput): - user_id (int): User ID - role_id (int): Role ID (from /api/v2/roles/ or resource role lists) Returns: str: JSON confirmation. |
| aap_revoke_roleA | Revoke an RBAC role from an AAP user. Args: params (RevokeRoleInput): - user_id (int): User ID - role_id (int): Role ID to revoke Returns: str: JSON confirmation. |
| aap_list_teamsC | List AAP teams. Args: params (ListTeamsInput): Pagination and filter. Returns: str: JSON with team list. |
| aap_create_teamA | Create a new AAP team within an organization. Args: params (CreateTeamInput): Team name, organization_id, description. Returns: str: JSON with created team id and name. |
| aap_add_user_to_teamA | Add a user to an AAP team. Args: params (AddUserToTeamInput): - team_id (int): Team ID - user_id (int): User ID to add Returns: str: JSON confirmation. |
| aap_remove_user_from_teamB | Remove a user from an AAP team. Args: params (RemoveUserFromTeamInput): - team_id (int): Team ID - user_id (int): User ID to remove Returns: str: JSON confirmation. |
| aap_get_userA | Get details of a specific AAP user by ID. Args: params (GetUserInput): - user_id (int): User ID Returns: str: JSON with user details. |
| aap_update_userA | Update an existing AAP user (PATCH). Args: params (UpdateUserInput): Fields to update. Returns: str: JSON with updated user id and username. |
| aap_delete_userA | Delete an AAP user. DESTRUCTIVE - requires confirmation. Args: params (DeleteUserInput): - user_id (int): User ID - confirmation_token (Optional[str]): Token from first call |
| aap_update_teamA | Update an existing AAP team (PATCH). Args: params (UpdateTeamInput): Fields to update (name, description). Returns: str: JSON with updated team id and name. |
| aap_delete_teamA | Delete an AAP team. DESTRUCTIVE - requires confirmation. Args: params (DeleteTeamInput): - team_id (int): Team ID - confirmation_token (Optional[str]): Token from first call |
| aap_list_projectsA | List AAP projects (SCM-backed playbook repositories). Args: params (ListProjectsInput): Pagination and filter options. Returns: str: JSON with count and project list. Each entry has id, name, scm_type, scm_url, status, last_updated. |
| aap_get_projectA | Get full details of an AAP project. Args: params (GetProjectInput): - project_id (int): Project ID Returns: str: JSON with full project details. |
| aap_create_projectA | Create a new AAP project from a Git/SCM repository. Example: "Create a new project called redis-automation from GitHub" Args: params (CreateProjectInput): Project configuration. Returns: str: JSON with created project id, name, and initial status. |
| aap_sync_projectB | Trigger an SCM sync (git pull) for an AAP project. Args: params (SyncProjectInput): - project_id (int): Project ID to sync Returns: str: JSON with project_update_id for status tracking. |
| aap_get_project_sync_statusA | Get the status of an ongoing or completed project SCM sync. Args: params (GetSyncStatusInput): - update_id (int): Project update ID Returns: str: JSON with status, elapsed time, and output preview. |
| aap_delete_projectA | Delete an AAP project. DESTRUCTIVE - requires confirmation. Args: params (DeleteProjectInput): - project_id (int): Project ID - confirmation_token (Optional[str]): Token from first call Returns: str: Confirmation prompt or success JSON. |
| aap_update_projectB | Update an AAP project (PATCH). Args: params (UpdateProjectInput): Fields to update. Returns: str: JSON with updated project id and name. |
| aap_list_inventoriesA | List AAP inventories. Args: params (ListInventoriesInput): Pagination and filter options. Returns: str: JSON with count and inventory list (id, name, description, total_hosts, groups_with_active_failures). |
| aap_create_inventoryA | Create a new AAP inventory. Example: "Create an inventory called AWS-Production" Args: params (CreateInventoryInput): Inventory configuration. Returns: str: JSON with created inventory id and name. |
| aap_list_hostsA | List hosts in an AAP inventory. Args: params (ListHostsInput): Pagination and filter options. Returns: str: JSON with host list including id, name, inventory, enabled, variables. |
| aap_create_hostB | Add a host to an AAP inventory. Example: "Add host web01.example.com to the Production inventory" Args: params (CreateHostInput): Host configuration. Returns: str: JSON with created host id and name. |
| aap_create_groupA | Create a host group inside an AAP inventory. Args: params (CreateGroupInput): Group configuration. Returns: str: JSON with created group id and name. |
| aap_add_host_to_groupA | Add an existing host to a group within an inventory. Args: params (AddHostToGroupInput): - group_id (int): Target group ID - host_id (int): Host ID to add Returns: str: JSON confirmation. |
| aap_remove_host_from_groupA | Remove a host from a group (disassociate, not delete the host). Args: params (RemoveHostFromGroupInput): - group_id (int): Group ID - host_id (int): Host ID to remove Returns: str: JSON confirmation. |
| aap_delete_inventoryA | Delete an AAP inventory. DESTRUCTIVE - requires confirmation. Args: params (DeleteInventoryInput): - inventory_id (int): Inventory ID - confirmation_token (Optional[str]): Token from first call Returns: str: Confirmation prompt or success JSON. |
| aap_update_inventoryA | Update an existing AAP inventory (PATCH). Args: params (UpdateInventoryInput): Fields to update. Returns: str: JSON with updated inventory id and name. |
| aap_update_hostB | Update an existing AAP host (PATCH). Args: params (UpdateHostInput): Fields to update. Returns: str: JSON with updated host id and name. |
| aap_delete_hostA | Delete a host from an AAP inventory. DESTRUCTIVE - requires confirmation. Args: params (DeleteHostInput): - host_id (int): Host ID - confirmation_token (Optional[str]): Token from first call |
| aap_update_groupB | Update an existing AAP inventory group (PATCH). Args: params (UpdateGroupInput): Fields to update. Returns: str: JSON with updated group id and name. |
| aap_delete_groupA | Delete a host group from an AAP inventory. DESTRUCTIVE - requires confirmation. Args: params (DeleteGroupInput): - group_id (int): Group ID - confirmation_token (Optional[str]): Token from first call |
| aap_list_credentialsA | List AAP credentials. Secrets are never returned by the API. Args: params (ListCredsInput): Pagination and filter options. Returns: str: JSON with credential list (id, name, kind, type_name, organization). Note: secret fields are always masked by AAP. |
| aap_get_credentialA | Get details of an AAP credential (secrets masked by AAP). Args: params (GetCredInput): - credential_id (int): Credential ID Returns: str: JSON with credential metadata. Secret fields shown as '$encrypted$'. |
| aap_create_credentialA | Create a new AAP credential. Use aap_list_credential_types first to find the correct type ID and understand required inputs schema for that type. Args: params (CreateCredInput): - name (str): Credential name - credential_type_id (int): Type ID - inputs (dict): Type-specific inputs (username, password, ssh_key_data, etc.) - organization_id (Optional[int]): Owner org - description (str): Optional description Returns: str: JSON with created credential id and name. |
| aap_update_credentialB | Update an existing AAP credential (PATCH). Args: params (UpdateCredInput): Fields to update. Returns: str: JSON with updated credential id and name. |
| aap_delete_credentialA | Delete an AAP credential. DESTRUCTIVE - requires confirmation. Args: params (DeleteCredInput): - credential_id (int): Credential ID - confirmation_token (Optional[str]): Token from first call Returns: str: Confirmation prompt or success JSON. |
| aap_list_credential_typesA | List available AAP credential types (SSH, Vault, AWS, Azure, etc.). Use the returned id when calling aap_create_credential. Args: params (ListCredTypesInput): - managed (Optional[bool]): Filter built-in vs custom types Returns: str: JSON with credential type list including id, name, kind, and injectors schema. |
| aap_create_credential_typeA | Create a custom AAP credential type with custom fields and injectors. Args: params (CreateCredTypeInput): - name (str): Type name - kind (str): 'cloud', 'net', or 'ssh' - inputs (dict): Field schema definition - injectors (dict): Environment/extra_vars injection mapping Returns: str: JSON with created credential type id and name. |
| aap_list_execution_environmentsA | List AAP execution environments (container images for job execution). Returns: str: JSON with EE list including id, name, image, and managed status. |
| aap_create_execution_environmentA | Create an AAP execution environment referencing a container image. Args: params (CreateEEInput): EE configuration. Returns: str: JSON with created EE id and name. |
| aap_update_execution_environmentB | Update an existing AAP execution environment (PATCH). Args: params (UpdateEEInput): Fields to update. |
| aap_delete_execution_environmentA | Delete an AAP execution environment. DESTRUCTIVE - requires confirmation. |
| aap_list_job_templatesA | List AAP job templates with optional filtering. Args: params (ListJTInput): - page (int): Page number - page_size (int): Results per page - search (Optional[str]): Name substring filter - organization (Optional[int]): Filter by org ID - project (Optional[int]): Filter by project ID Returns: str: JSON with count and results list. Each result has: id, name, description, project, inventory, playbook, ask_variables_on_launch, last_job_status, last_job_run |
| aap_get_job_templateA | Get full details of an AAP job template. Args: params (GetJTInput): - template_id (int): Job template ID Returns: str: JSON with full template details including credentials, labels, survey spec, extra_vars, verbosity, become_enabled, etc. |
| aap_create_job_templateA | Create a new AAP job template. Example: Create a job template for Apache installation using a project and inventory, with become enabled and check mode disabled. Args: params (CreateJTInput): Template configuration. See field descriptions. Returns: str: JSON with created template id, name, and launch URL. |
| aap_launch_job_templateA | Launch an AAP job template and return the job ID. Example: "Launch the Redis production workflow" or "Run the Apache installation template on web01.example.com" Args: params (LaunchJTInput): - template_id (int): Job template ID - extra_vars (Optional[str]): Variables as JSON/YAML - inventory_id (Optional[int]): Override inventory - limit (Optional[str]): Host limit pattern - tags (Optional[str]): Ansible tags - skip_tags (Optional[str]): Tags to skip - verbosity (Optional[int]): Verbosity level - diff_mode (Optional[bool]): Show diffs Returns: str: JSON with job id, status, url, and monitoring instructions. |
| aap_relaunch_jobA | Relaunch a completed or failed AAP job. Args: params (RelaunchJobInput): - job_id (int): Job ID to relaunch - hosts (str): 'all' or 'failed' (retry only failed hosts) Returns: str: JSON with new job_id and status. |
| aap_cancel_jobA | Cancel a running AAP job. Requires confirmation. Args: params (CancelJobInput): - job_id (int): Job ID to cancel - confirmation_token (Optional[str]): Token from first call Returns: str: Confirmation prompt or success JSON. |
| aap_delete_job_templateA | Delete an AAP job template. DESTRUCTIVE - requires confirmation. Args: params (DeleteJTInput): - template_id (int): Template ID to delete - confirmation_token (Optional[str]): Token from first call Returns: str: Confirmation prompt or success JSON. |
| aap_copy_job_templateA | Copy an existing job template with a new name. Args: params (CopyJTInput): - template_id (int): Source template ID - name (str): Name for the copy Returns: str: JSON with new template id and name. |
| aap_update_job_templateA | Update an existing AAP job template (PATCH). Only fields provided will be changed. Args: params (UpdateJTInput): Fields to update. Returns: str: JSON with updated template id and name. |
| aap_list_workflow_templatesA | List AAP workflow job templates. Args: params (ListWFTInput): Pagination and filter. Returns: str: JSON with count and workflow template list. |
| aap_get_workflow_templateA | Get full details of an AAP workflow template including node structure. Args: params (GetWFTInput): - workflow_id (int): Workflow template ID Returns: str: JSON with workflow details and node count. |
| aap_create_workflow_templateA | Create a new AAP workflow template. Example: "Create a workflow that provisions EC2 and configures Apache" Note: After creation, use the AAP UI or API to add workflow nodes. Args: params (CreateWFTInput): Workflow template configuration. Returns: str: JSON with created workflow id and name. |
| aap_launch_workflowA | Launch an AAP workflow template. Example: "Launch the Redis production workflow" Args: params (LaunchWorkflowInput): - workflow_id (int): Workflow template ID - extra_vars (Optional[str]): Variables to pass - limit (Optional[str]): Host limit Returns: str: JSON with workflow job id, status, and monitoring tip. |
| aap_get_workflow_statusA | Get status of a running or completed workflow job including node results. Args: params (GetWorkflowStatusInput): - workflow_job_id (int): Workflow job ID Returns: str: JSON with workflow status, elapsed time, and per-node results. |
| aap_delete_workflow_templateA | Delete an AAP workflow template. DESTRUCTIVE - requires confirmation. Args: params (DeleteWFTInput): - workflow_id (int): Workflow template ID - confirmation_token (Optional[str]): Token from first call Returns: str: Confirmation prompt or success JSON. |
| aap_update_workflow_templateC | Update an existing AAP workflow template (PATCH). Args: params (UpdateWFTInput): Fields to update. Returns: str: JSON with updated workflow id and name. |
| aap_list_schedulesA | List AAP schedules for jobs and workflows. Args: params (ListSchedulesInput): Pagination and filter options. Returns: str: JSON with schedule list including rrule, next_run, and linked template. |
| aap_create_scheduleB | Create a schedule for an AAP job template or workflow. Args: params (CreateScheduleInput): - name (str): Schedule name - unified_job_template_id (int): Template ID to schedule - rrule (str): RFC 5545 recurrence rule string - enabled (bool): Activate the schedule immediately - extra_vars (str): Variables for each scheduled run Returns: str: JSON with created schedule id, name, and next_run. |
| aap_update_scheduleB | Update an existing AAP schedule (PATCH). Args: params (UpdateScheduleInput): Fields to update. Returns: str: JSON with updated schedule id, name, next_run. |
| aap_delete_scheduleA | Delete an AAP schedule. DESTRUCTIVE - requires confirmation. Args: params (DeleteScheduleInput): - schedule_id (int): Schedule ID - confirmation_token (Optional[str]): Token from first call |
| aap_list_collectionsA | List Ansible collections in Automation Hub. Note: Requires Automation Hub API access at /api/automation-hub/v3/ Args: params (ListCollectionsInput): Pagination and filter. Returns: str: JSON with collection list. |
| aap_get_controller_healthA | Check AAP Controller health status (ping endpoint). Returns: str: JSON with ha (bool), version, active_node, install_uuid, and instance statuses. |
| aap_get_cluster_statusA | Get AAP cluster node status, capacity, and health summary. Returns: str: JSON with list of instances and their capacity/health. |
| aap_get_license_infoA | Get AAP subscription and license details. Returns: str: JSON with license type, expiry, host count, and validity status. |
| aap_get_instance_capacityA | Get capacity and workload details for a specific AAP controller node. Args: params (GetInstanceInput): - instance_id (int): Instance ID Returns: str: JSON with capacity, consumed capacity, running jobs. |
| aap_list_instancesB | List all AAP controller and execution node instances. Returns: str: JSON with list of instances. |
| aap_get_job_outputA | Fetch stdout/stderr output from an AAP job run. Useful for troubleshooting failures or reviewing what a job did. Args: params (GetJobOutputInput): - job_id (int): Job ID - format (str): 'txt' or 'json' - max_lines (int): Max output lines (default 200) Returns: str: Job output text or JSON with status and truncated output. |
| aap_get_job_eventsA | Get structured events from an AAP job (tasks, roles, failures). More granular than stdout - shows individual task results per host. Args: params (GetJobEventsInput): - job_id (int): Job ID - event_type (Optional[str]): Filter by event type - page/page_size: Pagination Returns: str: JSON with event list including host, task, result details. |
| aap_get_failed_jobsA | List failed AAP jobs within the last N hours. Example: "Show failed jobs from the last 24 hours" Args: params (GetFailedJobsInput): - hours (int): Look-back window in hours (default 24) - limit (int): Max results (default 20) - job_template (Optional[str]): Filter by template name Returns: str: JSON with list of failed jobs including id, name, started, finished, elapsed, and template name. |
| aap_list_running_jobsA | List all currently running jobs in AAP. Args: params (ListRunningJobsInput): - include_workflow_jobs (bool): Also show running workflow jobs Returns: str: JSON with list of running jobs. |
| aap_get_recent_activityB | Get recent AAP activity stream (audit trail of changes). Args: params (GetActivityInput): - limit (int): Number of events to return - operation (Optional[str]): Filter by CRUD operation - object_type (Optional[str]): Filter by resource type - username (Optional[str]): Filter by actor username Returns: str: JSON with activity events. |
| aap_get_audit_logsA | Get AAP audit logs (alias for activity stream with delete/create focus). Args: params (GetAuditLogsInput): - limit (int): Number of log entries - username (Optional[str]): Filter by actor Returns: str: JSON with audit log entries. |
| aap_export_projectA | Export an AAP project as Configuration-as-Code (infra.aap_configuration format). Args: params (ExportProjectInput): - project_id (int): Project ID - format (str): 'yaml' or 'json' Returns: str: YAML/JSON suitable for aap_configuration collection playbooks. |
| aap_export_job_templateA | Export a job template as Configuration-as-Code YAML. Args: params (ExportJobTemplateInput): - template_id (int): Template ID - format (str): 'yaml' or 'json' Returns: str: YAML compatible with infra.aap_configuration.controller_job_templates. |
| aap_export_workflowA | Export a workflow template as Configuration-as-Code YAML. Args: params (ExportWorkflowInput): - workflow_id (int): Workflow template ID - format (str): 'yaml' or 'json' Returns: str: YAML compatible with infra.aap_configuration.controller_workflows. |
| aap_export_inventoryA | Export an AAP inventory as Configuration-as-Code YAML. Args: params (ExportInventoryInput): - inventory_id (int): Inventory ID - include_hosts (bool): Include host entries - format (str): 'yaml' or 'json' Returns: str: YAML for infra.aap_configuration.controller_inventories. |
| aap_export_all_resourcesA | Export all AAP resources (projects, inventories, job templates, workflows) as Configuration-as-Code. Example: "Export all job templates as code" This produces a single YAML document compatible with the infra.aap_configuration Ansible collection. Args: params (ExportAllInput): - organization_id (Optional[int]): Scope exports to one org - format (str): 'yaml' or 'json' Returns: str: Combined YAML/JSON export of all resources. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| aap_deploy_project | Prompt to create a project and set up a job template from GitHub. |
| aap_troubleshoot_failures | Prompt to investigate failed jobs and summarize root causes. |
| aap_cluster_health_check | Prompt for a comprehensive AAP cluster health report. |
| aap_export_as_code | Prompt to export all AAP resources as Configuration-as-Code. |
| aap_new_inventory_setup | Prompt to create and populate a new inventory. |
| aap_launch_and_monitor | Prompt to find, launch, and monitor a job template. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_api_map | Complete MCP Tool → AAP REST API mapping reference. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/srinivassrinu842/aap-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server