OpenStack MCP server
2026년 11월 3일 커밋AI 어시스턴트가 compute, images, block storage, networking 및 Keystone catalog를 포함한 OpenStack 클라우드를 검사할 수 있도록 지원합니다.
다른 이름 oomchiller/openstack-mcp-server, openstack-mcp-server
- 스타
- 0
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 0.1.2
- 마지막 커밋
- 2026년 11월 3일
- 라이선스
- Apache-2.0
OpenStack MCP란?
OpenStack은(는) MCP server입니다. AI 어시스턴트가 compute, images, block storage, networking 및 Keystone catalog를 포함한 OpenStack 클라우드를 검사할 수 있도록 지원합니다.
프로젝트 README에서 생성된 요약
OpenStack MCP server 정보
이 MCP server는 클라우드 관리자와 개발자가 AI 어시스턴트를 통해 OpenStack 클라우드 환경을 검사할 수 있게 해줍니다. 32개의 특화된 읽기 도구를 사용하여 compute, images, block storage, networking 및 Keystone catalog를 쿼리할 수 있는 구조화된 방법을 제공합니다. 서버는 stdio를 통한 로컬 프로세스 또는 컨테이너로 작동하며, loopback 인터페이스에서 streamable HTTP로 구성할 수도 있습니다.
사용자는 표준 OpenStack 환경 변수나 clouds.yaml 파일을 사용하여 연결을 구성합니다. 안전을 위해 기본적으로 읽기 전용으로 작동하지만, admin 모드로 전환하면 서버, 볼륨, 네트워크와 같은 리소스를 관리할 수 있는 31개의 실험적인 쓰기 도구를 사용할 수 있습니다. 보안은 구성된 identity의 Keystone role을 통해 관리되며, 클라우드 API와의 제어된 상호 작용을 유지하기 위해 프로젝트 allowlist 및 응답 크기 제한과 같은 기능을 포함합니다.
활용 사례
- 1클라우드 리소스 인벤토리 감사AI에게 특정 OpenStack 프로젝트 내의 모든 사용 가능한 compute flavor와 network subnet 목록을 요청합니다.
- 2네트워크 구성 문제 해결네트워크 연결을 확인하기 위해 모든 router, floating IP 및 security group의 요약을 요청합니다.
- 3AI를 통한 클라우드 인프라 관리관리자 쓰기 권한을 활성화하여 AI 어시스턴트가 서버와 볼륨을 생성하거나 수정할 수 있도록 합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
OpenStack MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 OpenStack MCP 설치
$ claude mcp add --env 'OS_AUTH_URL=<OS_AUTH_URL>' --env 'OS_APPLICATION_CREDENTIAL_SECRET=<YOUR_OS_APPLICATION_CREDENTIAL_SECRET>' --env 'OS_PASSWORD=<YOUR_OS_PASSWORD>' openstack-mcp-server -- docker run -i --rm ghcr.io/oomchiller/openstack-mcp-server:0.1.2Cursor에 OpenStack MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"openstack-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/oomchiller/openstack-mcp-server:0.1.2"
],
"env": {
"OS_AUTH_URL": "<OS_AUTH_URL>",
"OS_APPLICATION_CREDENTIAL_SECRET": "<YOUR_OS_APPLICATION_CREDENTIAL_SECRET>",
"OS_PASSWORD": "<YOUR_OS_PASSWORD>"
}
}
}
}VS Code에 OpenStack MCP 설치
.vscode/mcp.json
{
"servers": {
"openstack-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/oomchiller/openstack-mcp-server:0.1.2"
],
"env": {
"OS_AUTH_URL": "<OS_AUTH_URL>",
"OS_APPLICATION_CREDENTIAL_SECRET": "<YOUR_OS_APPLICATION_CREDENTIAL_SECRET>",
"OS_PASSWORD": "<YOUR_OS_PASSWORD>"
}
}
}
}VS Code CLI에 OpenStack MCP 설치
$ code --add-mcp '{"name":"openstack-mcp-server","type":"stdio","command":"docker","args":["run","-i","--rm","ghcr.io/oomchiller/openstack-mcp-server:0.1.2"],"env":{"OS_AUTH_URL":"<OS_AUTH_URL>","OS_APPLICATION_CREDENTIAL_SECRET":"<YOUR_OS_APPLICATION_CREDENTIAL_SECRET>","OS_PASSWORD":"<YOUR_OS_PASSWORD>"}}'Claude Desktop에 OpenStack MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"openstack-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/oomchiller/openstack-mcp-server:0.1.2"
],
"env": {
"OS_AUTH_URL": "<OS_AUTH_URL>",
"OS_APPLICATION_CREDENTIAL_SECRET": "<YOUR_OS_APPLICATION_CREDENTIAL_SECRET>",
"OS_PASSWORD": "<YOUR_OS_PASSWORD>"
}
}
}
}Codex에 OpenStack MCP 설치
$ codex mcp add openstack-mcp-server --env 'OS_AUTH_URL=<OS_AUTH_URL>' --env 'OS_APPLICATION_CREDENTIAL_SECRET=<YOUR_OS_APPLICATION_CREDENTIAL_SECRET>' --env 'OS_PASSWORD=<YOUR_OS_PASSWORD>' -- docker run -i --rm ghcr.io/oomchiller/openstack-mcp-server:0.1.2Codex config.toml에 OpenStack MCP 설치
~/.codex/config.toml
[mcp_servers.openstack-mcp-server] command = "docker" args = ["run", "-i", "--rm", "ghcr.io/oomchiller/openstack-mcp-server:0.1.2"] [mcp_servers.openstack-mcp-server.env] OS_AUTH_URL = "<OS_AUTH_URL>" OS_APPLICATION_CREDENTIAL_SECRET = "<YOUR_OS_APPLICATION_CREDENTIAL_SECRET>" OS_PASSWORD = "<YOUR_OS_PASSWORD>"
Gemini CLI에 OpenStack MCP 설치
$ gemini mcp add -s user -e 'OS_AUTH_URL=<OS_AUTH_URL>' -e 'OS_APPLICATION_CREDENTIAL_SECRET=<YOUR_OS_APPLICATION_CREDENTIAL_SECRET>' -e 'OS_PASSWORD=<YOUR_OS_PASSWORD>' openstack-mcp-server docker -- run -i --rm ghcr.io/oomchiller/openstack-mcp-server:0.1.2Gemini settings.json에 OpenStack MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"openstack-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/oomchiller/openstack-mcp-server:0.1.2"
],
"env": {
"OS_AUTH_URL": "<OS_AUTH_URL>",
"OS_APPLICATION_CREDENTIAL_SECRET": "<YOUR_OS_APPLICATION_CREDENTIAL_SECRET>",
"OS_PASSWORD": "<YOUR_OS_PASSWORD>"
}
}
}
}구성
OS_AUTH_URL필수Keystone v3 endpoint, for example https://keystone.example.com:5000/v3
OS_APPLICATION_CREDENTIAL_SECRET비밀Application credential secret
OS_PASSWORD비밀Password for OS_USERNAME
OPENSTACK_MCP_CACERT_PEMCA bundle as PEM text, for a private CA
OPENSTACK_MCP_PROJECT_IDSComma-separated project IDs the server may use; the first is the default
OS_APPLICATION_CREDENTIAL_IDApplication credential ID, instead of a user name and password
OS_CLOUDOS_PROJECT_IDProject to scope the token to
OS_REGION_NAMERegion name
OS_USERNAMEUser name; omit when using an application credential
OS_USER_DOMAIN_NAMEDomain of OS_USERNAME
| 이름 | 설명 | 유형 |
|---|---|---|
| OS_AUTH_URL | Keystone v3 endpoint, for example https://keystone.example.com:5000/v3 | 필수 |
| OS_APPLICATION_CREDENTIAL_SECRET | Application credential secret | 비밀 |
| OS_PASSWORD | Password for OS_USERNAME | 비밀 |
| OPENSTACK_MCP_CACERT_PEM | CA bundle as PEM text, for a private CA | |
| OPENSTACK_MCP_PROJECT_IDS | Comma-separated project IDs the server may use; the first is the default | |
| OS_APPLICATION_CREDENTIAL_ID | Application credential ID, instead of a user name and password | |
| OS_CLOUD | — | |
| OS_PROJECT_ID | Project to scope the token to | |
| OS_REGION_NAME | Region name | |
| OS_USERNAME | User name; omit when using an application credential | |
| OS_USER_DOMAIN_NAME | Domain of OS_USERNAME |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능oomchiller/openstack-mcp-server is public and reachablegithub.com/oomchiller/openstack-mcp-server ↗통과
- 패키지가 이 저장소를 소스로 명시검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-03github.com/oomchiller/openstack-mcp-server ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기openstack-mcp-server
Community project, not affiliated with OpenStack/OpenInfra Foundation.
A Model Context Protocol server that lets AI assistants inspect OpenStack clouds. It is read-only by default, bounded in what it returns, and configured entirely through OpenStack's own settings and environment variables, so it runs unchanged as a local process or a container.
flowchart LR
AI[MCP client] <-->|stdio / Streamable HTTP| Server[openstack-mcp-server]
Server <-->|openstacksdk| Cloud[OpenStack APIs]
Features
- 32 read tools for compute, images, block storage, networking, the Keystone
catalog and service inventory, plus
get_scope. - Write tools are not registered unless explicitly enabled by two settings.
- Project allowlist: each allowed project gets its own project-scoped session.
- Every list has
limit,completeandnext_marker; results are typed (outputSchema,structuredContent) and capped in size. - Errors are
isErrorresults with a category and an action, without SDK messages, URLs or tokens. - stdio by default; Streamable HTTP on loopback as an option.
- Container image without credentials, running as an unprivileged user.
The read-only mode is a convenience. The security boundary is the Keystone role of the identity you configure; see SECURITY.md.
Quick start
The server is listed in the MCP Registry
as io.github.oomchiller/openstack-mcp-server; registry-aware clients can
install it from there. Manual setup:
Container (Docker MCP Toolkit or any MCP client)
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>
Pin the image by digest; release digests are listed on the
releases page.
For a private CA, pass the certificate text in OPENSTACK_MCP_CACERT_PEM.
Local process with clouds.yaml
{
"mcpServers": {
"openstack": {
"command": "uvx",
"args": ["--from", "git+https://github.com/oomchiller/openstack-mcp-server@v0.1.2", "openstack-mcp-server"],
"env": { "OS_CLOUD": "mycloud" }
}
}
}
clouds.yaml is found the usual way (OS_CLIENT_CONFIG_FILE,
./clouds.yaml, ~/.config/openstack/clouds.yaml, /etc/openstack/).
Configuration
Credentials come from openstacksdk: OS_CLOUD with clouds.yaml, or OS_*
variables (password or application credentials). Server behaviour:
| Variable | Default | Meaning |
|---|---|---|
OPENSTACK_MCP_MODE |
readonly |
readonly or admin. |
OPENSTACK_MCP_ENABLE_WRITE_TOOLS |
false |
With admin, registers write tools. |
OPENSTACK_MCP_PROJECT_IDS |
empty | Comma-separated project IDs the server may use; the first is the default. |
OPENSTACK_MCP_DEFAULT_LIMIT |
50 |
Items per list call when limit is omitted. |
OPENSTACK_MCP_MAX_LIMIT |
100 |
Largest accepted limit (up to 1000). |
OPENSTACK_MCP_MAX_RESPONSE_BYTES |
524288 |
Largest result; larger ones fail with response_too_large. |
OPENSTACK_MCP_API_TIMEOUT |
10 |
Seconds per OpenStack request; no retries. |
OPENSTACK_MCP_CACERT_PEM |
unset | CA bundle as PEM text; takes precedence over OS_CACERT. |
OPENSTACK_MCP_ALLOW_INSECURE |
false |
Allow verify: false or an http:// auth URL. |
OPENSTACK_MCP_ENABLE_PROMPTS |
true |
Register the prompt. |
OPENSTACK_MCP_ENABLE_RESOURCES |
true |
Register openstack://scope. |
OPENSTACK_MCP_TRANSPORT |
stdio |
stdio or streamable-http. |
OPENSTACK_MCP_HTTP_HOST / _PORT |
127.0.0.1 / 8000 |
HTTP bind; path /mcp. |
OPENSTACK_MCP_HTTP_ALLOW_REMOTE |
false |
Allow a non-loopback HTTP bind. The HTTP transport has no authentication. |
OPENSTACK_MCP_LOG_LEVEL |
WARNING |
stderr log level. SDK loggers stay at CRITICAL. |
An invalid OPENSTACK_MCP_* value stops the server with exit code 2 and
names the variable. Missing credentials do not: the server starts, and cloud
tools return [not_configured].
Gateways that run several instances of this server and do not prefix prompt
names or resource URIs (Docker MCP Gateway) should set
OPENSTACK_MCP_ENABLE_PROMPTS=false and OPENSTACK_MCP_ENABLE_RESOURCES=false.
Tools
| Group | Tools |
|---|---|
| Scope | get_scope |
| Compute | list_servers, get_server, list_flavors |
| Image | list_images, get_image |
| Block storage | list_volumes, get_volume, list_volume_attachments, get_volume_attachment |
| Network | 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 |
| Identity | list_regions, list_domains, list_projects, list_services, list_endpoints |
| Service inventory | list_hypervisors, list_compute_services, list_aggregates, list_network_agents, list_volume_services |
Identity and service inventory usually need more than a project reader
role; such calls fail with [forbidden] rather than returning empty lists.
With OPENSTACK_MCP_MODE=admin and OPENSTACK_MCP_ENABLE_WRITE_TOOLS=true,
31 experimental write tools are added (servers, volumes, images, networks,
subnets, ports, floating IPs, routers, security groups). See
docs/SPEC.md for the full behaviour.
Development
uv sync --locked
uv run pytest --cov
uv run ruff check . && uv run ruff format --check .
uv run mypy src tests
See CONTRIBUTING.md, ARCHITECTURE.md and DECISIONS.md.
License
Apache License 2.0; see LICENSE. Parts of the code started in openstack-kr/python-openstackmcp-server; see NOTICE.
OpenStack MCP 질문
OpenStack MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --env 'OS_AUTH_URL=<OS_AUTH_URL>' --env 'OS_APPLICATION_CREDENTIAL_SECRET=<YOUR_OS_APPLICATION_CREDENTIAL_SECRET>' --env 'OS_PASSWORD=<YOUR_OS_PASSWORD>' openstack-mcp-server -- docker run -i --rm ghcr.io/oomchiller/openstack-mcp-server:0.1.2를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
OpenStack MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
서버가 읽기 전용인가요?
네, 기본적으로 읽기 전용이지만 특정 설정을 변경하여 쓰기 도구를 활성화할 수 있습니다.
컨테이너에서 이 서버를 실행하려면 어떻게 해야 하나요?
OpenStack 인증 정보를 환경 변수로 전달하여 Docker로 실행할 수 있습니다.
서버의 보안 경계는 무엇인가요?
보안 경계는 구성된 identity의 Keystone role에 의해 정의됩니다.
로컬 clouds.yaml 파일을 사용할 수 있나요?
네, clouds.yaml 파일을 사용하여 설정을 구성하고 서버를 로컬 프로세스로 실행할 수 있습니다.