Skip to main content
Glama
tarnover
by tarnover

MCP SysOperator

Сервер Model Context Protocol (MCP) для операций Infrastructure as Code. Этот сервер позволяет помощникам ИИ взаимодействовать с Ansible и Terraform, выполнять сценарии и планы Terraform, управлять облачными ресурсами и выполнять другие операции по инфраструктуре напрямую.
(Проект ранее был известен как mcp-ansible )

Демонстрационные проекты

Весь код в демонстрациях сгенерирован с использованием Claude 3.7 Sonnet (через OpenRouter), Cline и SysOperator

  • AWS LAMP Stack — весь код Ansible для развертывания примера стека LAMP в AWS

  • AWS Terraform LAMP — код Terraform и Ansible для ответа на стек LAMP

Related MCP server: MCP Toolkit

Функции

  • Запуск Ansible Playbooks : выполнение Ansible Playbooks с поддержкой таких параметров, как инвентарь, дополнительные переменные, теги и ограничения.

  • Список инвентаря : просмотр хостов и групп из файла инвентаря Ansible

  • Проверка синтаксиса : проверка синтаксиса Ansible playbook без выполнения

  • Список задач : предварительный просмотр задач, которые будут выполнены в соответствии с планом действий.

  • Доступ к инвентарю по умолчанию : доступ к файлу инвентаря Ansible по умолчанию через API ресурсов.

  • Интеграция с AWS : управление ресурсами AWS (EC2, S3, VPC, CloudFormation и т. д.)

  • Поддержка Terraform : выполнение команд Terraform (инициализация, планирование, применение, уничтожение, вывод и т. д.)

  • Интеграция tflocal : тестирование конфигураций Terraform с LocalStack для разработки локального облака

  • Поддержка LocalStack : локальное тестирование операций AWS с использованием LocalStack без реальных учетных данных AWS.

Требования

  • Node.js 18 или выше

  • 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.

Для VSCode с расширением Claude:

  • Отредактируйте файл ~/.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 предоставляет следующие инструменты помощнику на основе искусственного интеллекта:

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. Проверьте синтаксис Playbook

<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. Терраформировать применить

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

Интеграция LocalStack

Этот проект включает интеграцию с LocalStack для тестирования операций AWS локально без реальных учетных данных AWS. Интеграция с LocalStack позволяет:

  1. Тестирование сценариев Ansible, использующих сервисы AWS локально

  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-ansible'

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