Azure金融运营MCP服务器

一个MCP服务器,将强大的Azure金融运营功能直接集成到AI助手中,用于分析云成本、审计浪费和获取预算洞察。

  • by julianobarbosa
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 julianobarbosa/azure-finops-mcp-server

使用说明

Azure FinOps MCP服务器

MCP(模型上下文协议)服务器,将强大的Azure FinOps功能直接引入您的AI助手。使用自然语言分析云成本、审计浪费并获取预算见解,同时确保您的凭据在本地计算机上的安全。

为什么使用Azure FinOps MCP服务器?

管理Azure成本可能很复杂。要找到诸如“我们上个月在存储上花了多少钱?”或“我们有任何停止的虚拟机吗?”等问题的答案,通常需要浏览Azure门户或编写脚本。

此服务器通过将LLM强大的自然语言理解直接连接到Azure订阅的财务数据,弥合了这一差距。您可以在不离开聊天界面的情况下提出复杂的问题,并获得即时、可操作的见解。

使用案例:

克劳德桌面上的提示: “获取 usage-type 基于过去90天内我所有Azure订阅的成本。并得到 audit report 适用于该地区的所有订阅 eastus以简洁的方式用数据制作财务报告,并保持专业性。"

Amazon Q CLI上的提示: “你能用一下吗 azure-finops mcp服务器,获取过去6个月内每月的成本数据 subscription Production 并以表格形式呈现数据,突出显示每月总成本和每项服务的成本是如何变化的?"

克劳德桌面上的提示: “使用Azure finops MCP服务器中可用的所有工具生成全面的finops报告以供管理。使用所有可用的订阅,并在需要时使用eastus地区。”

Claude使用Azure FinOps MCP服务器生成的其他示例报告

网络使用和成本分析报告

综合金融运营报告


🚀 v2.0.0的新增功能

  • 100%架构合规性:在架构验证中获得满分(142/142)
  • 演出:通过并行处理和优化的批处理操作,速度提高了4.9倍
  • 安全:所有高严重性问题均已解决,生产就绪的安全态势
  • 模块化设计:重构为重点突出、可维护的模块(每个功能<50行)
  • 增强测试:97.7%的测试覆盖率,包括全面的单元和集成测试
  • 完整CI/CD:GitHub Actions管道,具有自动化测试和部署功能
  • 更好的错误处理:重试逻辑、断路器和优雅降级

查看完整发行说明


目录

  1. 什么是MCP服务器?
  2. 为什么使用Azure FinOps MCP服务器?
  3. 主要特点
  4. 先决条件
  5. 安装
  6. 配置
  7. 用法和示例提示
  8. 工具参考
  9. 成本考虑
  10. 发展与贡献
  11. 许可证

主要特点

  • 详细成本分析:使用标签、时间范围和服务分组查询Azure成本数据。
  • 自动化金融运营审计:立即找到云浪费的常见来源,如停止的VM、未连接的托管磁盘和未关联的公共IP等。
  • 预算监控:检查Azure预算的状态,看看你是否在正轨上、超出预算或预计会超出限额。
  • 多订阅和多地区:在单个命令中跨任何或所有Azure订阅和区域进行无缝查询。
  • 设计安全:您的Azure凭据 永远不要离开你的机器。服务器在本地运行,并使用您现有的Azure CLI配置直接对Azure进行API调用。

先决条件

通用要求

  • Python 3.10+:确保安装了兼容的Python版本。
  • MCP客户端:支持MCP的应用程序。本指南使用 Claude桌面版 作为示例。

Azure要求和IAM权限

  • Azure命令行界面:The 必须安装Azure CLI 在你的机器上。
  • Azure订阅:您至少需要一个具有活动凭据的Azure订阅。
  • Azure权限:Azure标识(服务主体或用户)需要特定的只读权限才能正常运行。

您的Azure身份需要以下内置角色或等效的自定义权限。这些权限是 只读的 并且仅授予对必要服务的访问。

所需的Azure角色:

  • 成本管理阅读器:用于访问成本和使用数据
  • 读者:用于访问资源信息(VM、磁盘、IP)

或者,创建具有以下权限的自定义角色:

  • Microsoft.CostManagement/*/read
  • Microsoft.Consumption/*/read
  • Microsoft.Compute/virtualMachines/read
  • Microsoft.Compute/virtualMachines/instanceView/read
  • Microsoft.Compute/disks/read
  • Microsoft.Network/publicIPAddresses/read
  • Microsoft.Resources/subscriptions/read
  • Microsoft.Resources/subscriptions/resourceGroups/read

安装

有几种方法可以安装Azure FinOps MCP服务器:

选项1:使用uv(推荐-快速Python包管理器)

紫外线 是一个速度极快的现代Python包安装程序和解析器。

# Install uv if you don't have it yet
curl -LsSf https://astral.sh/uv/install.sh | sh

# Create project directory
mkdir azure-finops-mcp-server && cd azure-finops-mcp-server

# Create and activate python virtual environment
uv venv && source .venv/bin/activate

# Install azure-finops-mcp-server
uv pip install azure-finops-mcp-server

选项2:使用pipx

pipx install azure-finops-mcp-server

如果你没有 pipx,安装时使用:

python -m pip install --user pipx
python -m pipx ensurepath

选项3:来源

# Clone the repository
git clone https://github.com/julianobarbosa/azure-finops-mcp-server.git
cd azure-finops-mcp-server

