返回市场
MCP系统操作员

MCP系统操作员

作者:tarnover20 星标更新:2025-08-26

项目介绍

<p align="center"> <img src="https://gips2.baidu.com/it/u=3050612964,184368107&fm=3081&app=3081&f=PNG?w=500&h=500" alt="SysOperator" width="500"> </p>

MCP SysOperator

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

示例项目

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

功能

  • 运行Ansible剧本:支持参数如清单、额外变量、标签和限制的Ansible剧本执行
  • 列出清单:查看来自Ansible清单文件的主机和组
  • 检查语法:在不执行的情况下验证Ansible剧本语法
  • 列出任务:预览剧本将要执行的任务
  • 访问默认清单:通过资源API访问默认的Ansible清单文件
  • AWS集成:管理AWS资源(EC2、S3、VPC、CloudFormation等)
  • Terraform支持:执行Terraform命令(初始化、计划、应用、销毁、输出等)
  • tflocal集成:使用LocalStack测试Terraform配置以进行本地云开发
  • LocalStack支持:使用LocalStack进行本地AWS操作测试,无需真实的AWS凭证

要求

  • Node.js 18或更高版本
  • npm或yarn
  • 已安装并添加到PATH中的Ansible
  • @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桌面应用程序:

  • 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": ["/绝对路径到/mcp-sysoperator/build/index.js"],
      "env": {}
    }
  }
}

确保替换/绝对路径到/mcp-sysoperator为您实际安装的路径。

使用示例

一旦安装并配置好,MCP服务器将提供以下工具给AI助手:

1. 运行剧本

<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>run_playbook</tool_name>
<arguments>
{
  "playbook": "/路径到你的/playbook.yml",
  "inventory": "/路径到/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": "/路径到/inventory.ini"
}
</arguments>
</use_mcp_tool>

3. 检查剧本语法

<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>check_syntax</tool_name>
<arguments>
{
  "playbook": "/路径到你的/playbook.yml"
}
</arguments>
</use_mcp_tool>

4. 列出剧本中的任务

<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>list_tasks</tool_name>
<arguments>
{
  "playbook": "/路径到你的/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": "/路径到/terraform/project"
}
</arguments>
</use_mcp_tool>

<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>terraform</tool_name>
<arguments>
{
  "action": "plan",
  "workingDir": "/路径到/terraform/project",
  "vars": {
    "instance_type": "t2.micro",
    "region": "us-west-2"
  }
}
</arguments>
</use_mcp_tool>

8. Terraform应用

<use_m
cp_tool>
<server_name>sysoperator</server_name>
<tool_name>terraform</tool_name>
<arguments>
{
  "action": "apply",
  "workingDir": "/路径到/terraform/project",
  "autoApprove": true,
  "vars": {
    "instance_type": "t2.micro",
    "region": "us-west-2"
  }
}
</arguments>
</use_mcp_tool>

9. Terraform与LocalStack(tflocal)

<use_mcp_tool>
<server_name>sysoperator</server_name>
<tool_name>terraform</tool_name>
<arguments>
{
  "action": "apply",
  "workingDir": "/路径到/terraform/project",
  "useLocalstack": true,
  "autoApprove": true,
  "vars": {
    "instance_type": "t2.micro",
    "region": "us-west-2"
  }
}
</arguments>
</use_mcp_tool>

LocalStack集成

本项目包括与LocalStack的集成,用于在没有真实AWS凭证的情况下进行本地AWS操作测试。LocalStack集成允许您:

  1. 测试使用AWS服务的Ansible剧本
  2. 开发和测试AWS操作而不产生AWS费用
  3. 运行测试而不需要真实的AWS凭证
  4. 在部署到真实的AWS之前验证您的基础设施代码

使用LocalStack

参见LocalStack README获取详细的LocalStack集成使用说明。

快速开始:

# 安装LocalStack和awslocal CLI
pip install localstack awscli-local

# 启动LocalStack
localstack start

# 运行示例剧本
node localstack/run_sample_playbook.mjs

开发

项目结构

mcp-sysoperator/
├── src/
│   ├── index.ts                  # 主入口点
│   └── ansible-mcp-server/       # 将在未来更新中重命名
│       ├── index.ts              # MCP SysOperator服务器实现
│       ├── common/               # 常用工具和类型
│       │   ├── errors.ts         # 错误定义
│       │   ├── types.ts          # 类型和模式定义
│       │   ├── utils.ts          # 实用函数
│       │   └── version.ts        # 版本信息
│       └── operations/           # 操作处理器
│           ├── ad_hoc.ts         # Ansible临时命令
│           ├── aws.ts            # AWS操作
│           ├── inventory.ts      # Ansible清单操作
│           ├── playbooks.ts      # Ansible剧本操作
│           ├── terraform.ts      # Terraform操作
│           └── vault.ts          # Ansible密钥库操作
├── localstack/                   # LocalStack集成
│   ├── README.md                 # LocalStack文档
│   ├── sample_playbook.yml       # LocalStack示例剧本
│   ├── inventory.ini             # LocalStack示例清单
│   ├── run_sample_playbook.mjs   # 运行示例剧本的脚本
│   └── utils.localstack.ts       # 修改过的LocalStack实用函数
├── package.json                  # 项目配置和依赖
├── tsconfig.json                 # TypeScript配置
└── README.md                     # 文档

添加新功能

要向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许可证 - 详情见LICENSE