Skip to main content
Glama

MCP CloudOps 演示

一个免费、公开、适合作品集的 模型上下文协议(MCP) 演示,展示 AI 客户端如何在不要求真实 Azure 订阅、API 密钥或生产凭据的情况下,发现并使用 CloudOps 能力。

该服务器公开了由确定性伪造的 Azure 风格基础设施数据支持的 工具、资源和提示。它设计为易于克隆、本地运行、使用 MCP Inspector 检查、容器化,以及后续扩展为真实的 Azure 或 GitHub 集成。

安全性: 此仓库默认从不连接真实基础设施。即使是重启能力也是模拟的。

本演示展示了什么

普通聊天机器人只知道其对话上下文中的内容。而支持 MCP 的客户端还可以发现 MCP 服务器公开的结构化能力。

在此演示中,客户端可以:

  • 发现生产环境和预发布环境的服务器;

  • 检查服务器健康状态和资源利用率;

  • 关联事件、部署和日志;

  • 将基础设施清单作为 MCP 资源读取;

  • 使用可复用的突发事件调查提示;

  • 在获得明确确认后请求模拟操作。

Related MCP server: mcp-azure-toolkit

架构

flowchart LR
    U[User] --> C[MCP-compatible AI client]
    C <-->|MCP over stdio| S[MCP CloudOps Demo Server]

    S --> T[Tools]
    S --> R[Resources]
    S --> P[Prompts]

    T --> D[(Fake Azure-style JSON data)]
    R --> D
    P --> C

    T --> T1[list_servers]
    T --> T2[get_server_health]
    T --> T3[get_recent_deployments]
    T --> T4[get_open_incidents]
    T --> T5[search_logs]
    T --> T6[restart_demo_service]

更大的图表可在 docs/architecture.md 中查看。

使用的 MCP 原语

工具

工具

用途

list_servers

列出演示服务器,可按环境筛选

get_server_health

检查状态、CPU、内存、服务和区域

get_recent_deployments

查看最近的部署

get_open_incidents

获取当前未解决的事件

search_logs

筛选确定性的演示日志

restart_demo_service

模拟重启,需明确确认

资源

URI

用途

infra://inventory/all

完整演示清单

infra://inventory/production

仅生产环境清单

ops://incidents/open

当前未解决的事件

提示

提示

用途

investigate_incident(service)

结构化突发事件调查工作流

daily_cloudops_summary(environment)

简洁的健康摘要工作流

演示场景

假设用户询问:

哪些生产服务器不健康或资源压力过大?

MCP 客户端可以发现并调用 list_servers(environment="prod"),看到 api-prod-02 处于降级状态且 CPU 使用率高,然后决定调用 get_server_health 或检查事件和日志。

后续问题可能是:

调查影响 payments-api 的问题,并告诉我它是否与部署有关。

客户端可以组合多种 MCP 能力:

User request
   |
   v
get_open_incidents("payments-api")
   |
   v
list_servers("prod")
   |
   v
get_server_health("api-prod-02")
   |
   v
get_recent_deployments(service="payments-api")
   |
   v
search_logs(service="payments-api")
   |
   v
AI correlates evidence and explains the likely cause

这就是 MCP 的核心价值主张:模型可以使用标准化的外部能力,而不是将每个集成硬编码到聊天应用程序中。

仓库结构

mcp-cloudops-demo/
├── .github/
│   └── workflows/
│       └── ci.yml
├── docs/
│   └── architecture.md
├── examples/
│   └── prompts.md
├── src/
│   └── mcp_cloudops/
│       ├── data/
│       │   ├── deployments.json
│       │   ├── incidents.json
│       │   ├── logs.json
│       │   └── servers.json
│       ├── prompts/
│       │   └── cloudops.py
│       ├── resources/
│       │   └── cloudops.py
│       ├── tools/
│       │   └── cloudops.py
│       ├── web/
│       │   ├── app.py
│       │   ├── scenario.py
│       │   └── static/
│       │       ├── index.html
│       │       ├── styles.css
│       │       └── app.js
│       ├── server.py
│       └── store.py
├── tests/
│   ├── test_data_relationships.py
│   └── test_store.py
├── Dockerfile
├── docker-compose.yml
├── LICENSE
├── pyproject.toml
└── README.md

环境要求

  • Python 3.11 或更高版本

  • pipuv 或其他 Python 包管理器

  • 可选:Docker

  • 可选:兼容 MCP 的客户端或 MCP Inspector

使用 Python 快速开始

克隆仓库并创建虚拟环境:

git clone https://github.com/BozyBonifacio/mcp-cloudops-demo.git
cd mcp-cloudops-demo
python -m venv .venv

激活它。

Linux/macOS:

source .venv/bin/activate

Windows PowerShell:

.\.venv\Scripts\Activate.ps1

安装项目:

python -m pip install -e '.[dev]'

通过 stdio 运行 MCP 服务器:

mcp-cloudops-demo

进程会等待 MCP 客户端通过 stdin/stdout 通信。这是预期行为。

