Skip to main content
Glama

MCP 系统操作员

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

演示项目

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

Related MCP server: MCP Toolkit

特征

  • 运行 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 凭证

要求

  • Node.js 18 或更高版本

  • npm 或 yarn

  • 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 桌面应用程序:

  • 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 集成允许您:

  1. 在本地测试使用 AWS 服务的 Ansible 剧本

  2. 无需承担 AWS 成本即可开发和测试 AWS 操作

  3. 无需真实 AWS 凭证即可运行测试

  4. 在部署到真正的 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 服务器添加新功能:

  1. 修改src/ansible-mcp-server/index.ts (未来: src/sysoperator/index.ts

  2. setupToolHandlers方法中添加新工具

  3. 在适当的操作文件中为您的工具实现处理程序函数

  4. common/types.ts中添加模式定义

  5. 使用npm run build重建

⚠️ 免责声明

SysOperator 目前正在积极开发和广泛测试中。目前不建议在生产环境中使用。该软件可能会出现重大变更、功能不完善或出现意外行为。

使用风险自负。

执照

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tarnover/mcp-sysoperator'

If you have feedback or need assistance with the MCP directory API, please join our Discord server