Skip to main content
Glama

openstack-mcp

一个基于 MCP 的服务器,让 AI 助手能够检查和操作 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_URLOS_APPLICATION_CREDENTIAL_IDOS_APPLICATION_CREDENTIAL_SECRET)。此服务器本身从不存储或传输你的凭据 — 它会把凭据交给 openstacksdk,由后者以与 openstack CLI 相同的方式解析。

Claude Code

claude mcp add openstack --env OS_CLOUD=cloudpe -- openstack-mcp

Claude Desktop / Cursor / 任何 MCP 客户端

{
  "mcpServers": {
    "openstack": {
      "command": "openstack-mcp",
      "env": { "OS_CLOUD": "cloudpe" }
    }
  }
}

然后可以问诸如此类的问题:“哪些虚拟机宕机了?”“我还能不能配额三个 m1.large?”,或 “web-03 不接受 SSH — 检查一下它的控制台日志。”

在信任它之前,为了确认你所配置的内容,可以运行一次干检查 — 它会打印解析后的配置以及具体暴露了哪些工具,而不启动服务或建立连接:

openstack-mcp --check
openstack-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 个检查工具。写入工具根本不会被注册 — 模型无法看到或调用它们。

OPENSTACK_MCP_ALLOW_WRITE=true

添加 create_serverspower_action(共 14 个工具)。

OPENSTACK_MCP_ALLOW_DELETE=true

添加 delete_server(共 15 个工具)。还需要 ALLOW_WRITE — 只开删除不开写入被视为配置错误并被忽略。

OPENSTACK_MCP_MAX_ITEMS=50

限制任何列表工具返回的条目数量。

OPENSTACK_MCP_CLOUD / OS_CLOUD

使用哪个 clouds.yaml 条目。

另外两道护栏:

  • **delete_server 需要确认。**你必须传入与解析出的实例确切名称匹配的 confirm_name。如果虚拟机实际叫 web-01,让它删除 web-1,它会拒绝而不是去猜。

  • 工具带有 MCP 注解read_only_hintdestructive_hint),这样在运行工具前向用户提示风险的客户端就能正确地做到这一点。

工具门禁在注册时强制执行,而不是靠好言相求模型 — 这一点已通过测试套件中真实的 stdio 会话得到验证。

工具

读取(始终可用)

工具

用途

cloud_info

你当前指向的云、区域和项目,以及哪些操作已启用

list_servers

实例及其状态和 IP;可按状态或名称子串过滤

get_server

单个实例的完整详情:规格、镜像、密钥对、安全组、地址

list_flavors

实例规格,含 vCPU、内存、磁盘

list_images

可引导镜像

list_networks

网络,并标出哪些是外部网络

list_security_groups

安全组及规则数量

list_keypairs

已注册的 SSH 密钥对

list_volumes

块存储卷及其挂载目标

get_quotas

计算配额用量与限额对比

check_capacity

某种规格的 N 个实例是否能放进剩余配额,若不能,是什么在阻碍

get_console_output

串行控制台日志 — 适用于已启动但无法访问的虚拟机

写入(可选开启)

工具

用途

create_servers

创建一个或多个实例;count > 1 时命名为 <prefix>-01-02、…

power_action

启动 / 停止 / 重启

delete_server

删除一个实例,需要名称确认 (需要 ALLOW_DELETE

两个值得了解的设计选择

响应刻意保持精简。openstacksdk 对每台服务器返回 60 多个属性。把所有这些都喂给模型既慢又贵,还会埋没有用的字段,因此每个工具返回的都是裁剪后的投影 — 对服务器而言就是 id、名称、状态,以及扁平的 {network: [ips]} 映射,而不是 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 — 基于同一 API 使用 Terraform 进行批量 VM 部署。

许可证

MIT

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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.

View all MCP Connectors

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/abhishekambad-leapswitch/openstack-mcp'

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