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-sysoperator2. Установка зависимостей
npm install3. Сборка сервера
npm run build4. Настройте параметры 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.jsonWindows: Измените
%APPDATA%\Claude\claude_desktop_config.jsonLinux: Измените
~/.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 позволяет:
Тестирование сценариев Ansible, использующих сервисы AWS локально
Разрабатывайте и тестируйте операции 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 — подробности см. в разделе ЛИЦЕНЗИЯ