项目简介
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环境中高效运行。
安装步骤
- 克隆仓库:
git clone https://github.com/call518/MCP-OpenStack-Ops.git cd MCP-OpenStack-Ops - 安装依赖: 使用 'uv' 工具同步项目依赖。
uv sync - 配置环境: 复制 '.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 - 运行服务器 (推荐使用Docker):
Docker Compose 会启动以下服务:docker-compose up -d # 查看日志: # docker-compose logs mcp-server # docker-compose logs mcpo-proxy- '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)即可通过配置连接到此服务器。您可以使用以下方式与服务器进行交互:
-
查询集群状态: 询问 LLM:“告诉我OpenStack集群的整体状态。” (内部调用 'get_cluster_status' 工具)
-
获取实例详情: 询问 LLM:“列出所有正在运行的虚拟机及其IP地址。” (内部调用 'get_instance_details' 工具)
-
管理实例 (如果 'ALLOW_MODIFY_OPERATIONS=true'): 询问 LLM:“启动名为 'webserver-01' 的虚拟机。” (内部调用 'set_instance' 工具)
-
搜索网络信息: 询问 LLM:“查找所有包含 'public' 的网络详情。” (内部调用 'get_network_details' 工具)
-
查看提示模板: 询问 LLM:“显示完整的OpenStack操作指南。” (内部调用 'prompt_template_full' 提示模板)
安全提示
在生产环境中,强烈建议将 'ALLOW_MODIFY_OPERATIONS' 设置为 'false',以禁用所有可能修改或删除资源的工具,从而只提供只读操作,增强安全性。
信息
分类
商业系统