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


克隆此仓库
安装依赖项:
uv pip install -r requirements.txt
配置环境变量:
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
这将验证:
启动MCP服务器:
uv run python server.py
服务器将开始监听标准输入/输出上的MCP协议消息。
查找您的Claude Desktop配置文件:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/claude/claude_desktop_config.json编辑配置文件并添加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实例URLAAP_TOKEN:您的API访问令牌AAP_PROJECT_ID:您的项目ID保存配置后,完全重启Claude Desktop。
重启后,您可以通过向Claude提问来测试集成,例如:
您应该看到Claude响应有关您的Ansible模板的信息,并能够启动作业。如果出现问题,请检查:
而不是在Claude Desktop配置中嵌入凭证,您可以创建一个.env文件:
{
"mcpServers": {
"ansible-aap": {
"command": "uv",
"args": ["run", "python", "server.py"],
"cwd": "<PATH TO THE PROJECT>"
}
}
}
然后在您的项目目录中创建一个.env文件,其中包含AAP配置。
服务器提供以下工具:
get_job_templates从配置的AAP项目中提取可用作业模板。
参数:
project_id(可选):覆盖配置的项目ID示例:
{
"name": "get_job_templates",
"arguments": {
"project_id": "5"
}
}
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
}
}
get_job_status获取正在运行或已完成作业的状态和详细信息。
参数:
job_id(必需):要检查的作业ID示例:
{
"name": "get_job_status",
"arguments": {
"job_id": 123
}
}
get_job_output获取作业的输出/日志。
参数:
job_id(必需):要获取输出的作业ID示例:
{
"name": "get_job_output",
"arguments": {
"job_id": 123
}
}
test_aap_connection测试到Ansible自动化平台的连接。
参数: 无
示例:
{
"name": "test_aap_connection",
"arguments": {}
}
此服务器可以与各种兼容MCP的LLM客户端集成。服务器为LLMs提供标准化接口,以便:
get_job_templates查看可用的自动化launch_job_template并传入所需的参数get_job_status和get_job_output跟踪进度并提供更新服务器包括全面的错误处理:
AAP_VERIFY_SSL=True)