Skip to main content

OpenStack MCP Server

总览

基于MCP(Multimodal Capability Protocol)的OpenStack资源查询服务,提供API接口查询OpenStack云平台的计算、存储、网络、镜像等资源信息。

功能特性

  • 实时资源查询:通过API获取OpenStack集群的最新资源状态
  • 多维度信息:支持查询计算、存储、网络、镜像等多种资源
  • 灵活过滤:支持按名称、ID等条件筛选资源
  • 详细程度控制:支持基础、详细、完整三种信息展示级别
  • 标准MCP接口:完全兼容MCP协议,可与大语言模型无缝集成

技术架构

  • 基于Starlette和Uvicorn的高性能异步HTTP服务
  • 使用OpenStack SDK与OpenStack API交互
  • 通过MCP协议将OpenStack资源信息结构化提供给大语言模型
  • 支持SSE流式输出,提供实时反馈

架构图

┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│             │    │             │    │             │
│  AI客户端    │───▶│  MCP Server │───▶│  OpenStack  │
│  (LLM大模型) │◀───│  (本服务)    │◀───│  API        │
│             │    │             │    │             │
└─────────────┘    └─────────────┘    └─────────────┘

安装

环境要求

  • Python 3.10+
  • OpenStack环境

通过pip安装

pip install openstack-mcp-server

使用方法

启动服务

openstack-mcp-server --port 8000 --log-level INFO --auth-url 'http://<OpenStack-API-Endpoint>:5000/v3' --username '<OpenStack-Admin-User>' --password '<OpenStack-Admin-Password>'

服务启动后,将在http://localhost:8000/openstack提供MCP接口。

参数说明

  • --port: 服务监听端口,默认为8000
  • --log-level: 日志级别,可选值为DEBUG、INFO、WARNING、ERROR、CRITICAL,默认为INFO
  • --json-response: 使用JSON响应代替SSE流,默认为False

接口示例

通过MCP协议,可以使用以下工具查询OpenStack资源:

获取OpenStack虚拟机实例

{
  "name": "get_instances",
  "arguments": {
    "filter": "web-server",
    "limit": 10,
    "detail_level": "detailed"
  }
}

参数说明:

  • filter: 筛选条件,如实例名称或ID(可选)
  • limit: 返回结果的最大数量(可选,默认100)
  • detail_level: 返回信息的详细程度,可选值为basic、detailed、full(可选,默认detailed)

通过源码安装

# 克隆仓库
git clone https://github.com/wangshqly0407/openstack-mcp-server.git
cd openstack-mcp-server
# 创建虚拟环境
uv venv
# 激活虚拟环境
source .venv/bin/activate
# 初始化运行环监
uv sync
# 开启流式HTTP MCP服务器
uv run ./src/mcp_openstack_http/server.py --port 8000 --log-level INFO --auth-url 'http://<OpenStack-API-Endpoint>:5000/v3' --username '<OpenStack-Admin-User>' --password '<OpenStack-Admin-Password>'

测试验证

# 方式1:使用npx测试
npx -y @modelcontextprotocol/inspector uv run ./src/mcp_openstack_http/server.py --port 8000 --log-level INFO --auth-url 'http://<OpenStack-API-Endpoint>:5000/v3' --username '<OpenStack-Admin-User>' --password '<OpenStack-Admin-Password>'

# 方式2:使用docker测试
docker run -it --rm -p 6274:6274 -p 6277:6277 -v $(pwd):/app -w /app node:18 npx -y @modelcontextprotocol/inspector uv run ./src/mcp_openstack_http/server.py --port 8000 --log-level INFO --auth-url 'http://<OpenStack-API-Endpoint>:5000/v3' --username '<OpenStack-Admin-User>' --password '<OpenStack-Admin-Password>'

访问:http://localhost:6274/

image

扩展开发

添加新的资源查询工具

  1. 在src/mcp_openstack_http/server.py中添加相应的资源获取函数
  2. 在list_tools方法中注册新工具
  3. 在call_tool方法中实现工具的处理逻辑

许可证

Apache 2.0

Metadata

Release files for openstack-mcp-server 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openstack-mcp-server 0.1.1
File Size Uploaded Provenance
openstack_mcp_server-0.1.1.tar.gz 14.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for openstack-mcp-server 0.1.1
File Interpreter ABI Platform
openstack_mcp_server-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 39.6 kB

Release files / openstack_mcp_server-0.1.1.tar.gz

Download URL openstack_mcp_server-0.1.1.tar.gz
Size 14.6 kB
Tags Source
SHA-256 checksum
How to use checksums
830b3171c164b68ec6ba06004c091416c731fdf37bfe4b9f9b50fa6e8de8d70c
BLAKE2b-256 checksum
How to use checksums
368dd0ab7e86a849ed737214bc1c6bfb973f9c5c30091fdcd2cab60f66bb512f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release files / openstack_mcp_server-0.1.1-py3-none-any.whl

Download URL openstack_mcp_server-0.1.1-py3-none-any.whl
Size 25.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2499bb8c213fd48b3e6fd03ba2f2102ec5584f3e4e90ade2e3f3ac04e48df8b7
BLAKE2b-256 checksum
How to use checksums
4ffe5f443439010587f4c7ad7cddc8db644dee32e4193842f56e9feaacb211a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Security for openstack-mcp-server 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page