OpenStack资源查询服务

基于MCP协议的OpenStack资源查询服务,提供API接口查询计算、存储、网络和镜像等资源。

  • by wangsqly0407
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 wangsqly0407/openstack-mcp-server

使用说明

OpenStack MCP服务器

概述

一种基于MCP(模型上下文协议)的OpenStack资源查询服务,提供API接口,从OpenStack云平台查询计算、存储、网络、图像和其他资源。

特性

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

技术架构

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

架构图

┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│             │    │             │    │             │
│  AI Client  │───▶│  MCP Server │───▶│  OpenStack  │
│  (LLM)      │◀───│  (Server)   │◀───│  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>'

启动后,MCP接口将在以下位置可用 http://localhost:8000/openstack.

参数

  • --port:服务监听端口,默认为8000
  • --log-level:日志级别,选项有调试、信息、警告、错误、关键,默认为信息
  • --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:返回信息的详细程度,选项有基本、详细、完整(可选,默认详细)

从源代码安装

# Clone repository
git clone https://github.com/wangshqly0407/openstack-mcp-server.git
cd openstack-mcp-server
# Create virtual environment
uv venv
# Activate virtual environment
source .venv/bin/activate
# Initialize runtime environment
uv sync
# Start streaming HTTP MCP server
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>'

测试和验证

# Method 1: Test using 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>'

# Method 2: Test using 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/

开发扩展

添加新的资源查询工具

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

许可证

Apache 2.0