Azure零售价格查询服务

一个通过Azure零售价格REST API提供成本分析、跨区域价格比较和节省计划计算的综合服务。

  • by matt-edwards-aztech
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 matt-edwards-aztech/AzurePricingMCP

使用说明

Azure 零售价格 MCP 服务器

一个全面的模型上下文协议(MCP)服务器,用于通过Azure零售价格REST API访问Azure零售定价信息。此服务器支持Azure服务的成本分析、跨区域的价格比较以及节省计划的计算。

特点/功能

🔧 修理工具 可用工具

  1. azure_get_service_prices - 获取带有全面过滤功能的Azure零售价格

    • 按服务名称、服务类别、区域、SKU和价格类型进行筛选
    • 支持多种货币
    • (产品/服务)包含(在有可用时)的储蓄计划定价
  2. azure_compare_region_prices - 比较多个Azure区域的价格

    • 并排价格比较以优化成本
    • 确定最便宜和最贵的地区
    • 按地区计算潜在节省金额
  3. azure_search_sku_prices - 使用灵活条件搜索SKU定价

    • 部分SKU名称匹配
    • 服务家族过滤
    • 可选加入储蓄计划
  4. azure_get_service_families - 列出可用的 Azure 服务系列

    • 发现可用服务及其组织结构
    • 示例SKU及价格范围
    • 服务描述和用例
  5. azure_calculate_savings_plan - 计算储蓄计划收益

    • 比较按使用量付费与储蓄计划定价
    • 不同承诺期限的ROI(投资回报率)分析
    • 关于最佳储蓄计划的建议

🌍 表示“地球”或“世界”。 支持的功能

  • 多种货币美元、欧元、英镑、日元、加元、澳元、印度卢比、人民币、巴西雷亚尔
  • 输出格式Markdown(人类可读)和JSON(机器可读)
  • 分页高效处理大型结果集
  • 错误处理包含指导的全面错误信息
  • 速率限制尊重性地使用API,并设置适当的超时时间

安装

先决条件

  • Python 3.8或更高版本
  • pip 包管理器

设置

  1. 安装依赖项:

    pip install -r requirements.txt
    
  2. 使服务器可执行:

    chmod +x azure_pricing_mcp.py
    

使用方法

运行服务器

标准I/O传输(默认)

python azure_pricing_mcp.py

HTTP传输

python azure_pricing_mcp.py --transport http --port 8000

SSE运输(或译为:苏格兰电力运输公司)

python azure_pricing_mcp.py --transport sse --port 8000

交通方式

交通 使用场景 通信
Stdio(通常指标准输入输出库或类似概念,在具体语境中可能翻译为“标准I/O库”或保持原样以指代特定技术/编程概念) 本地/CLI 集成 通过标准输入/输出进行双向通信
HTTP(超文本传输协议) Web服务,多个客户端 通过HTTP进行请求-响应
上海证券交易所 实时更新 通过HTTP进行的服务器发送事件

工具示例

1. 获取虚拟机价格

输入:

{
  "service_name": "Virtual Machines",
  "service_family": "Compute",
  "region": "eastus",
  "currency": "USD",
  "limit": 10
}

用法:

  • 比较不同SKU(库存单位)的虚拟机(VM)定价
  • 寻找最具成本效益的计算方案
  • 分析定价趋势以进行容量规划

2. 比较存储区域

输入:

{
  "service_name": "Storage",
  "regions": ["eastus", "westeurope", "uksouth", "australiaeast"],
  "currency": "USD"
}

用法:

  • 确定最具成本效益的存储区域
  • 计算数据传输成本影响
  • 优化多区域部署成本

3. 搜索数据库SKU(库存单位)

输入:

{
  "search_term": "SQL",
  "service_family": "Databases",
  "include_savings_plans": true,
  "currency": "EUR"
}

用法:

  • 发现可用的SQL数据库选项
  • 比较托管服务与自托管的成本
  • 评估数据库的节省计划收益

4. 计算储蓄计划福利

输入:

{
  "service_name": "Virtual Machines",
  "sku_name": "Standard_D4s_v3",
  "region": "westus2",
  "currency": "USD"
}

用法:

  • 确定一年承诺与三年承诺的投资回报率(ROI)
  • 计算不同使用模式下的盈亏平衡点
  • 优化预订采购决策

集成示例

Claude 桌面集成

在您的Claude桌面配置中添加:

{
  "mcpServers": {
    "azure-pricing": {
      "command": "python",
      "args": ["/path/to/azure_pricing_mcp.py"]
    }
  }
}

程序化使用

import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def get_vm_prices():
    server_params = StdioServerParameters(
        command="python",
        args=["azure_pricing_mcp.py"]
    )
    
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            
            result = await session.call_tool(
                "azure_get_service_prices",
                {
                    "service_name": "Virtual Machines",
                    "region": "eastus",
                    "limit": 5
                }
            )
            print(result.content[0].text)

asyncio.run(get_vm_prices())

最佳实践

1. 高效过滤

  • 使用特定的服务名称和区域来减少结果集
  • 应用服务族过滤器进行定向搜索
  • 结合多个过滤器以获得精确结果

2. 分页管理

  • 开始时使用较小的限制(50-100)进行初步探索
  • 对大数据集使用分页功能
  • 监控响应大小以避免超时

3. 货币考量因素

  • 在预算规划中使用当地货币
  • 美元提供了最全面的数据
  • 在长期规划中考虑汇率波动

4. 错误处理

  • 检查网络连接问题
  • 在调用API之前验证输入参数
  • 为瞬时故障实现重试逻辑

API限制

  • 速率限制未记录明确限制,但建议合理使用
  • 数据新鲜度微软定期更新定价
  • 区域覆盖覆盖所有公共 Azure 区域
  • 服务覆盖范围包含所有第一方Azure服务

故障排除

常见问题

  1. 网络超时

    • 减少 limit 参数
    • 检查网络连接
    • 尝试使用更简单的过滤器
  2. 未找到结果

    • 验证服务名称和区域是否正确
    • 尝试使用更宽泛的搜索词
    • 检查指定区域是否提供该服务
  3. 大响应幅度

    • 使用更具体的过滤器
    • 减少限制参数
    • 对于大型数据集,使用分页功能

做出贡献

欢迎投稿!请遵循以下指南:

  1. 遵循PEP 8编码风格指南
  2. 添加全面的文档字符串
  3. 包含错误处理
  4. 使用多个 Azure 服务进行测试
  5. 更新文档

许可证

此项目采用MIT许可证授权 - 详情请参阅LICENSE文件。

免责声明

这个工具提供了来自Azure公共API的定价信息。价格仅供参考,可能不反映当前合同定价。请务必通过官方Azure渠道核实价格以用于计费目的。