io.github.SurgeX-Labs/awx-mcp-server
平台与服务by surgex-labs
Control AWX/Ansible Tower through natural language - 49 tools for automation
什么是 io.github.SurgeX-Labs/awx-mcp-server?
Control AWX/Ansible Tower through natural language - 49 tools for automation
README
AWX MCP - AI-Powered AWX/AAP/Ansible Automation
Industry-standard MCP server for AWX/AAP/Ansible Tower automation
The AWX MCP Server connects AWX, Ansible Automation Platform (AAP), and Ansible Tower to AI tools, giving AI agents and assistants the ability to manage job templates, launch and monitor jobs, manage inventories and projects, and automate infrastructure workflows through natural language interactions.
Designed for developers who want to integrate their AI tools with AWX/AAP/Tower automation capabilities.
✨ Supports AWX (open source), AAP (Red Hat), and Ansible Tower (legacy) - same API, same features!
🎯 Usage Patterns
Primary: MCP Server (Industry Standard) ⭐ RECOMMENDED
<img src="https://img.shields.io/badge/MCP-Server-green?logo=python" alt="MCP Server"/>Standard MCP implementation using STDIO transport (like Postman MCP, Claude MCP)
Use Case: AI assistants (GitHub Copilot, Claude, Cursor) + AWX automation
Features:
- ✅ Works with any MCP client (Copilot, Claude, Cursor, Windsurf, etc.)
- ✅ Industry standard pattern (STDIO transport)
- ✅ Simple installation:
pip install git+https://github.com/USERNAME/awx-mcp-server.git - ✅ Portable across all MCP-compatible tools
- ✅ 18+ AWX operations (templates, jobs, projects, inventories)
Best For: AI-powered automation, natural language AWX control, any MCP client
Optional: VS Code Extension (UI Enhancement)
<img src="https://img.shields.io/badge/VS%20Code-Optional-007ACC?logo=visualstudiocode" alt="VS Code Extension"/>Optional UI features for VS Code users
Use Case: VS Code users who want additional UI (sidebar views, tree providers)
Features:
- ✅ Sidebar with AWX instances, jobs, metrics
- ✅ Tree view of AWX resources
- ✅ Configuration webview
- ✅ Auto-configures MCP (or respects manual setup)
Best For: VS Code users wanting rich UI alongside MCP functionality
🚀 Quick Start
Installation Methods
You have three ways to install and run the AWX MCP Server:
| Method | Best For | Installation |
|---|---|---|
| 📦 PyPI (pip) | Quick install, production use | pip install awx-mcp-server |
| 🔧 From Source | Customization, development, enterprise forks | Clone from GitHub, edit code |
| 🐳 Docker | Containerized deployment, teams | docker run surgexlabs/awx-mcp-server |
→ For customization and running from your own repository, see INSTALL_FROM_SOURCE.md
Option 1: PyPI Installation (Recommended for Quick Start)
Install from PyPI
# Install the MCP server
pip install awx-mcp-server
# Verify installation
python -m awx_mcp_server --version
Configure for VS Code
Edit VS Code settings.json (Ctrl+, → Search "chat.mcp"):
{
"mcpServers": {
"awx": {
"command": "python",
"args": ["-m", "awx_mcp_server"],
"env": {
"AWX_BASE_URL": "https://your-awx.com"
},
"secrets": {
"AWX_TOKEN": "your-awx-token"
}
}
}
}
Restart VS Code and the MCP server will be available in Copilot Chat.
Option 2: Install from Source (For Customization)
Perfect for: Forking, customization, enterprise deployments, contributing
Quick install:
# Clone the repository (or your fork)
git clone https://github.com/SurgeX-Labs/awx-mcp-server.git
cd awx-mcp-server/awx-mcp-python/server
# Create virtual environment
python -m venv venv
source venv/bin/activate # Windows: .\venv\Scripts\Activate.ps1
# Install in editable mode
pip install -e .
# Verify
python -m awx_mcp_server --version
VS Code configuration (use venv Python):
{
"mcpServers": {
"awx": {
"command": "/path/to/awx-mcp-server/awx-mcp-python/server/venv/bin/python",
"args": ["-m", "awx_mcp_server"],
"env": {
"AWX_BASE_URL": "https://your-awx.com"
},
"secrets": {
"AWX_TOKEN": "your-token"
}
}
}
}
📖 Full Guide: See INSTALL_FROM_SOURCE.md for:
- Forking the repository
- Making customizations to the code
- Running from your own fork/repository
- Building custom Docker images from source
- Enterprise deployment and CI/CD
Option 3: Remote Server Mode (Team/Enterprise)
Prerequisites
- Python 3.10+
- AWX/Ansible Tower instance
- (Optional) Docker or Kubernetes
Quick Start with Docker
cd awx-mcp-python/server
# Start server with monitoring stack
docker-compose up -d
# Server available at:
# - API: http://localhost:8000
# - Docs: http://localhost:8000/docs
# - Metrics: http://localhost:8000/prometheus-metrics
# - Prometheus: http://localhost:9090
# - Grafana: http://localhost:3000
Quick Start with Python
cd awx-mcp-python/server
# Install
pip install -e .
# Configure AWX environment (interactive)
awx-mcp-server env list
# Start server
awx-mcp-server start --host 0.0.0.0 --port 8000
CLI Usage
# List job templates
awx-mcp-server templates list
# Launch job
awx-mcp-server jobs launch "Deploy App" --extra-vars '{"env":"prod"}'
# Monitor job
awx-mcp-server jobs get 123
awx-mcp-server jobs stdout 123
# Manage projects
awx-mcp-server projects list
awx-mcp-server projects update "My Project"
# List inventories
awx-mcp-server inventories list
REST API Usage
# Create API key (first time)
curl -X POST http://localhost:8000/api/keys \
-H "Content-Type: application/json" \
-d '{"name": "chatbot", "tenant_id": "team1", "expires_days": 90}'
# List job templates
curl http://localhost:8000/api/v1/job-templates \
-H "X-API-Key: awx_mcp_xxxxx"
# Launch job
curl -X POST http://localhost:8000/api/v1/jobs/launch \
-H "X-API-Key: awx_mcp_xxxxx" \
-H "Content-Type: application/json" \
-d '{"template_name": "Deploy App", "extra_vars": {"env": "prod"}}'
# Get job status
curl http://localhost:8000/api/v1/jobs/123 \
-H "X-API-Key: awx_mcp_xxxxx"
# Get job output
curl http://localhost:8000/api/v1/jobs/123/stdout \
-H "X-API-Key: awx_mcp_xxxxx"
Kubernetes Deployment
cd server/deployment/helm
helm install awx-mcp-server . \
--set replicaCount=3 \
--set autoscaling.enabled=true \
--set taskPods.enabled=true
See: server/README.md for detailed guide
🎨 Integration Examples
Integrate with Custom Chatbot
import httpx
class AWXChatbot:
def __init__(self, api_key: str, base_url: str = "http://localhost:8000"):
self.api_key = api_key
self.base_url = base_url
self.headers = {"X-API-Key": api_key}
async def handle_message(self, user_message: str):
"""Process user message and call AWX API"""
if "list templates" in user_message.lower():
return await self.list_templates()
elif "launch" in user_message.lower():
template_name = self.extract_template_name(user_message)
return await self.launch_job(template_name)
elif "job status" in user_message.lower():
job_id = self.extract_job_id(user_message)
return await self.get_job(job_id)
async def list_templates(self):
async with httpx.AsyncClient() as client:
response = await client.get(
f"{self.base_url}/api/v1/job-templates",
headers=self.headers
)
return response.json()
async def launch_job(self, template_name: str, extra_vars: dict = None):
async with httpx.AsyncClient() as client:
response = await client.post(
f"{self.base_url}/api/v1/jobs/launch",
headers=self.headers,
json={"template_name": template_name, "extra_vars": extra_vars}
)
return response.json()
async def get_job(self, job_id: int):
async with httpx.AsyncClient() as client:
response = await client.get(
f"{self.base_url}/api/v1/jobs/{job_id}",
headers=self.headers
)
return response.json()
# Usage
chatbot = AWXChatbot(api_key="awx_mcp_xxxxx")
response = await chatbot.handle_message("list all job templates")
Integrate with Slack Bot
from slack_bolt.async_app import AsyncApp
import httpx
app = AsyncApp(token="xoxb-your-token")
awx_api_key = "awx_mcp_xxxxx"
awx_base_url = "http://localhost:8000"
@app.message("awx")
async def handle_awx_command(message, say):
text = message['text']
if "launch" in text:
# Extract template name from message
template = extract_template(text)
# Call AWX API
async with httpx.AsyncClient() as client:
response = await client.post(
f"{awx_base_url}/api/v1/jobs/launch",
headers={"X-API-Key": awx_api_key},
json={"template_name": template}
)
job = response.json()
await say(f"✅ Job launched! ID: {job['id']}, Status: {job['status']}")
🔧 Available AWX Operations
Both VS Code extension and web server support all 16 operations:
Environment Management
env_list- List all configured AWX environmentsenv_test- Test connection to AWX environmentenv_get_active- Get currently active environment
Job Templates
list_job_templates- List all job templates (with filtering)get_job_template- Get template details by name/ID
Jobs
list_jobs- List all jobs (filter by status, date)get_job- Get job details by IDjob_launch- Launch job from templatejob_cancel- Cancel running jobjob_stdout- Get job output/logsjob_events- Get job events (playbook tasks)
Projects
list_projects- List all projectsproject_update- Update project from SCM
Inventories
list_inventories- List all inventoriesget_inventory- Get inventory details
📦 Project Structure
awx-mcp-python/
├── vscode-extension/ # VS Code extension with GitHub Copilot
│ ├── src/ # Extension TypeScript source
│ ├── package.json # Extension manifest
│ ├── README.md # Extension guide
│ └── CHANGELOG.md
│
│
├── server/ # Standalone web server
│ ├── src/awx_mcp_server/
│ │ ├── cli.py # CLI commands (468 lines)
│ │ ├── http_server.py # FastAPI REST API
│ │ ├── mcp_server.py # MCP server integration
│ │ ├── monitoring.py # Prometheus metrics
│ │ ├── task_pods.py # Kubernetes task pods
│ │ ├── clients/ # AWX clients (self-contained)
│ │ ├── storage/ # Config & credentials
│ │ └── domain/ # Models & exceptions
│ ├── deployment/
│ │ ├── docker-compose.yml # Docker Compose stack
│ │ ├── Dockerfile # Container image
│ │ └── helm/ # Kubernetes Helm chart
│ ├── pyproject.toml
│ └── README.md
│
└── tests/ # Shared test suite
├── test_*.py
└── conftest.py
🏗️ Architecture
VS Code Extension Architecture
┌─────────────────┐
│ VS Code IDE │
│ │
│ ┌───────────┐ │ stdio ┌──────────────┐
│ │ GitHub │──┼────transport───▶│ MCP Server │
│ │ Copilot │ │ (local) │ (shared) │
│ │ Chat │◀─┼────────────────│ 16 Tools │
│ └───────────┘ │ └──────────────┘
│ │ │
│ ┌───────────┐ │ │
│ │ @awx Chat │ │ │
│ │Participant│ │ ▼
│ └───────────┘ │ ┌──────────────┐
└─────────────────┘ │ AWX │
│ Instance │
└──────────────┘
Flow:
- User types
@awx list templatesin Copilot Chat - Extension sends MCP request to local server via stdio
- MCP server calls AWX REST API
- Results returned to Copilot Chat
- AI formats response naturally
Web Server Architecture
┌──────────────┐ REST API ┌──────────────┐
│ Chatbot │────────────────────▶│ FastAPI │
│ /Custom App │ (HTTP/JSON) │ Server │
└──────────────┘ └──────────────┘
│
┌──────────────┐ REST API │
│ Slack Bot │────────────────────▶│
└──────────────┘ │
│
┌──────────────┐ CLI │
│ Terminal │────────────────────▶│
│ Scripts │ (commands) │
└──────────────┘ │
│
┌──────┴───────┐
│ │
│ Clients │
│ REST + CLI │
│ │
└──────┬───────┘
│
▼
┌──────────────┐
│ AWX │
│ Instance │
└──────────────┘
Flow:
- Client (chatbot/CLI) sends HTTP request with API key
- FastAPI server authenticates request
- Server calls AWX API via composite client
- Results returned as JSON
- Client formats for end user (Slack, terminal, etc.)
🔒 Security
VS Code Extension
- Credentials stored in VS Code secure storage
- Local server only (no network exposure)
- Environment-based isolation
Web Server
- API key authentication (SHA-256 hashed)
- Multi-tenant isolation
- Configurable key expiration
- HTTPS recommended for production
- Environment variables for secrets
🚢 Deployment Options
For VS Code Extension
- Install extension from .vsix file
- MCP server runs automatically when VS Code starts
- No additional infrastructure needed
For Web Server
Development
cd server
pip install -e .
awx-mcp-server start
Production - Docker
cd server
docker-compose up -d
Includes: Server, Prometheus, Grafana
Production - Kubernetes
cd server/deployment/helm
helm install awx-mcp-server . \
--set autoscaling.enabled=true \
--set taskPods.enabled=true \
--set ingress.enabled=true
Features:
- Horizontal Pod Autoscaling (HPA)
- Task pods (ephemeral Job per operation)
- Prometheus monitoring
- Ingress support
🛠️ Development
Prerequisites
- Python 3.10+
- Node.js 18+ (for VS Code extension)
- Docker (optional)
- Kubernetes cluster (optional)
Setup Development Environment
# Clone repository
git clone https://github.com/your-org/awx-mcp.git
cd awx-mcp/awx-mcp-python
# Install shared package (for VS Code extension)
cd shared
pip install -e ".[dev]"
# Install server
cd ../server
pip install -e ".[dev]"
# Install extension dependencies
cd ../vscode-extension
npm install
# Run tests
cd ../tests
pytest -v
Running Tests
# Server tests
cd server
pytest tests/ -v --cov
# Integration tests
cd tests
pytest test_mcp_integration.py -v
Building VS Code Extension
cd vscode-extension
npm run package
# Generates awx-mcp-*.vsix file
📊 Monitoring (Web Server)
Access monitoring dashboards:
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000 (admin/admin)
- Metrics Endpoint: http://localhost:8000/prometheus-metrics
Available Metrics
awx_mcp_requests_total- Total requests by tenant/endpointawx_mcp_request_duration_seconds- Request latencyawx_mcp_active_connections- Active connections per tenantawx_mcp_tool_calls_total- MCP tool invocationsawx_mcp_errors_total- Error count by type
📚 Documentation
Installation & Setup
- Install from PyPI - Quick install with
pip install awx-mcp-server - Install from Source - Fork, customize, and run from your own repository
- OS Compatibility - Windows, macOS, and Linux installation and configuration
Platform Support
- AAP Support Guide - Complete guide for Ansible Automation Platform, AWX, and Ansible Tower
Deployment Architectures
- Deployment Architecture - Single-user vs Team/Enterprise deployment options
- Remote Deployment Guide - Docker, Kubernetes, and cloud deployment
- Dual-Mode Quick Start - Quick reference for choosing deployment mode
Advanced Features (Planned)
- Vault Integration - HashiCorp Vault, AWS Secrets Manager, Azure Key Vault support (v2.0.0)
- Implementation Status - Current features and roadmap
Additional Resources
- MCP Copilot Setup - VS Code MCP configuration
- Quick Reference - Common commands and examples
- AWX MCP Query Reference - Natural language query examples
🤝 Contributing
We welcome contributions! Please:
- Fork the repository
- Create a feature branch
- Make your changes with tests
- Submit a pull request
Code Style
- Python: Follow PEP 8, use type hints
- TypeScript: Follow ESLint rules
- Write tests for new features
- Update documentation
📄 License
MIT License - see LICENSE file
🆘 Support
- Issues: https://github.com/your-org/awx-mcp/issues
- Discussions: https://github.com/your-org/awx-mcp/discussions
- Documentation: See README files in subdirectories
🎉 Quick Reference
VS Code Extension Commands
Ctrl+Shift+P→AWX: Configure EnvironmentCtrl+Shift+P→AWX: Test ConnectionCtrl+Shift+P→AWX: Switch Environment- In Copilot Chat:
@awx <your command>
Web Server CLI Commands
awx-mcp-server start # Start HTTP server
awx-mcp-server env list # List environments
awx-mcp-server templates list # List templates
awx-mcp-server jobs launch "Template" # Launch job
awx-mcp-server jobs get 123 # Get job details
awx-mcp-server projects list # List projects
awx-mcp-server inventories list # List inventories
Web Server API Endpoints
POST /api/keys # Create API key
GET /api/v1/environments # List environments
GET /api/v1/job-templates # List templates
POST /api/v1/jobs/launch # Launch job
GET /api/v1/jobs/{id} # Get job
GET /api/v1/jobs/{id}/stdout # Get output
GET /api/v1/projects # List projects
GET /api/v1/inventories # List inventories
GET /health # Health check
GET /prometheus-metrics # Metrics
GET /docs # API documentation
Made with ❤️ for AWX automation and AI integration
常见问题
io.github.SurgeX-Labs/awx-mcp-server 是什么?
Control AWX/Ansible Tower through natural language - 49 tools for automation
相关 Skills
MCP构建
by anthropics
聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。
✎ 想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。
Slack动图
by anthropics
面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。
✎ 帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。
MCP服务构建器
by alirezarezvani
从 OpenAPI 一键生成 Python/TypeScript MCP server 脚手架,并校验 tool schema、命名规范与版本兼容性,适合把现有 REST API 快速发布成可生产演进的 MCP 服务。
✎ 帮你快速搭建 MCP 服务与后端 API,脚手架完善、扩展顺手,尤其适合想高效验证服务能力的开发者。
相关 MCP Server
Slack 消息
编辑精选by Anthropic
Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。
✎ 这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。
by netdata
io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。
✎ 这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。
by d4vinci
Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。
✎ 这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。