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/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 流程(具体以实现/部署为准)。
  • 基本使用方法

    1. 启动服务器
      • 使用以上配置在 MCP 客户端环境中启动 Azure Pricing MCP Server。服务器进入运行态后,可以接受 MCP 客户端发送的请求。
    2. 调用示例(由 MCP 客户端发起,请求名称对应工具,如 azure_price_search、azure_cost_estimate 等)
      • 发送请求以查询 Azure 定价、进行成本估算、发现 SKU、区域推荐等。
      • 返回内容为规范化的 JSON-RPC 响应或格式化后的文本信息,支持 compact / verbose 两种输出格式。
    3. 组合调用与错误处理
      • 客户端可以组合调用多工具,服务器端统一进行参数校验、错误处理、以及结果汇总。
      • 对无效输入、缺失字段、或内部异常,服务器将返回结构化错误信息,确保上游客户端可解析处理。
  • 使用要点与注意

    • 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 服务器实现。

服务器信息