MCP 系统操作员
用于基础设施即代码操作的模型上下文协议 (MCP) 服务器。该服务器允许 AI 助手与 Ansible 和 Terraform 交互,执行剧本和 Terraform 计划,管理云资源,并直接执行其他基础设施操作。
(该项目以前称为mcp-ansible )
演示项目
演示中的所有代码均使用 Claude 3.7 Sonnet(通过 OpenRouter)、Cline 和 SysOperator 生成
Related MCP server: Ansible MCP Server
特征
运行 Ansible Playbooks :执行 Ansible Playbooks,支持库存、额外变量、标签和限制等参数
列出清单:从 Ansible 清单文件中查看主机和组
检查语法:无需执行即可验证 Ansible playbook 语法
列出任务:预览剧本将执行的任务
访问默认库存:通过资源 API 访问默认的 Ansible 库存文件
AWS 集成:管理 AWS 资源(EC2、S3、VPC、CloudFormation 等)
Terraform 支持:执行 Terraform 命令(init、plan、apply、destroy、output 等)
tflocal 集成:使用 LocalStack 测试 Terraform 配置以进行本地云开发
LocalStack 支持:使用 LocalStack 在本地测试 AWS 操作,无需真实的 AWS 凭证
要求
安装
1. 克隆存储库
git clone https://github.com/tarnover/mcp-sysoperator.git
cd mcp-sysoperator
2.安装依赖项
3. 构建服务器
4. 配置 MCP 设置
将 Ansible MCP 服务器添加到您的 MCP 设置配置文件。
对于带有 Claude 扩展的 VSCode:
对于 Claude 桌面应用程序:
macOS:编辑~/Library/Application Support/Claude/claude_desktop_config.json
Windows:编辑%APPDATA%\Claude\claude_desktop_config.json
Linux:编辑~/.config/Claude/claude_desktop_config.json
将以下内容添加到mcpServers部分:
{
"mcpServers": {
"sysoperator": {
"command": "node",
"args": ["/absolute/path/to/mcp-sysoperator/build/index.js"],
"env": {}
}
}
}
确保将/absolute/path/to/mcp-sysoperator替换为安装的实际路径。
使用示例
一旦安装并配置完成,MCP 服务器将向 AI 助手提供以下工具:
1. 运行剧本
<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>run_playbook</tool_name>
<arguments>
{
"playbook": "/path/to/your/playbook.yml",
"inventory": "/path/to/inventory.ini",
"extraVars": {
"var1": "value1",
"var2": "value2"
},
"tags": "setup,configure",
"limit": "webservers"
}
</arguments>
</use_mcp_tool>
2. 列出库存
<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>list_inventory</tool_name>
<arguments>
{
"inventory": "/path/to/inventory.ini"
}
</arguments>
</use_mcp_tool>
3.检查剧本语法
<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>check_syntax</tool_name>
<arguments>
{
"playbook": "/path/to/your/playbook.yml"
}
</arguments>
</use_mcp_tool>
4. 在剧本中列出任务
<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>list_tasks</tool_name>
<arguments>
{
"playbook": "/path/to/your/playbook.yml"
}
</arguments>
</use_mcp_tool>
5. 访问默认库存资源
<access_mcp_resource>
<server_name>sysoperator</server_name>
<uri>sysoperator://inventory/default</uri>
</access_mcp_resource>
6.AWS S3 操作
<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>aws_s3</tool_name>
<arguments>
{
"action": "list_buckets",
"region": "us-east-1"
}
</arguments>
</use_mcp_tool>
7. Terraform 初始化和规划
<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>terraform</tool_name>
<arguments>
{
"action": "init",
"workingDir": "/path/to/terraform/project"
}
</arguments>
</use_mcp_tool>
<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>terraform</tool_name>
<arguments>
{
"action": "plan",
"workingDir": "/path/to/terraform/project",
"vars": {
"instance_type": "t2.micro",
"region": "us-west-2"
}
}
</arguments>
</use_mcp_tool>
8. Terraform 应用
<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>terraform</tool_name>
<arguments>
{
"action": "apply",
"workingDir": "/path/to/terraform/project",
"autoApprove": true,
"vars": {
"instance_type": "t2.micro",
"region": "us-west-2"
}
}
</arguments>
</use_mcp_tool>
9. 带有 LocalStack 的 Terraform(tflocal)
<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>terraform</tool_name>
<arguments>
{
"action": "apply",
"workingDir": "/path/to/terraform/project",
"useLocalstack": true,
"autoApprove": true,
"vars": {
"instance_type": "t2.micro",
"region": "us-west-2"
}
}
</arguments>
</use_mcp_tool>
LocalStack 集成
该项目包含与 LocalStack 的集成,用于在本地测试 AWS 操作,无需真实的 AWS 凭证。LocalStack 集成允许您:
在本地测试使用 AWS 服务的 Ansible 剧本
无需承担 AWS 成本即可开发和测试 AWS 操作
无需真实 AWS 凭证即可运行测试
在部署到真正的 AWS 之前验证您的基础设施代码
使用 LocalStack
有关使用 LocalStack 集成的详细说明,请参阅LocalStack README 。
快速入门:
# Install LocalStack and awslocal CLI
pip install localstack awscli-local
# Start LocalStack
localstack start
# Run the sample playbook
node localstack/run_sample_playbook.mjs
发展
项目结构
mcp-sysoperator/
├── src/
│ ├── index.ts # Main entry point
│ └── ansible-mcp-server/ # Will be renamed in filesystem in future updates
│ ├── index.ts # MCP SysOperator server implementation
│ ├── common/ # Common utilities and types
│ │ ├── errors.ts # Error definitions
│ │ ├── types.ts # Type and schema definitions
│ │ ├── utils.ts # Utility functions
│ │ └── version.ts # Version information
│ └── operations/ # Operation handlers
│ ├── ad_hoc.ts # Ansible ad-hoc commands
│ ├── aws.ts # AWS operations
│ ├── inventory.ts # Ansible inventory operations
│ ├── playbooks.ts # Ansible playbook operations
│ ├── terraform.ts # Terraform operations
│ └── vault.ts # Ansible vault operations
├── localstack/ # LocalStack integration
│ ├── README.md # LocalStack documentation
│ ├── sample_playbook.yml # Sample playbook for LocalStack
│ ├── inventory.ini # Sample inventory for LocalStack
│ ├── run_sample_playbook.mjs # Script to run sample playbook
│ └── utils.localstack.ts # Modified utils for LocalStack
├── package.json # Project configuration and dependencies
├── tsconfig.json # TypeScript configuration
└── README.md # Documentation
添加新功能
要向 MCP 服务器添加新功能:
修改src/ansible-mcp-server/index.ts (未来: src/sysoperator/index.ts )
在setupToolHandlers方法中添加新工具
在适当的操作文件中为您的工具实现处理程序函数
在common/types.ts中添加模式定义
使用npm run build重建
⚠️ 免责声明
SysOperator 目前正在积极开发和广泛测试中。目前不建议在生产环境中使用。该软件可能会出现重大变更、功能不完善或出现意外行为。
使用风险自负。
执照
MIT 许可证 - 详情请参阅许可证