返回市场
MCP服务器AAP

MCP服务器AAP

作者:mancubus773 星标更新:2025-07-14

项目介绍

MCP Ansible 自动化平台服务器

这是一个非常基础且简单的模型上下文协议(MCP)服务器,通过API与Ansible自动化平台(AAP)进行集成。该服务器允许大型语言模型与AAP交互,提取可用模板并使用自定义参数启动Ansible作业模板。这只是个演示,并非完整的MCP服务器能力,您可以随意使用这段代码。

MCP Ansible 自动化平台服务器演示

功能

  • 模板发现:从配置的AAP项目中提取可用作业模板
  • 作业启动:使用自定义额外变量和参数启动Ansible作业模板
  • 作业监控:检查作业状态并检索作业输出/日志
  • 连接测试:验证AAP连接性和身份验证
  • 错误处理:具有重试逻辑和详细错误消息的强大错误处理机制

预备条件

  • Python 3.8+
  • 访问Ansible自动化平台实例
  • 具有适当权限的AAP API访问令牌

AAP令牌生成

在AAP中获取令牌

安装

  1. 克隆此仓库

  2. 安装依赖项:

    uv pip install -r requirements.txt
    
  3. 配置环境变量:

    cp env_example .env
    # 使用您的AAP配置编辑.env文件
    

配置

在项目根目录创建一个.env文件,包含以下变量:

# Ansible 自动化平台配置
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_URL:您的AAP实例的基本URL(例如:https://controller.example.com
  • AAP_TOKEN:用于API认证的Bearer令牌
  • AAP_PROJECT_ID:默认项目ID以从中提取模板
  • AAP_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

服务器将开始监听标准输入/输出上的MCP协议消息。

Claude Desktop 集成

第一步:配置Claude Desktop

  1. 查找您的Claude Desktop配置文件:

    • macOS~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows%APPDATA%\Claude\claude_desktop_config.json
    • Linux~/.config/claude/claude_desktop_config.json
  2. 编辑配置文件并添加MCP服务器:

{
  "mcpServers": {
    "ansible-aap": {
      "command": "uv",
      "args": ["run", "python", "server.py"],
      "cwd": "<PATH TO THE PROJECT>",
      "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",
        2": "3"
      }
    }
  }
}

重要:用实际的AAP配置替换占位符值:

  • cwd:使用您的MCP服务器目录的绝对路径
  • AAP_URL:您的AAP实例URL
  • AAP_TOKEN:您的API访问令牌
  • AAP_PROJECT_ID:您的项目ID

第二步:重启Claude Desktop

保存配置后,完全重启Claude Desktop。

第三步:测试集成

重启后,您可以通过向Claude提问来测试集成,例如:

  • "有哪些Ansible模板可用?"
  • "显示我AAP项目的作业模板"
  • "显示磁盘空间不足的节点"
  • "检查作业123的状态"

第四步:验证连接

您应该看到Claude响应有关您的Ansible模板的信息,并能够启动作业。如果出现问题,请检查:

  1. Claude Desktop的日志中的错误信息
  2. 您的AAP凭据和权限
  3. 到您的AAP实例的网络连接性

替代方案:使用环境文件

而不是在Claude Desktop配置中嵌入凭证,您可以创建一个.env文件:

{
  "mcpServers": {
    "ansible-aap": {
      "command": "uv",
      "args": ["run", "python", "server.py"],
      "cwd": "<PATH TO THE PROJECT>"
    }
  }
}

然后在您的项目目录中创建一个.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(必需):要启动的作业模板ID
  • extra_vars(可选):传递给作业模板的额外变量
  • inventory(可选):要使用的清单ID
  • credentials(可选):要使用的凭证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客户端集成。服务器为LLMs提供标准化接口,以便:

  1. 发现基础设施:查询可用的Ansible模板以了解哪些自动化可用
  2. 执行操作:根据对话上下文启动特定模板并使用自定义参数
  3. 监控进度:检查作业状态并检索输出以向用户提供反馈

示例LLM交互流程

  1. 发现:LLM调用get_job_templates查看可用的自动化
  2. 规划:基于用户请求,LLM确定适当的模板和参数
  3. 执行:LLM调用launch_job_template并传入所需的参数
  4. 监控:LLM使用get_job_statusget_job_output跟踪进度并提供更新

错误处理

服务器包括全面的错误处理:

  • 连接错误:自动重试并采用指数退避
  • 身份验证错误:针对令牌/权限问题的清晰错误消息
  • 验证错误:带有帮助性错误消息的参数验证
  • 速率限制:尊重API使用并配置超时

安全注意事项

  • 在环境变量中安全存储AAP令牌
  • 使用HTTPS进行AAP连接
  • 生产环境中验证SSL证书(AAP_VERIFY_SSL=True
  • 通过AAP项目配置限制模板访问
  • 监控作业启动和输出以符合安全合规性