详细的 Windows 运行指南

在 PowerShell 中:

git clone https://github.com/BozyBonifacio/mcp-cloudops-demo.git
cd mcp-cloudops-demo
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
mcp-cloudops-demo

如果 PowerShell 阻止激活虚拟环境,请仅为当前终端会话允许脚本:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\.venv\Scripts\Activate.ps1

mcp-cloudops-demo 启动后看起来处于空闲状态,这是预期行为。此演示通过 stdio 使用 MCP,等待 MCP 客户端连接,而不是打开网页。按 Ctrl+C 停止它。

基于浏览器的作品集演示

演示该项目最简单的方式是使用内置的浏览器 UI。它 不需要付费的 LLM API 密钥,并且充当真实的 MCP 客户端:FastAPI 后端通过 stdio 启动本地 MCP 服务器,发现其能力,调用 MCP 工具,并将结果返回给浏览器。

安装项目后启动它:

mcp-cloudops-web

然后打开:

http://localhost:8000

页面包括:

  • 操作员风格的聊天界面;

  • 建议的 CloudOps 调查提示;

  • 运行时 MCP 能力发现;

  • MCP 跟踪,显示每次工具调用及其参数;

  • 确定性的突发事件调查工作流,无需外部 AI 服务;

  • 模拟重启的现有安全行为。

推荐的首个提示是:

调查影响 payments-api 的未解决事件,并告诉我可能的原因。

浏览器后端将使用 MCP 调用多个工具,如 get_open_incidentslist_serversget_recent_deploymentssearch_logs,然后显示结论和 MCP 调用跟踪。

为什么是确定性聊天? 浏览器演示有意不要求 OpenAI、Azure OpenAI、Anthropic 或其他付费模型 API。一个小型意图路由器识别包含的演示场景,而 MCP 仍负责能力发现和工具执行。你可以稍后将路由器替换为 LLM,而无需更改 MCP 服务器契约。

浏览器演示架构

Browser
   |
   | HTTP /api/chat
   v
FastAPI browser backend
   |
   | MCP over stdio
   v
MCP CloudOps Server
   |
   +--> Tools
   +--> Resources
   +--> Prompts
   |
   v
Fake Azure-style JSON data

使用 Docker 运行浏览器演示

构建并启动容器:

docker compose up --build

然后打开:

http://localhost:8000

使用 Ctrl+C 停止它,然后可选地移除容器:

docker compose down

使用 MCP Inspector 测试

官方 Python MCP SDK 在安装 CLI 附加组件时包含开发工具。

如果你的环境中有 MCP CLI,请运行:

mcp dev src/mcp_cloudops/server.py

然后打开终端中打印的 Inspector URL。探索 工具资源提示 选项卡。

如果 mcp 未作为 CLI 命令安装,请安装 SDK CLI 附加组件:

python -m pip install 'mcp[cli]'

推荐的 MCP Inspector 演练

启动 Inspector 后,使用此序列演示多个 MCP 能力如何协同完成一次调查:

  1. 使用 environment = prod 调用 list_servers

  2. 使用 server_name = api-prod-02 调用 get_server_health

  3. 调用 get_open_incidents 并调查 payments-api

  4. payments-api 调用 get_recent_deployments

  5. 为受影响的服务器/服务调用 search_logs 并检查 ERROR 事件。

list_servers("prod")
        |
        v
get_server_health("api-prod-02")
        |
        v
get_open_incidents("payments-api")
        |
        v
get_recent_deployments(service="payments-api")
        |
        v
search_logs(service="payments-api")
        |
        v
AI correlates the evidence

推荐的实时演示提示

调查影响 payments-api 的未解决事件。确定受影响的服务器、其健康状态、最近的部署是否与事件相关、日志显示了什么,以及最可能的原因。

要解释的关键点是:MCP 服务器公开标准化的能力,兼容 MCP 的主机可以发现并组合这些能力,而不是依赖一个硬编码的聊天机器人工作流。

Windows MCP 客户端配置

在 Windows 上使用虚拟环境时,建议使用其 Python 可执行文件的绝对路径。例如,如果仓库位于 C:\github\mcp-cloudops-demo

{
  "mcpServers": {
    "cloudops-demo": {
      "command": "C:\\github\\mcp-cloudops-demo\\.venv\\Scripts\\python.exe",
      "args": ["-m", "mcp_cloudops.server"]
    }
  }
}

将示例路径替换为你实际的克隆位置。这可以避免意外启动不包含项目依赖的其他 Python 安装。

故障排除

如果 mcp-cloudops-demo 无法识别,请激活 .venv 并重新安装项目:

.\.venv\Scripts\Activate.ps1
python -m pip install -e ".[dev]"

你还可以尝试:

python -m mcp_cloudops.server

如果 mcp 无法识别:

python -m pip install "mcp[cli]"
mcp dev src/mcp_cloudops/server.py

如果你遇到 ModuleNotFoundError: mcp_cloudops,请确保你位于仓库根目录,重新安装可编辑包,并验证导入:

