openstack-mcp
openstack-mcp
Сервер MCP, который позволяет ИИ-ассистенту просматривать и управлять облаком OpenStack — выводить список инстансов, проверять квоты, читать журнал консоли зависшей ВМ и (если вы разрешите) создавать и удалять серверы.
Работает с любым развёртыванием OpenStack: CloudPe, OVHcloud, Infomaniak, университетские и исследовательские облака или локальный DevStack. Всё, до чего может дотянуться openstacksdk, этим можно управлять.
По умолчанию только чтение. Запись требует явного согласия, а удаление — второго. Ассистент, который может просматривать ваш проект, не сможет его разрушить, если вы этого не разрешили.
Быстрый старт
Установка из исходников (пока нет на PyPI):
pipx install git+https://github.com/abhishekambad-leapswitch/openstack-mcpУкажите облако. openstacksdk читает стандартную конфигурацию OpenStack, так что либо clouds.yaml:
# ~/.config/openstack/clouds.yaml
clouds:
cloudpe:
auth_type: v3applicationcredential
auth:
auth_url: https://<your-region>.cloudpe.com:5000/v3
application_credential_id: <id>
application_credential_secret: <secret>
region_name: RegionOne...или обычные переменные окружения (OS_AUTH_URL, OS_APPLICATION_CREDENTIAL_ID, OS_APPLICATION_CREDENTIAL_SECRET). Этот сервер сам никогда не хранит и не передаёт ваши учётные данные — он передаёт управление openstacksdk, который разрешает их так же, как это делает CLI openstack.
Claude Code
claude mcp add openstack --env OS_CLOUD=cloudpe -- openstack-mcpClaude Desktop / Cursor / любой MCP-клиент
{
"mcpServers": {
"openstack": {
"command": "openstack-mcp",
"env": { "OS_CLOUD": "cloudpe" }
}
}
}Затем спрашивайте что-то вроде «какие ВМ остановлены?», «есть ли у меня квота ещё на три m1.large?» или «web-03 не принимает SSH — проверь его журнал консоли».
Чтобы убедиться в правильности настройки перед доверием, выполните сухую проверку — она выводит разрешённую конфигурацию и точный список доступных инструментов, ничего не запуская и не подключаясь:
openstack-mcp --checkopenstack-mcp 0.1.0
cloud: cloudpe
mode: read-only
max items per list: 50
12 tools: check_capacity, cloud_info, get_console_output, get_quotas, get_server,
list_flavors, list_images, list_keypairs, list_networks, list_security_groups,
list_servers, list_volumesМодель безопасности
Большинство облачных MCP-серверов отдают ассистенту полный API и надеются на лучшее. Этот — с ограничениями, потому что «удали тестовые ВМ» — это фраза, которую модель может понять неправильно.
Переменная окружения | Эффект |
(ничего не задано) | Только чтение. 12 инструментов просмотра. Инструменты записи вообще не регистрируются — модель не может их видеть или вызывать. |
| Добавляет |
| Добавляет |
| Ограничивает количество элементов, возвращаемых любым инструментом списка. |
| Какую запись |
Ещё два предохранителя:
delete_serverтребует подтверждения. Вы должны передатьconfirm_name, точно совпадающий с именем найденного инстанса. Попросите удалитьweb-1, когда ВМ называетсяweb-01, и он откажется, а не будет угадывать.Инструменты несут MCP-аннотации (
read_only_hint,destructive_hint), чтобы клиенты, показывающие пользователю риск перед запуском инструмента, могли делать это корректно.
Ограничение инструментов применяется при регистрации, а не вежливой просьбой к модели — это проверено на реальной stdio-сессии в тестовом наборе.
Инструменты
Чтение (доступно всегда)
Инструмент | Назначение |
| Какое облако, регион и проект используются, и какие операции включены |
| Инстансы со статусом и IP-адресами; фильтрация по статусу или подстроке имени |
| Полная информация об одном инстансе: flavor, образ, ключевая пара, группы безопасности, адреса |
| Размеры инстансов с vCPU, ОЗУ, диском |
| Загрузочные образы |
| Сети с указанием внешних |
| Группы безопасности и количество правил |
| Зарегистрированные пары SSH-ключей |
| Тома блочного хранилища и к чему они подключены |
| Использование вычислительной квоты по сравнению с лимитами |
| Поместятся ли N инстансов данного flavor в оставшуюся квоту, и что мешает, если нет |
| Журнал последовательной консоли — для ВМ, которые загружаются, но недоступны |
Запись (по согласию)
Инструмент | Назначение |
| Создание одного или нескольких инстансов; при |
| start / stop / reboot |
| Удаление одного инстанса с подтверждением имени (требуется |
Два конструктивных решения, о которых стоит знать
Ответы намеренно небольшие. openstacksdk возвращает более 60 атрибутов на сервер. Передавать их все модели медленно, дорого и скрывает полезные поля, поэтому каждый инструмент возвращает усечённую проекцию — для сервера это id, имя, статус и плоская карта {сеть: [IP-адреса]} вместо вложенной структуры адресов nova.
check_capacity существует, чтобы пакетные операции завершались на раннем этапе. Запрос восьми ВМ и обнаружение потолка квоты на пятой оставляет полуразрушенный беспорядок. Этот инструмент сообщает, что именно ограничивает — инстансы, vCPU или ОЗУ, — до создания чего-либо. create_servers также сообщает о частичных сбоях по каждому инстансу, а не отбрасывает то, что удалось.
Разработка
git clone https://github.com/abhishekambad-leapswitch/openstack-mcp
cd openstack-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest && ruff check .Набор тестов полностью работает офлайн с фейковым подключением openstacksdk — без облака, учётных данных и расходов. Он покрывает ограничение инструментов, усечение, арифметику квот, отчёты о частичных сбоях и подтверждение удаления.
Масштабное развёртывание
Для декларативного развёртывания парков машин, а не в диалоговом режиме, см. cloudpe-terraform-bulk-vm — Terraform для массового создания ВМ через тот же API.
Лицензия
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/abhishekambad-leapswitch/openstack-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server