mcpField
O
OpenStack

OpenStack

本地服务
github.com云与基础设施01 周前更新

关于 OpenStack

OpenStack MCP 服务供 AI 应用检查 OpenStack 云,默认仅提供读取能力,并限制返回结果的范围和大小。它通过 openstacksdk 使用 OpenStack 自有配置,可作为本地进程或容器运行。

主要功能

  1. 01检查计算、镜像与块存储
  2. 02查看网络与 Keystone 目录
  3. 03只读默认,写工具需显式启用
  4. 04按项目范围建立会话
  5. 05分页并限制响应大小
  6. 06结构化结果与分类错误

适用场景

  1. 01盘点云中的服务器与镜像
  2. 02检查卷、网络和安全组
  3. 03查询项目与服务目录
  4. 04按项目限制云资源检查

MCP 相关

向 MCP 客户端提供 OpenStack 计算、镜像、块存储、网络、身份目录和服务清单的读取工具,也可提供提示词与资源。默认不注册写入工具;需同时启用管理模式和写工具设置。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"oomchiller-openstack": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OS_AUTH_URL",
"-e",
"OS_USERNAME",
"-e",
"OS_PASSWORD",
"-e",
"OS_USER_DOMAIN_NAME",
"-e",
"OS_PROJECT_ID",
"-e",
"OS_APPLICATION_CREDENTIAL_ID",
"-e",
"OS_APPLICATION_CREDENTIAL_SECRET",
"-e",
"OS_REGION_NAME",
"-e",
"OPENSTACK_MCP_PROJECT_IDS",
"-e",
"OPENSTACK_MCP_CACERT_PEM",
"ghcr.io/oomchiller/openstack-mcp-server:0.1.2"
],
"env": {
"OS_AUTH_URL": "<OS_AUTH_URL>",
"OS_USERNAME": "<OS_USERNAME>",
"OS_PASSWORD": "<OS_PASSWORD>",
"OS_USER_DOMAIN_NAME": "<OS_USER_DOMAIN_NAME>",
"OS_PROJECT_ID": "<OS_PROJECT_ID>",
"OS_APPLICATION_CREDENTIAL_ID": "<OS_APPLICATION_CREDENTIAL_ID>",
"OS_APPLICATION_CREDENTIAL_SECRET": "<OS_APPLICATION_CREDENTIAL_SECRET>",
"OS_REGION_NAME": "<OS_REGION_NAME>",
"OPENSTACK_MCP_PROJECT_IDS": "<OPENSTACK_MCP_PROJECT_IDS>",
"OPENSTACK_MCP_CACERT_PEM": "<OPENSTACK_MCP_CACERT_PEM>"
}
}
}
}
启动命令docker run -i --rm -e OS_AUTH_URL -e OS_USERNAME -e OS_PASSWORD -e OS_USER_DOMAIN_NAME -e OS_PROJECT_ID -e OS_APPLICATION_CREDENTIAL_ID -e OS_APPLICATION_CREDENTIAL_SECRET -e OS_REGION_NAME -e OPENSTACK_MCP_PROJECT_IDS -e OPENSTACK_MCP_CACERT_PEM ghcr.io/oomchiller/openstack-mcp-server:0.1.2
需要配置的环境变量
OS_AUTH_URL密钥Keystone v3 endpoint, for example https://keystone.example.com:5000/v3
OS_USERNAMEUser name; omit when using an application credential
OS_PASSWORD密钥Password for OS_USERNAME
OS_USER_DOMAIN_NAMEDomain of OS_USERNAME
OS_PROJECT_IDProject to scope the token to
OS_APPLICATION_CREDENTIAL_ID密钥Application credential ID, instead of a user name and password
OS_APPLICATION_CREDENTIAL_SECRET密钥Application credential secret
OS_REGION_NAMERegion name
OPENSTACK_MCP_PROJECT_IDSComma-separated project IDs the server may use; the first is the default
OPENSTACK_MCP_CACERT_PEMCA bundle as PEM text, for a private CA

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/oomchiller/openstack-mcp-server:0.1.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

openstack-mcp-server

CI Release License

社区项目,与 OpenStack/OpenInfra Foundation 无关。

一个模型上下文协议服务,可让 AI 助手检查 OpenStack 云。默认采用只读模式,返回内容有限,并完全通过 OpenStack 自身的设置和环境变量进行配置,因此可直接作为本地进程或容器运行,无需修改。

flowchart LR
    AI[MCP client] <-->|stdio / Streamable HTTP| Server[openstack-mcp-server]
    Server <-->|openstacksdk| Cloud[OpenStack APIs]

功能

  • 提供 32 个只读工具,涵盖计算、镜像、块存储、网络、Keystone 目录和服务清单,以及 get_scope。
  • 只有在明确启用两项设置后,才会注册写入工具。
  • 项目允许列表:每个获准项目都有自己的项目范围会话。
  • 每个列表都包含 limit、complete 和 next_marker;结果经过类型化处理(outputSchema、structuredContent),并限制大小。
  • 错误以带有类别和操作建议的 isError 结果返回,不包含 SDK 消息、URL 或令牌。
  • 默认使用 stdio;也可选择在回环地址上使用 Streamable HTTP。
  • 容器镜像不包含凭据,并以非特权用户身份运行。

