项目简介

MCP-OpenStack-Ops 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在将复杂的 OpenStack 云平台操作转换为 LLM 可理解和调用的工具和上下文。它通过集成 OpenStack SDK,提供对计算、网络、存储、身份、镜像、编排和负载均衡等90多种服务的实时管理和监控功能,并支持生产环境下的安全操作限制。

主要功能点

  • OpenStack SDK 深度集成: 直接与 OpenStack SDK 对接,实现对云平台资源的实时操作。
  • 全面的集群管理: 支持实例生命周期管理、网络配置、卷操作、镜像管理、用户权限分配等。
  • 集群状态与监控: 提供实时集群概览、服务健康检查、资源利用率报告、超visor监控等。
  • 生产安全保障: 通过 'ALLOW_MODIFY_OPERATIONS' 环境变量控制修改类操作,默认只允许查询,避免生产环境误操作。
  • 高级实例管理: 包含实例备份、迁移、救援、管理员操作等高级功能。
  • 负载均衡服务 (Octavia) 完整支持: 涵盖负载均衡器、监听器、后端池、成员、健康检查、L7策略及规则等全面管理。
  • 灵活的传输协议: 支持 'stdio'(本地通信)和 'streamable-http'(远程HTTP通信)两种传输方式。
  • 大规模环境优化: 支持分页查询、智能搜索、全局连接缓存和自动重试机制,确保在大规模OpenStack环境中高效运行。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/call518/MCP-OpenStack-Ops.git
    cd MCP-OpenStack-Ops
  2. 安装依赖: 使用 'uv' 工具同步项目依赖。
    uv sync
  3. 配置环境: 复制 '.env.example' 文件为 '.env',并编辑 '.env' 文件,填入您的 OpenStack 认证信息。
    cp .env.example .env
    # 编辑 .env 文件,示例如下:
    # OS_AUTH_HOST=your-openstack-host
    # OS_AUTH_PORT=5000
    # OS_IDENTITY_API_VERSION=3
    # OS_USERNAME=your-username
    # OS_PASSWORD=your-password
    # OS_PROJECT_NAME=your-project
    # OS_PROJECT_DOMAIN_NAME=default
    # OS_USER_DOMAIN_NAME=default
    # OS_REGION_NAME=RegionOne
    #
    # MCP服务器配置 (可选,默认为stdio)
    # FASTMCP_TYPE=streamable-http
    # FASTMCP_HOST=127.0.0.1
    # FASTMCP_PORT=8080
    #
    # 启用修改操作(默认只读,请谨慎启用)
    # ALLOW_MODIFY_OPERATIONS=false
  4. 运行服务器 (推荐使用Docker):
    docker-compose up -d
    # 查看日志:
    # docker-compose logs mcp-server
    # docker-compose logs mcpo-proxy
    Docker Compose 会启动以下服务:
    • 'mcp-server': 核心 MCP OpenStack 服务器。
    • 'mcpo-proxy': OpenAPI (REST-API) 代理。
    • 'open-webui': 用于测试和交互的Web界面。

服务器配置

MCP客户端需要通过连接配置来与此MCP服务器通信。以下是为MCP客户端(如Claude Desktop)生成的一个JSON格式的配置示例。

{
  "mcpServers": {
    "openstack-ops": {
      "command": "uvx",
      "args": ["--python", "3.11", "mcp-openstack-ops", "--type", "stdio"],
      "env": {
        "OS_AUTH_HOST": "your-openstack-host",  // 您的OpenStack认证服务主机地址
        "OS_AUTH_PORT": "5000",                 // OpenStack认证服务端口
        "OS_PROJECT_NAME": "your-project",      // 您的OpenStack项目名称
        "OS_USERNAME": "your-username",         // 您的OpenStack用户名
        "OS_PASSWORD": "your-password",         // 您的OpenStack密码
        "OS_USER_DOMAIN_NAME": "Default",       // 您的OpenStack用户域名称
        "OS_PROJECT_DOMAIN_NAME": "Default",    // 您的OpenStack项目域名称
        "OS_REGION_NAME": "RegionOne",          // 您的OpenStack区域名称
        "OS_IDENTITY_API_VERSION": "3",         // OpenStack Identity API版本
        "OS_INTERFACE": "internal",             // OpenStack服务接口类型
        "ALLOW_MODIFY_OPERATIONS": "false",     // 是否允许执行修改OpenStack资源的操作(true/false),默认false为只读
        "MCP_LOG_LEVEL": "INFO"                 // MCP服务器的日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL)
      }
    }
  }
}

Streamable-HTTP 传输配置示例 (如果 MCP 服务器以 HTTP 模式运行) 如果您希望通过 HTTP 连接,并且已在 '.env' 或命令行中配置 'FASTMCP_TYPE=streamable-http' 和相应的 'FASTMCP_HOST'/'FASTMCP_PORT',则可以使用以下配置。如果启用了认证 ('REMOTE_AUTH_ENABLE=true' 和 'REMOTE_SECRET_KEY' ),请务必在 'headers' 中加入 'Authorization' 字段。

{
  "mcpServers": {
    "openstack-ops-http": {
      "type": "streamable-http",
      "url": "http://127.0.0.1:8080/mcp", // 根据您的服务器配置修改主机和端口
      "headers": {
        "Authorization": "Bearer your-secure-secret-key-here" // 如果启用了认证,请替换为您的密钥
      },
      "env": {
        // 在HTTP模式下,通常不需要在env中重复OpenStack认证信息,但如果MCP服务器需要,可以保留
        "OS_AUTH_HOST": "your-openstack-host",
        "OS_USERNAME": "your-username",
        "OS_PASSWORD": "your-password",
        "ALLOW_MODIFY_OPERATIONS": "false" 
      }
    }
  }
}

基本使用方法

一旦服务器运行,您的 MCP 客户端(如兼容 FastMCP 的 LLM 应用程序或 Claude Desktop)即可通过配置连接到此服务器。您可以使用以下方式与服务器进行交互:

  1. 查询集群状态: 询问 LLM:“告诉我OpenStack集群的整体状态。” (内部调用 'get_cluster_status' 工具)

  2. 获取实例详情: 询问 LLM:“列出所有正在运行的虚拟机及其IP地址。” (内部调用 'get_instance_details' 工具)

  3. 管理实例 (如果 'ALLOW_MODIFY_OPERATIONS=true'): 询问 LLM:“启动名为 'webserver-01' 的虚拟机。” (内部调用 'set_instance' 工具)

  4. 搜索网络信息: 询问 LLM:“查找所有包含 'public' 的网络详情。” (内部调用 'get_network_details' 工具)

  5. 查看提示模板: 询问 LLM:“显示完整的OpenStack操作指南。” (内部调用 'prompt_template_full' 提示模板)

安全提示

在生产环境中,强烈建议将 'ALLOW_MODIFY_OPERATIONS' 设置为 'false',以禁用所有可能修改或删除资源的工具,从而只提供只读操作,增强安全性。

信息

分类

商业系统