Azure Pricing MCP Server
使用说明(Markdown 版)
-
项目简介
- 该仓库实现了一个基于 MCP(Model Context Protocol)的服务器端,用于向大语言模型客户端提供 Azure 定价相关的上下文信息与功能。核心功能包括价格查询与比较、成本估算、SKU 探索、区域推荐、批量估算,以及 Spot 工具组的支持等。服务器通过 JSON-RPC 与客户端通信,负责会话生命周期、能力声明、以及调用相应的工具处理请求。
-
主要功能点
- MCP 核心能力
- 能够处理 MCP 请求、路由到相应工具实现,并返回标准化的 JSON-RPC 响应或错误信息。
- 支持会话管理与能力声明,能够在多种传输通道上工作(如 STDIO、SSE/HTTP)。
- 工具与服务
- azure_price_search、azure_price_compare、azure_cost_estimate、azure_discover_skus、azure_sku_discovery、azure_region_recommend、azure_ri_pricing、azure_bulk_estimate、spot_eviction_rates、spot_price_history、simulate_eviction、azure_cache_stats 等工具与服务。
- 通过 ToolHandlers 将请求分发给 PricingService、SKUService、BulkEstimateService、SpotService 等后端服务。
- 数据与缓存
- 使用 PricingCache 对 Azure 定价 API 的查询结果进行 TTL 缓存,降低重复请求。
- 安全与鉴权
- Spot 相关工具需要 Azure 身份认证,提供相应的帮助信息与权限描述接口。
- 传输与部署
- 支持本地开发/调试的 STDIO 传输,以及生产/远程传输的 SSE/HTTP 传输(在 main 中可选择不同传输)。服务器生命周期由 AzurePricingServer 管理,确保会话正确打开与关闭。
- 错误处理与稳定性
- 统一的错误码与错误响应格式,包含字段校验、服务未初始化、内部错误等情形,确保对外始终返回结构化信息。
- MCP 核心能力
-
安装与运行(简要)
- 克隆仓库,进入 mcp/azure-pricing-mcp 子目录。
- 安装依赖(Python 环境,通常通过 pip 安装依赖项,如 requirements 或 pyproject 的内容)。
- 通过命令运行服务器(示例:以 STDIO 模式启动)。服务器会暴露一个 MCP 兼容的入口,等待 MCP 客户端连接并发送请求。
-
服务器配置(MCP 客户端启动配置示例,JSON) 为了让 MCP 客户端正确启动并连接该 MCP 服务器,推荐以下配置(JSON,非代码块形式展示,便于粘贴到配置页): { "server_name": "azure-pricing", "command": "python3", "args": ["-m", "azure_pricing_mcp"], "transport": "stdio" } 注释:
- server_name: MCP 服务器在客户端侧的名称,建议以仓库中的服务器标识为准,即 azure-pricing。
- command: 启动服务器所用的解释器,常见为 python3。
- args: 启动参数,此处通过 -m azure_pricing_mcp 直接执行包中的入口,默认传输为 STDIO。
- transport: 指定传输模式,此处为 STDIO,若改为 HTTP/SSE 需调整客户端配置与服务器 main 流程(具体以实现/部署为准)。
-
基本使用方法
- 启动服务器
- 使用以上配置在 MCP 客户端环境中启动 Azure Pricing MCP Server。服务器进入运行态后,可以接受 MCP 客户端发送的请求。
- 调用示例(由 MCP 客户端发起,请求名称对应工具,如 azure_price_search、azure_cost_estimate 等)
- 发送请求以查询 Azure 定价、进行成本估算、发现 SKU、区域推荐等。
- 返回内容为规范化的 JSON-RPC 响应或格式化后的文本信息,支持 compact / verbose 两种输出格式。
- 组合调用与错误处理
- 客户端可以组合调用多工具,服务器端统一进行参数校验、错误处理、以及结果汇总。
- 对无效输入、缺失字段、或内部异常,服务器将返回结构化错误信息,确保上游客户端可解析处理。
- 启动服务器
-
使用要点与注意
- MCP 协议要点:服务器需要按 JSON-RPC 风格处理请求、返回响应、并在需要时发送通知。该实现通过 ToolHandlers 路由各个工具的调用。
- 安全性:Spot 相关工具需要 Azure 身份验证,若无认证将返回明确的帮助信息。
- 输出格式:主工具默认返回可读文本,支持 compact 输出以适配代理/LLM 场景;discount、输出格式等参数会影响返回文本或附加元数据。
- 缓存与重试:Azure Pricing API 调用具备缓存与重试机制,减少重复请求并在遇到速率限制时延迟重试。
- 生命周期管理:PricingServer 与客户端会话的开启/关闭由服务器端统一管理,避免每次请求都重新建立连接。
-
进一步信息
- 服务器主要入口与路由逻辑位于服务器类 AzurePricingServer、工具注册函数 create_server、以及 _register_tool_handlers 内部函数中。
- 底层依赖包括 AzurePricingClient、PricingService、BulkEstimateService、SKUService、SpotService、ToolHandlers、以及错误/格式化组件等,形成一个可扩展的 MCP 服务端框架。
如需在部署文档中展示更多具体的启动参数、环境变量或示例请求,请参考仓库中的 server、handlers、services、tools 等模块实现细节。上述要点覆盖了核心实现与使用要点,足以评估其是否为有效的 MCP 服务器实现。