只读模式只是为了方便。安全边界由你配置的身份所拥有的 Keystone 角色决定;请参阅 SECURITY.md。

快速开始

该服务已列入 MCP Registry,名称为 io.github.oomchiller/openstack-mcp-server;支持注册表的客户端可直接从该处安装。手动配置:

容器(Docker MCP Toolkit 或任何 MCP 客户端)
docker run --rm -i \
  -e OS_AUTH_URL=https://keystone.example.com:5000/v3 \
  -e OS_USERNAME=mcp-reader -e OS_PASSWORD \
  -e OS_USER_DOMAIN_NAME=Default -e OS_PROJECT_ID=0123456789abcdef0123456789abcdef \
  -e OS_REGION_NAME=RegionOne \
  ghcr.io/oomchiller/openstack-mcp-server@sha256:<digest>

请按摘要固定镜像;发布摘要列于发布页面。 对于私有 CA,请通过 OPENSTACK_MCP_CACERT_PEM 传入证书文本。

使用 clouds.yaml 的本地进程
{
  "mcpServers": {
    "openstack": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/oomchiller/[email protected]", "openstack-mcp-server"],
      "env": { "OS_CLOUD": "mycloud" }
    }
  }
}

clouds.yaml 会按常规方式查找(OS_CLIENT_CONFIG_FILE、 ./clouds.yaml、~/.config/openstack/clouds.yaml、/etc/openstack/)。

配置

凭据来自 openstacksdk:通过 clouds.yaml 配置 OS_CLOUD,或使用 OS_* 变量(密码或应用凭据)。服务行为如下:

变量默认值含义
OPENSTACK_MCP_MODEreadonlyreadonly 或 admin。
OPENSTACK_MCP_ENABLE_WRITE_TOOLSfalse与 admin 搭配时,注册写入工具。
OPENSTACK_MCP_PROJECT_IDS空服务可使用的项目 ID,以逗号分隔;第一个是默认值。
OPENSTACK_MCP_DEFAULT_LIMIT50未提供 limit 时,每次列表调用返回的项目数。
OPENSTACK_MCP_MAX_LIMIT100可接受的最大 limit(最高为 1000)。
OPENSTACK_MCP_MAX_RESPONSE_BYTES524288结果的最大大小;超过时会报错 response_too_large。
OPENSTACK_MCP_API_TIMEOUT10每次 OpenStack 请求的秒数;不重试。
OPENSTACK_MCP_CACERT_PEM未设置以 PEM 文本形式提供 CA 证书包;优先级高于 OS_CACERT。
OPENSTACK_MCP_ALLOW_INSECUREfalse允许 verify: false 或 http:// 身份验证 URL。
OPENSTACK_MCP_ENABLE_PROMPTStrue注册提示词。
OPENSTACK_MCP_ENABLE_RESOURCEStrue注册 openstack://scope。
OPENSTACK_MCP_TRANSPORTstdiostdio 或 streamable-http。
OPENSTACK_MCP_HTTP_HOST / _PORT127.0.0.1 / 8000HTTP 绑定;路径为 /mcp。
OPENSTACK_MCP_HTTP_ALLOW_REMOTEfalse允许绑定到非环回地址。HTTP 传输没有身份验证。
OPENSTACK_MCP_LOG_LEVELWARNINGstderr 日志级别。SDK 日志记录器保持为 CRITICAL。

无效的 OPENSTACK_MCP_* 值会导致服务以退出代码 2 停止,并指出变量名称。缺少凭据不会导致服务停止:服务会启动,云工具会返回 [not_configured]。

运行此服务多个实例且不会为提示词名称或资源 URI 添加前缀的网关(Docker MCP Gateway),应设置 OPENSTACK_MCP_ENABLE_PROMPTS=false 和 OPENSTACK_MCP_ENABLE_RESOURCES=false。

工具

分组工具
范围get_scope
计算list_servers、get_server、list_flavors
镜像list_images、get_image
块存储list_volumes、get_volume、list_volume_attachments、get_volume_attachment
网络list_networks、get_network、list_subnets、get_subnet、list_ports、get_port、list_floating_ips、list_routers、get_router、list_router_interfaces、list_security_groups、get_security_group
身份list_regions、list_domains、list_projects、list_services、list_endpoints
服务清单list_hypervisors、list_compute_services、list_aggregates、list_network_agents、list_volume_services

身份和服务清单调用通常需要高于项目 reader 角色的权限;此类调用会返回 [forbidden],而不是空列表。

设置 OPENSTACK_MCP_MODE=admin 和 OPENSTACK_MCP_ENABLE_WRITE_TOOLS=true 后, 会额外启用 31 个实验性写入工具(服务器、卷、镜像、网络、子网、端口、浮动 IP、路由器、安全组)。完整行为请参阅 docs/SPEC.md。

开发

uv sync --locked
uv run pytest --cov
uv run ruff check . && uv run ruff format --check .
uv run mypy src tests

请参阅 CONTRIBUTING.md、ARCHITECTURE.md 和 DECISIONS.md。

许可证

Apache License 2.0;请参阅 LICENSE。部分代码基于 openstack-kr/python-openstackmcp-server 开发; 请参阅 NOTICE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。