# Create and activate python virtual environment
python -m venv .venv && source .venv/bin/activate

# Install using pip
pip install -e .

配置

步骤1:Azure CLI设置

如果您还没有,请登录Azure并设置您的订阅:

# Login to Azure
az login

# List available subscriptions
az account list

# Set a default subscription (optional)
az account set --subscription "Your Subscription Name"

Azure CLI将通过浏览器或设备代码流处理身份验证。您的凭据由Azure CLI安全存储和管理。

步骤2:MCP客户端设置(桌面版Claude)

要将此服务器与Claude for Desktop一起使用,您需要告诉应用程序如何运行它。

  1. 打开Claude for Desktop配置文件。它位于:

    • macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  2. 将以下条目添加到 mcpServers 对象。如果文件不存在或为空,则需要创建JSON结构。

    {
      "mcpServers": {
        "azure_finops": {
          "command": "azure-finops-mcp-server",
          "args": []
        }
      }
    }
    
  3. 保存文件并 完全重新启动Claude for Desktop.

重启后,服务器将在后台启动,其工具将可供Claude使用。

⚠️ 注: 安装此工具后(例如,通过 uv pip install azure-finops-mcp-server),确保 azure-finops-mcp-server 命令在您的系统中可用 PATH.

要检查其安装位置,请运行:

which azure-finops-mcp-server

如果它返回一条类似的路径 /Users/yourname/.local/bin/azure-finops-mcp-server,但它是 不在你的路径中,您有两个选择:

  • 如果使用pipx:运行 pipx ensurepath 并重新启动您的终端, 或
  • 如果使用uv:确保您的虚拟环境已激活, 或
  • 使用您的完整路径 mcpServers 配置:
{
  "mcpServers": {
    "azure_finops": {
      "command": "/full/path/to/azure-finops-mcp-server",
      "args": []
    }
  }
}

用法和示例提示

现在,您可以用简单的英语询问有关Azure财务的问题。

用例:成本和使用分析

基本查询: “显示我的Azure成本 Production 本月订阅。"

时间范围查询: “为我的天蓝色成本 Development 过去14天的订阅”

筛选和分组查询: “我的成本是多少 Production 上个月订阅,按标签筛选 CostCenter=Project-Alpha,并按以下方式分组 MeterSubcategory?"

多订阅查询: “比较我的成本 Staging 和 Production 过去30天的订阅。"

用例:FinOps浪费和节省审计

简单审计: “对我的账户进行finops审计 Production 订阅 eastus."

多区域、多订阅审核: “检查中未使用的资源 westus2 和 westeurope 为了我的 Prod-US 和 Prod-EU 订阅。"

对所有订阅进行全面审核: “对我在中配置的所有订阅运行FinOps审核 eastus."

支持的客户

  • 克劳德桌面
  • 亚马逊Q CLI
  • 任何与MCP兼容的客户端支持工具

在以下位置查看支持MCP服务器的客户端列表 https://modelcontextprotocol.io/clients

工具参考

get_cost

从Azure成本管理获取成本和使用数据。

参数 类型 说明
profiles List[str] 要使用的Azure订阅名称或ID的列表。
all_profiles bool 如果 True,使用所有可用的订阅。默认为 False.
time_range_days int 过去获取数据的天数(例如。, 7 过去7天)。
start_date_iso str 开始日期 YYYY-MM-DD 格式。优先于 time_range_days.
end_date_iso str 结束日期 YYYY-MM-DD 格式。必须与 start_date_iso.
tags List[str] 按成本分配标签过滤。格式: ["Key=Value", "Key2=Value2"].
dimensions List[str] 按尺寸过滤。格式: ["REGION=us-east-1"].
group_by str 按维度对成本进行分组。默认值为 ServiceName.

run_finops_audit

进行财务审计,以发现未使用且可能成本高昂的资源。

参数 类型 说明
regions List[str] 运行审核的Azure区域列表(例如。, ["eastus", "westeurope"]).
profiles List[str] 要使用的Azure订阅名称或ID的列表。
all_profiles bool 如果 True,使用所有可用的配置文件。默认为 False.

输出格式: JSON、CSV、PDF、HTML、Markdown(取决于客户端功能)

成本考虑

此工具与Azure成本管理API交互。Azure对这些API调用收费。

  • 成本: 每次使用 get_cost 工具,它对成本资源管理器API进行2次调用 $0.01.
  • 这 run_finops_audit 该工具调用其他Azure服务API(计算、网络、消费),这些API通常包含在免费层中,或者在典型的使用级别上成本可以忽略不计。

发展与贡献

欢迎投稿!如果您想改进服务器或添加新功能,请按照以下步骤操作:

  1. 分叉和克隆: 分叉存储库并将其克隆到本地计算机。
  2. 使用紫外线设置环境:
    git clone https://github.com/your-username/azure-finops-mcp-server.git
    cd azure-finops-mcp-server
    uv venv
    source .venv/bin/activate  # On Windows, use `.venv\Scripts\activate`
    
  3. 使用uv在可编辑模式下安装:
    uv pip install -e .
    
  4. 进行更改: 添加您的功能或错误修复。
  5. 提交拉取请求: 针对 main 分支,清楚地描述您的更改。

许可证

该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取完整详细信息。


这是受AWS FinOps MCP服务器项目的启发

最初由 拉维·基兰 对于AWS,通过以下方式迁移到Azure 朱利亚诺Barbosa