MCP Ansible自动化平台服务器
一个非常基本和简单的模型上下文协议(MCP)服务器,通过API提供与Ansible自动化平台(AAP)的集成。此服务器允许大型语言模型与AAP交互,以提取可用模板并启动具有自定义参数的Ansible作业模板。这只是一个演示,而不是完整的MCP服务器功能,您可以随意使用此代码。
Demo of MCP Ansible Automation Platform Server
特性
- 模板发现:从已配置的AAP项目中提取可用作业模板
- 作业启动:启动带有自定义额外变量和参数的Ansible作业模板
- 作业监控:检查作业状态并检索作业输出/日志
- 连接测试:验证AAP连接和身份验证
- 错误处理:具有重试逻辑和详细错误消息的强大错误处理
先决条件
- Python 3.8+
- 访问Ansible自动化平台实例
- 具有适当权限的AAP API访问令牌
AAP代币生成
安装
- 克隆此存储库
- 安装依赖项:
uv pip install -r requirements.txt- 配置环境变量:
cp env_example .env
# Edit .env with your AAP configuration配置
创建一个 .env 项目根目录中的文件,包含以下变量:
# Ansible Automation Platform Configuration
AAP_URL=https://your-aap-instance.com
AAP_TOKEN=your-access-token-here
AAP_PROJECT_ID=your-project-id
AAP_VERIFY_SSL=True
# Optional settings
AAP_TIMEOUT=30
AAP_MAX_RETRIES=3配置参数
AAP_URL:AAP实例的基本URL(例如。,https://controller.example.com)AAP_TOKEN:API身份验证的承载令牌AAP_PROJECT_ID:从中提取模板的默认项目IDAAP_VERIFY_SSL:是否验证SSL证书(True/False)AAP_TIMEOUT:请求超时(秒)(默认值:30)AAP_MAX_RETRIES:失败请求的重试次数(默认值:3)
用法
测试服务器
在与Claude Desktop集成之前,请测试您的服务器设置:
uv run python tools/test_mcp_server.py这将验证:
- 环境配置
- AAP连接
- 模板提取
- MCP服务器功能
运行服务器
启动MCP服务器:
uv run python server.py服务器将启动并监听stdin/stdout上的MCP协议消息。
Claude桌面集成
步骤1:配置Claude桌面
- 找到您的Claude Desktop配置文件:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - 视窗: %APPDATA%\Claude\claude_desktop_config.json - Linux: ~/.config/claude/claude_desktop_config.json
- 编辑配置文件并添加MCP服务器:
{
"mcpServers": {
"ansible-aap": {
"command": "uv",
"args": ["run", "python", "server.py"],
"cwd": "
",
"env": {
"AAP_URL": "https://your-aap-instance.com",
"AAP_TOKEN": "your-access-token-here",
"AAP_PROJECT_ID": "your-project-id",
"AAP_VERIFY_SSL": "True",
"AAP_TIMEOUT": "30",
"AAP_MAX_RETRIES": "3"
}
}
}
}重要:将占位符值替换为实际的AAP配置:
cwd:使用MCP服务器目录的绝对路径AAP_URL:您的AAP实例URLAAP_TOKEN:您的API访问令牌AAP_PROJECT_ID:您的项目ID
步骤2:重新启动克劳德桌面
保存配置后,完全重新启动Claude Desktop。
步骤3:测试集成
重新启动后,您可以通过向Claude提出以下问题来测试集成:
- “有哪些可用的Ansible模板?”
- “显示AAP项目中的作业模板”
- “显示磁盘空间不足的节点”
- “检查作业123的状态”
步骤4:验证连接
您应该看到Claude回复了有关Ansible模板的信息,并能够启动作业。如果有问题,请检查:
- Claude Desktop记录错误消息
- 您的AAP凭据和权限
- 与AAP实例的网络连接
替代方案:使用环境文件
您可以创建一个 .env 文件:
{
"mcpServers": {
"ansible-aap": {
"command": "uv",
"args": ["run", "python", "server.py"],
"cwd": "
"
}
}
}然后创建一个 .env 使用AAP配置在项目目录中创建文件。
可用工具
服务器提供以下工具:
1. get_job_templates
从已配置的AAP项目中提取可用作业模板。
参数:
project_id(可选):覆盖配置的项目ID
例子:
{
"name": "get_job_templates",
"arguments": {
"project_id": "5"
}
}2. launch_job_template
使用可选参数启动Ansible作业模板。
参数:
template_id(必填):要启动的作业模板的IDextra_vars(可选):传递给作业模板的额外变量inventory(可选):要使用的库存IDcredentials(可选):要使用的凭据ID列表
例子:
{
"name": "launch_job_template",
"arguments": {
"template_id": 10,
"extra_vars": {
"target_host": "web-server-01",
"service_name": "nginx",
"restart_service": true
},
"inventory": 2
}
}3. get_job_status
获取正在运行或已完成作业的状态和详细信息。
参数:
job_id(必填):要检查的作业ID
例子:
{
"name": "get_job_status",
"arguments": {
"job_id": 123
}
}4. get_job_output
获取作业的输出/日志。
参数:
job_id(必填):要从中获取输出的作业的ID
例子:
{
"name": "get_job_output",
"arguments": {
"job_id": 123
}
}5. test_aap_connection
测试与Ansible自动化平台的连接。
参数: 无
例子:
{
"name": "test_aap_connection",
"arguments": {}
}与LLM客户集成
此服务器可以与各种兼容MCP的LLM客户端集成。服务器为LLM提供了一个标准化的接口,用于:
- 发现基础设施:查询可用的Ansible模板,了解可用的自动化
- 执行操作:根据对话上下文启动具有自定义参数的特定模板
- 监控进度:检查作业状态并检索输出,以向用户提供反馈
LLM交互流程示例
- 发现:LLM电话
get_job_templates查看可用的自动化 - 规划:根据用户请求,LLM确定适当的模板和参数
- 执行:LLM电话
launch_job_template具有所需参数 - 监控LLM使用
get_job_status和get_job_output跟踪进度并提供更新
错误处理
服务器包括全面的错误处理:
- 连接错误:使用指数回退自动重试
- 身份验证错误:清除令牌/权限问题的错误消息
- 验证错误:参数验证,并显示有用的错误消息
- 速率限制:尊重API使用,可配置超时
安全考虑
- 将AAP令牌安全地存储在环境变量中
- AAP连接使用HTTPS
- 在生产环境中验证SSL证书(
AAP_VERIFY_SSL=True) - 通过AAP项目配置限制模板访问
- 监控作业启动和输出以确保安全合规性
