基础设施即代码操作协议服务器

MCP SysOperator是一个用于基础设施即代码操作的模型上下文协议服务器,允许AI助手与Ansible和Terraform交互,执行playbook和Terraform计划,管理云资源等基础设施操作。

  • by tarnover
  • TypeScript
  • 本地部署
  • 26 星标
  • 更新于
在 GitHub 查看 tarnover/mcp-sysoperator

使用说明

MCP系统操作员

用于基础设施即代码操作的模型上下文协议(MCP)服务器。该服务器允许AI助手与Ansible和Terraform交互,执行剧本和Terraform计划,管理云资源,并直接执行其他基础设施操作。
(以前称为 mcp-ansible)

演示项目

使用Claude 3.7 Sonnet(通过OpenRouter)、Cline和SysOperator生成的演示中的所有代码

  • AWS LAMP堆栈 -在AWS中部署示例LAMP堆栈的所有Ansible代码
  • AWS地形灯 -用于回复LAMP堆栈的Terraform和Ansible代码

特性

  • 运行Ansible播放手册:执行Ansible剧本,支持库存、额外变量、标签和限制等参数
  • 列出库存:从Ansible清单文件中查看主机和组
  • 检查语法:在不执行的情况下验证Ansible剧本语法
  • 列出任务:预览将由剧本执行的任务
  • 访问默认库存:通过资源API访问默认的Ansible库存文件
  • AWS集成:管理AWS资源(EC2、S3、VPC、CloudFormation等)
  • 地形支撑:执行Terraform命令(init、plan、apply、destroy、output、fmt、show、workspace等)
  • tflocal集成:使用LocalStack测试用于本地云开发的Terraform配置
  • LocalStack支持:在没有真实AWS凭据的情况下,使用LocalStack在本地测试AWS操作

需求

  • Node.js 20或更高版本
  • npm或纱线
  • Ansible已安装并位于PATH中
  • @modelcontextprotocol/sdk(自动安装)
  • 对于AWS操作:AWS CLI和有效凭据
  • 对于LocalStack:安装并运行LocalStack,awslocal CLI

安装

1.克隆存储库

git clone https://github.com/tarnover/mcp-sysoperator.git
cd mcp-sysoperator

2.安装依赖项

npm install

3.构建服务器

npm run build

4.配置MCP设置

将Ansible MCP服务器添加到MCP设置配置文件中。

对于带Claude扩展的VSCode:

  • 在以下位置编辑文件 ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

对于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

将以下内容添加到 mcpServers 章节:

{
  "mcpServers": {
    "sysoperator": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-sysoperator/build/index.js"],
      "env": {}
    }
  }
}

确保更换 /absolute/path/to/mcp-sysoperator 安装的实际路径。

使用示例

安装和配置后,MCP服务器向AI助手提供以下工具:

1.运行Playbook

<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.地形初始化和规划

<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.地形应用

<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的地形(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>

10.地形工作区、Fmt和Show

<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>terraform</tool_name>
<arguments>
{
  "action": "workspace",
  "workingDir": "/path/to/terraform/project",
  "workspaceSubcommand": "select",
  "workspace": "staging"
}
</arguments>
</use_mcp_tool>

<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>terraform</tool_name>
<arguments>
{
  "action": "fmt",
  "workingDir": "/path/to/terraform/project",
  "json": true
}
</arguments>
</use_mcp_tool>

<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>terraform</tool_name>
<arguments>
{
  "action": "show",
  "workingDir": "/path/to/terraform/project",
  "planFile": "tfplan",
  "json": true
}
</arguments>
</use_mcp_tool>

LocalStack集成

此项目包括与LocalStack集成,以便在没有真实AWS凭据的情况下在本地测试AWS操作。LocalStack集成允许您:

  1. 测试本地使用AWS服务的Ansible剧本
  2. 开发和测试AWS操作,而不会产生AWS成本
  3. 无需真实的AWS凭据即可运行测试
  4. 在部署到真正的AWS之前验证您的基础架构代码

使用LocalStack

看 LocalStack自述文件 有关使用LocalStack集成的详细说明。

快速启动:

# 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服务器添加新功能,请执行以下操作:

  1. 修改 src/ansible-mcp-server/index.ts (未来: src/sysoperator/index.ts)
  2. 在中添加新工具 setupToolHandlers 方法
  3. 在相应的操作文件中为您的工具实现一个处理程序函数
  4. 在中添加架构定义 common/types.ts
  5. 重建与 npm run build

⚠️ 免责声明

SysOperator目前正在积极开发中,并正在进行广泛的测试。目前不建议在生产环境中使用。软件可能会遇到破坏性更改、不完整的功能或意外行为。

使用风险自负。

许可证

MIT许可证-请参阅 许可证 详见