使用说明
Azure 零售价格 MCP 服务器
一个全面的模型上下文协议(MCP)服务器,用于通过Azure零售价格REST API访问Azure零售定价信息。此服务器支持Azure服务的成本分析、跨区域的价格比较以及节省计划的计算。
特点/功能
🔧 修理工具 可用工具
-
azure_get_service_prices- 获取带有全面过滤功能的Azure零售价格- 按服务名称、服务类别、区域、SKU和价格类型进行筛选
- 支持多种货币
- (产品/服务)包含(在有可用时)的储蓄计划定价
-
azure_compare_region_prices- 比较多个Azure区域的价格- 并排价格比较以优化成本
- 确定最便宜和最贵的地区
- 按地区计算潜在节省金额
-
azure_search_sku_prices- 使用灵活条件搜索SKU定价- 部分SKU名称匹配
- 服务家族过滤
- 可选加入储蓄计划
-
azure_get_service_families- 列出可用的 Azure 服务系列- 发现可用服务及其组织结构
- 示例SKU及价格范围
- 服务描述和用例
-
azure_calculate_savings_plan- 计算储蓄计划收益- 比较按使用量付费与储蓄计划定价
- 不同承诺期限的ROI(投资回报率)分析
- 关于最佳储蓄计划的建议
🌍 表示“地球”或“世界”。 支持的功能
- 多种货币美元、欧元、英镑、日元、加元、澳元、印度卢比、人民币、巴西雷亚尔
- 输出格式Markdown(人类可读)和JSON(机器可读)
- 分页高效处理大型结果集
- 错误处理包含指导的全面错误信息
- 速率限制尊重性地使用API,并设置适当的超时时间
安装
先决条件
- Python 3.8或更高版本
- pip 包管理器
设置
-
安装依赖项:
pip install -r requirements.txt -
使服务器可执行:
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服务
故障排除
常见问题
-
网络超时
- 减少
limit参数 - 检查网络连接
- 尝试使用更简单的过滤器
- 减少
-
未找到结果
- 验证服务名称和区域是否正确
- 尝试使用更宽泛的搜索词
- 检查指定区域是否提供该服务
-
大响应幅度
- 使用更具体的过滤器
- 减少限制参数
- 对于大型数据集,使用分页功能
做出贡献
欢迎投稿!请遵循以下指南:
- 遵循PEP 8编码风格指南
- 添加全面的文档字符串
- 包含错误处理
- 使用多个 Azure 服务进行测试
- 更新文档
许可证
此项目采用MIT许可证授权 - 详情请参阅LICENSE文件。
免责声明
这个工具提供了来自Azure公共API的定价信息。价格仅供参考,可能不反映当前合同定价。请务必通过官方Azure渠道核实价格以用于计费目的。