Azure定价查询服务

一个通过Model Context Protocol (MCP)服务器程序化查询Azure资源定价的服务,提供从Azure零售价格API获取实时定价信息的结构化工作流程。

  • by sboludaf
  • Python
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 sboludaf/mcp-azure-pricing

使用说明

Azure定价MCP服务器

此项目提供了一个模型上下文协议(MCP)服务器,允许您以编程方式查询Azure资源定价。该服务器提供了一个结构化的工作流程,用于从Azure零售价格API检索定价信息。

特性

  • 通过简单、结构化的工作流查询Azure定价数据
  • 从Azure零售价格API获取实时定价信息
  • 浏览Azure服务系列、服务名称和产品
  • 计算Azure资源的每月成本

系统要求

  • Python 3.8或更高版本
  • 访问Azure零售价格API的Internet连接
  • 安装Python包的权限
  • 不需要Azure帐户或凭据(使用公共定价API)

安装

  1. 克隆存储库:

    git clone https://github.com/sboludaf/mcp-azure-pricing.git
    cd mcp-azure-pricing
    
  2. 创建并激活虚拟环境:

    python -m venv .venv
    
    • 窗户:
      .venv\Scripts\activate
      
    • macOS/Linux:
      source .venv/bin/activate
      
  3. 安装依赖项:

    pip install -r requirements.txt
    

用法

MCP服务器提供了一个结构化的四步工作流,用于访问Azure定价信息:

  1. 获得服务家庭 -检索可用Azure服务系列的列表
  2. 获取服务名称 -获取特定系列中的服务名称
  3. 获取产品 -获取与服务关联的产品
  4. 计算每月成本 -计算特定产品的每月成本

启动MCP服务器

source .venv/bin/activate  # Activate the virtual environment
python azure_pricing_mcp_server.py

服务器将在以下时间启动 http://0.0.0.0:8080 默认情况下。

可用端点

  • GET /sse:MCP通信的服务器发送事件端点
  • GET /tools:列出MCP服务器中的可用工具

MCP客户端配置

要配置MCP客户端以连接到此服务器,请将以下内容添加到您的 mcp_config.json 文件:

"azure-pricing": {
  "serverUrl": "http://localhost:8080/sse"
}

此配置告诉MCP客户端使用SSE端点连接到端口8080上的本地服务器。确保URL与服务器运行的地址和端口匹配。

MCP工具

该服务器提供四个主要工具,形成查询Azure定价的逻辑工作流:

1.列表_服务_家庭

描述:根据Microsoft的官方文档列出Azure中所有可用的服务系列。

2.获取服务名称

描述:获取指定服务系列中的所有唯一服务名称。

参数:

  • service_family:要查询的服务系列(例如,“计算”、“存储”)
  • region:Azure区域(默认:“西欧”)
  • max_results:要处理的最大结果数

3.获取产品

描述:从特定服务系列获取产品名称。

参数:

  • service_family:要查询的服务系列
  • region:Azure区域(默认:“西欧”)
  • type:价格类型(可选,例如“消费”、“预订”)
  • service_name:要筛选的服务名称(可选)
  • product_name_contains:筛选名称包含此文本的产品(可选)
  • limit:可退回的最大产品数量(可选)

4.每月费用

描述:计算特定Azure产品的每月成本。

参数:

  • product_name:产品的确切名称(例如,“Azure应用服务高级v3计划”)
  • region:Azure区域(默认:“西欧”)
  • monthly_hours:每月小时数(默认值:730)
  • type:价格类型(可选,例如“消费”)

错误处理

MCP服务器包括一个强大的错误处理系统,该系统:

  • 找不到资源时提供描述性错误消息
  • 正确处理Azure API错误
  • 记录用于调试的详细信息

常见错误场景

  • 产品未找到:当指定区域中不存在产品名称时
  • 未找到服务系列:指定无效的服务系列时
  • API费率限制:当超过Azure零售价格API费率限制时
  • 网络错误:当服务器无法连接到Azure API时

局限性

  • 价格是根据Azure零售价格API的公开信息估计的
  • 不包括所有可能的折扣、特定账户的优惠或税费或支持等额外费用
  • Azure零售价格API的费率限制可能会影响高请求量的性能
  • 价格可能因所选地区和货币而异
  • 并非所有Azure资源在所有地区都可用

贡献

欢迎投稿!以下是您如何为这个项目做出贡献:

  1. 分叉存储库
  2. 创建要素分支: git checkout -b feature/amazing-feature
  3. 提交您的更改: git commit -m 'Add some amazing feature'
  4. 推到分支: git push origin feature/amazing-feature
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。