python -m pip install -e ".[dev]"
python -c "import mcp_cloudops; print('mcp_cloudops import OK')"

运行测试

pytest

运行代码检查:

ruff check src tests

使用 Docker 运行

Docker 镜像现在默认启动浏览器 UI。

docker build -t mcp-cloudops-demo .
docker run --rm -p 8000:8000 mcp-cloudops-demo

打开 http://localhost:8000

或者使用 Docker Compose:

docker compose up --build

要在镜像内运行原始的 stdio MCP 服务器:

docker run --rm -i --entrypoint mcp-cloudops-demo mcp-cloudops-demo

示例客户端配置

MCP 主机通常只需要启动 stdio 服务器的命令。确切的配置格式取决于你的客户端。

一个典型的本地配置在概念上如下所示:

{
  "mcpServers": {
    "cloudops-demo": {
      "command": "python",
      "args": ["-m", "mcp_cloudops.server"]
    }
  }
}

如果包安装到虚拟环境中,请将主机指向该环境的 Python 可执行文件,或使用已安装的 mcp-cloudops-demo 命令。

建议的提示

试试:

  • 哪些生产服务器不健康或资源压力过大?

  • 调查影响 payments-api 的未解决事件。

  • 最近的部署是否与当前生产问题相关?

  • 显示 api-prod-02 的 ERROR 日志并解释可能的原因。

  • 对 payments-api 使用 investigate_incident 提示。

  • 读取 infra://inventory/production 并总结容量风险。

  • 模拟重启 api-prod-02,但先请求我的确认。

更多示例请参见 examples/prompts.md

为什么使用伪造数据?

公开的 MCP 演示应该让任何人都能运行,而无需暴露机密或产生云支出。JSON 夹具提供:

  • 零基础设施成本;

  • 演示的确定性行为;

  • 安全的公开源代码管理;

  • 可重复的自动化测试;

  • MCP 能力与最终真实数据源之间的清晰边界。

将演示扩展到真实 Azure

最简单的升级路径是保留面向 MCP 的函数,并将 load_json() 替换为适配器层。

例如:

MCP Tool
   |
   v
CloudOps service interface
   |
   +--> DemoJsonProvider
   |
   +--> AzureProvider
          |
          +--> Azure Resource Graph
          +--> Azure Monitor
          +--> Log Analytics
          +--> Azure DevOps / GitHub

潜在的真实集成包括:

  • Azure Resource Graph 用于虚拟机/资源清单;

  • Azure Monitor 用于指标;

  • Log Analytics 用于 KQL 查询;

  • Azure Update Manager 用于补丁状态;

  • GitHub 用于提交、拉取请求和 Actions 运行;

  • Azure DevOps 用于管道和部署历史。

对于公开的作品集版本,建议使用只读权限,并使用环境变量或托管标识,而不是将凭据存储在仓库中。

示例:未来的多服务器场景

该项目的更强第二版可以演示 AI 客户端关联多个 MCP 服务器上的数据:

Developer
  |
  | "Why did the deployment fail?"
  v
AI / MCP Host
  |
  +--> GitHub MCP server ------> commit / pull request
  |
  +--> Azure MCP server -------> deployment status
  |
  +--> Observability MCP ------> application logs
  |
  v
Correlated incident explanation

这展示了协议的价值:每个领域可以独立公开能力,而主机提供对话编排。

安全注意事项

此仓库有意遵循多种安全演示模式:

  • 不提交任何机密;

  • 不需要云凭据;

  • 操作数据是虚构的;

  • 写类操作是模拟的;

  • 模拟重启需要显式的 confirmed=true 参数;

  • GitHub Actions 使用只读的仓库内容权限;

  • 测试验证夹具关系,确保演示保持连贯。

如果你将伪造的提供程序替换为真实基础设施,请在公开可变工具之前添加身份验证、授权、审计日志、最小权限访问、输入验证和确认控制。

CI

包含的 GitHub Actions 工作流在推送和拉取请求时运行,并验证:

  • Python 3.11;

  • Python 3.12;

  • Ruff 代码检查;

  • Pytest 测试。

有用的 MCP 参考

许可证

MIT。参见 LICENSE

作品集要点

演示此仓库时,强调以下几点:

  1. AI 主机与 MCP 服务器是分离的。

  2. 服务器公开能力,而不是嵌入聊天机器人逻辑。

  3. 工具是操作/查询,资源是可寻址的上下文,提示是可复用的工作流。

  4. 同一个 MCP 服务器可以被不同的兼容主机使用。

  5. 伪造数据提供程序可以在不重新设计 MCP 接口的情况下被替换。

  6. 可变操作应比只读操作具有更强的授权和确认控制。


作为一个教育性 CloudOps 示例构建。默认数据集中的所有基础设施名称、事件、部署和指标均为虚构。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • Official Microsoft MCP Server to query Microsoft Entra data using natural language

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/BozyBonifacio/mcp-cloudops-demo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server