mcpField
P
partner-center-mcp

partner-center-mcp

本地服务
github.com/tunahanaliozturk开发工具27 周前更新

关于 partner-center-mcp

partner-center-mcp 是面向 Partner Center REST API 开发者的非官方 MCP 服务。它从内置知识包提供经核实的场景、身份验证指导、代码生成和错误诊断,不会调用 Partner Center。

主要功能

  1. 01查询 REST 场景及约束
  2. 02生成四种语言的 API 调用
  3. 03检查请求和身份验证模式
  4. 04规划购买与订阅工作流
  5. 05解码错误并诊断症状
  6. 06浏览参考资料和文档

适用场景

  1. 01查找 Partner Center 任务对应的端点和请求头
  2. 02将已归档的 .NET SDK 代码迁移为 REST 场景
  3. 03排查身份验证失败和 API 错误

MCP 相关

通过 MCP 工具、资源和提示词提供 Partner Center REST API 指导。它读取内置知识包,并在未找到答案时使用缓存的 Microsoft Learn 搜索;不会调用 Partner Center。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"tunahanaliozturk-partner-center": {
"command": "npx",
"args": [
"-y",
"partner-center-mcp"
]
}
}
}
启动命令npx -y partner-center-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmpartner-center-mcp0.18.0

工具

28

收录的工具列表 · 更新于 3 周前

参数类型必填说明
areaenum否将列表限制为一个功能领域。可选值:customers、subscriptions、orders、licenses、invoicing、profiles、auth、catalog、utilities、audit、support、security、analytics、devices、referrals。省略则列出所有领域中的所有场景。customers | subscriptions | orders | licenses | invoicing | profiles | auth | catalog | utilities | audit | support | security | analytics | devices | referrals

详细介绍

partner-center-mcp

partner-center-mcp MCP server

基于 Partner Center REST API 开发,意味着要长期查阅 Microsoft Learn。两百多个端点页面、在搜索结果中仍会出现的已归档 .NET SDK,以及单独来看几乎毫无帮助的错误代码。

这个 MCP 服务将这些知识放在你的 Agent 身边。询问如何取消订阅,你就能获得经过验证的方法、路径、标头、可运行的代码示例,以及文档页面实际提醒的限制。它不会保存凭据,也不会调用 Partner Center。每个回答都来自随附的知识包;若无匹配内容,则回退到缓存的 Microsoft Learn 搜索。

非官方社区项目。 与 Microsoft 无关联、未获其赞助或认可。 “Partner Center”和“Microsoft”是 Microsoft 的商标,此处仅作描述性使用。

原因

Microsoft 于 2023 年 6 月归档了 Partner Center .NET SDK(3.4.0),并建议合作伙伴改用 REST API。仍有大量代码尚未迁移。已弃用的 graph.windows.net 受众仍会导致 401 / 900420 错误;从 2026-04-01 起,App+User API 调用将强制要求 MFA。

因此,这个服务会做两件事:展示最新的 REST 和身份验证模式,并说明迁移过程中遇到的错误。

工作原理

你的 MCP 主机(Claude Code、Cursor、Copilot、VS Code)通过 MCP 与服务通信,默认使用 stdio,也可以选择 HTTP。服务读取一个知识包,该知识包在加载时会通过 zod 验证,并以官方 Learn 页面为依据。知识包中没有答案时,服务会回退到缓存的文档搜索。

MCP 主机通过 stdio 或 HTTP 与 partner-center-mcp 通信。服务提供工具、资源和提示词,基于通过 zod 验证的知识包回答问题,并在必要时回退到缓存的 Microsoft Learn 搜索;每周运行一次 CI 作业,根据文档检查知识包。

一次典型调用:Agent 选择 pc_generate_call 之类的工具,服务在知识包中查找相应场景,然后返回方法、路径、标头、可直接使用的代码示例和注意事项;每项内容都附带用于验证的 docUrl。

运行

npx partner-center-mcp

无需配置、API 密钥或访问 Partner Center 的网络权限。

需要 Node.js 20 或更高版本。(0.9.0 已停止支持 Node 18;该版本于 2025 年 4 月结束生命周期。)

添加到 MCP 主机

该服务通过 stdio 使用 MCP,因此任何支持 MCP 的主机都能使用。无需安装任何特定于主机的内容。使用主机所需的配置即可:

VS Code(.vscode/mcp.json)和 Visual Studio(.mcp.json):

{ "servers": { "partner-center": { "command": "npx", "args": ["-y", "partner-center-mcp"] } } }

GitHub Copilot。 Copilot 使用上文所示的同一份 .vscode/mcp.json(VS Code)/.mcp.json(Visual Studio),无需额外配置。

Cursor(.cursor/mcp.json)和 Windsurf(~/.codeium/windsurf/mcp_config.json):

{ "mcpServers": { "partner-center": { "command": "npx", "args": ["-y", "partner-center-mcp"] } } }

Claude Code:

claude mcp add partner-center -- npx -y partner-center-mcp

Claude Desktop(claude_desktop_config.json)、Cline 和 Zed 使用与上文 Cursor 相同的 mcpServers 结构。

提示:还可以将 Microsoft Learn MCP 服务(https://learn.microsoft.com/api/mcp)与此服务一起添加,以便广泛搜索文档。

远程 / HTTP(可选)

相比 stdio,更倾向使用托管端点?运行 Streamable HTTP 变体:

PORT=3000 npx -p partner-center-mcp partner-center-mcp-http
# MCP endpoint: POST http://localhost:3000/mcp   •   health: GET /healthz

端点本身没有身份验证机制,因此默认绑定到 127.0.0.1。请求正文上限为 1 MiB,浏览器的 Origin 必须是环回地址或明确获准的地址,这可以防止随机网页驱动你的本地服务。

变量默认值作用
PORT3000监听的端口。
HOST127.0.0.1要绑定的接口。只有在代理经过身份验证时,才设置为 0.0.0.0。
ALLOWED_ORIGINSnone除环回地址外,允许访问的浏览器来源,以逗号分隔。
MAX_BODY_BYTES1048576可接受的最大请求正文。

工具

工具用途
pc_list_scenarios列出受支持的 REST 场景,可按 area 筛选。
pc_get_scenario获取一个场景的完整详情:方法、路径、标头、示例和注意事项。
pc_generate_call生成当前的 REST 调用(curl/csharp/typescript/powershell),包含身份验证、重试和分页辅助代码。绝不使用已归档的 SDK。
pc_validate_request根据已知场景检查 REST 调用(方法、URL、标头、身份验证)。
pc_plan_purchase新商务购买的有序工作流:产品 → SKU 可用性 → 购物车 → 结账 → 订阅。
pc_migrate_from_sdk将已归档的 .NET SDK 代码转换为对应的 REST 场景。
pc_auth_guidance按国家云提供当前的应用专用型/应用+用户身份验证指南,并说明 GDAP + MFA 注意事项。
pc_check_auth检查身份验证/客户端代码片段中是否存在已弃用模式(graph.windows.net、ADAL、已归档的 SDK、AzureAD PS)。
pc_build_request构建可直接发送的请求:填充路径占位符,生成 MS-RequestId/MS-CorrelationId,并根据场景的字段生成请求正文框架。
pc_explain_lifecycle说明订阅在当前状态下可执行的操作:合法操作、每项前置条件读取的字段,以及前置条件不满足时返回的错误。
pc_plan_subscription_change针对单项生命周期变更生成有序调用序列:席位增减、升级、取消、续订变更、暂停、重新激活、迁移、转移。
pc_plan_order_lifecycle生成从购物车到订阅已预配的有序调用序列,包括取消和附加项分支。
pc_plan_transfer生成有序的账单所有权转移工作流(创建 → 轮询 → 验证)。
pc_plan_gdap_onboarding通过 Microsoft Graph 生成有序的 GDAP 入驻工作流(创建 → 批准 → 验证)。
pc_plan_csp_onboarding生成有序的 CSP 客户入驻(帐户关联)流程:邀请 → 验证关系 → 确认协议 → 交易。
pc_plan_user_onboarding生成有序的用户入驻流程:创建用户 → 分配许可证 → 授予角色 → 验证。
pc_plan_user_offboarding生成有序的用户离职流程:移除许可证 → 移除角色 → 删除用户(30 天恢复窗口)。
pc_plan_reconciliation生成有序的对账工作流(发票 → 已计费/未计费明细项 → 对账单)。
pc_lookup_error解读错误代码:原因、补救措施,以及常见涉及的场景。
pc_decode_error粘贴原始错误响应 → 获取解码后的代码、可能涉及的场景,以及供支持人员使用的关联 ID。
pc_diagnose将症状对应到可能的原因、修复方法和相关场景。
pc_get_enums查询枚举值(billingCycle、termDuration、targetView、transitionType、status,……)。
pc_get_resource获取资源的字段字典(Customer、Subscription、Order、Invoice、迁移计划,……)。
pc_whats_new查看弃用事项和截止日期(MFA 强制实施、graph.windows.net、v1→v2 对账,……)。
pc_plan_prerequisites针对任意场景,列出生成其路径所需 ID 的有序调用,以及需要自行提供的参数。
pc_diff_pack查看不同工具包版本之间的变更:新增或移除的场景,以及路由、身份验证、字段或约束发生变化的场景。
pc_search_docs获取 Microsoft Learn 的实时摘录。精选工具包没有答案时的备用方案。
pc_get_reference查看基本 URL、标头、版本控制、沙盒、速率限制和国家云差异。
每个工具都包含调用 Agent 所需的元数据:title、说明何时使用它 以及优先选择哪个同类工具 的描述、每个输入参数的说明、声明的 outputSchema,以及 MCP 行为注解。全部 28 个工具的 readOnlyHint 均为 true,destructiveHint 均为 false,因为此服务不持有凭据,也不会调用任何 Partner Center 端点。它只读取随附的数据包。三个工具会违反 idempotentHint 或 openWorldHint:pc_search_docs 和 pc_get_scenario 在 enrich: true 时都会访问 Microsoft Learn,而 pc_build_request 每次调用都会生成新的 MS-RequestId。

响应共用一个信封格式。成功时为 { ok, data },失败时为 { ok: false, error, suggestions? };响应以 structuredContent 形式返回,并由 MCP SDK 根据每个工具的 outputSchema 进行验证。

覆盖范围

场景涵盖:

  • 客户。 身份与档案、搜索、用户与目录角色、移除关系、协议与同意、自助服务策略。
  • 订阅。 完整生命周期:增加和减少席位、升级、取消、更改续订、暂停和重新激活、附加组件、新商务迁移、转让。
  • 订单与购物车。 涵盖至预配状态,而不只是结账。
  • 设备。 Autopilot 批次与配置策略,覆盖端到端流程。
  • 计费与定价。 各级 Azure 用量、支出预算与超额用量、发票与对账明细项、服务成本、利润率与增长利润率、价目表、优惠矩阵、外汇汇率,以及促销资格。
  • 分析。 订阅、间接经销商、推荐与搜索分析,以及三个独立的许可证用量和部署类别。
  • 此外还包括目录与产品、许可证、地址与域名验证、审计、支持、安全与 MFA,以及合作伙伴档案。

每个场景都附有用于验证的 docUrl 和上次检查日期,其中 185 个场景还附带了其页面发布的响应示例,因此可以直接查看字段名称和嵌套结构,无需猜测。 支持的国家云:商业云、21Vianet(中国)和美国政府云。

生命周期变更会列出其 前置条件,而不只是端点。pc_explain_lifecycle 会返回状态机:从每种状态可以执行哪些操作、应先从实时订阅中读取哪个字段(cancellationAllowedUntilDate、autoRenewEnabled、suspensionReasons),以及前置条件不满足时会出现什么错误。

此数据包也可通过 MCP 资源浏览(pc://scenarios、pc://errors、pc://auth、pc://reference、pc://sdk-map、pc://enums、pc://deprecations、pc://resources、pc://lifecycle、pc://examples、pc://history、pc://scenario/{id}),并提供三个提示词(migrate-sdk、diagnose-issue、plan-purchase),供支持这些功能的宿主使用。

除场景外,数据包还提供枚举值、资源字段字典,以及弃用与截止日期时间线。npm run export 会将整个数据包转换为 OpenAPI 3.0 规范和 Postman 集合。

示例

解读在生产环境中遇到的错误:

// pc_lookup_error { "code": "900420" }
{
  "httpStatus": 401,
  "errorCode": "900420",
  "description": "The audience in the token is invalid and is no longer supported in Partner Center API.",
  "causes": ["Token requested with the retired graph.windows.net audience"],
  "remediation": "Request the token with resource https://api.partnercenter.microsoft.com ...",
  "docUrl": "https://learn.microsoft.com/partner-center/developer/deprecate-azure-active-directory-graph-token"
}

在发布前检查旧版身份验证/客户端代码:

// pc_check_auth { "code": "new AuthenticationContext(); get(\"https://graph.windows.net\"); partner.Customers..." }
{
  "findings": [
    { "severity": "error",   "message": "Uses the retired graph.windows.net audience; Partner Center returns 401 / 900420.", "fix": "Request the token with resource https://api.partnercenter.microsoft.com." },
    { "severity": "warning", "message": "Appears to use ADAL, which is deprecated.", "fix": "Use MSAL with the secure application model." }
  ],
  "clean": false
}

在调用之前发现错误调用:

// pc_validate_request { "method": "POST", "url": "/v1/customers/abc/subscriptions", "headers": { "Authorization": "Bearer x" } }
{
  "ok": false,
  "findings": [
    { "severity": "error", "message": "Path matches a known scenario but the method POST is wrong; expected GET.",
      "fix": "Use GET for /v1/customers/{customer-id}/subscriptions." }
  ]
}

开发

npm install
npm test
npm run build

知识包位于 data/(按日期进行版本管理;每条记录都包含 docUrl 和 lastVerified)。src/knowledge/schema.ts 中的架构会在加载时验证每个 文件,因此格式错误或已发生偏移的数据会立即导致失败。

验证分为两部分:一部分离线运行,另一部分联网运行。

npm run check-pack 是离线部分,会在每个 PR 上运行。它会将每个场景的 method、path 和标头与 verification/doc-facts.json 中记录的快照进行比较;该快照记录了 Learn 页面上的实际内容,并列出仍未配置场景的文档化端点。

npm run check-docs 是每周联网运行的部分。它会重新获取所有引用页面,并与快照进行差异比较, 依据每个 Learn 页面内嵌的源代码提交来判断内容是否发生偏移。如果页面失效、移动或被替换、变得无法读取,或知识包依赖的字段发生变化,检查就会失败。出现这种情况时,每周运行的 GitHub Action 会创建一个 issue。上游编辑如果只修改了正文,会报告出来,但不会导致运行失败。npm run check-docs:update 会执行相同的获取操作并重写快照;npm run docfacts:refresh 会从头开始重建快照,覆盖 Learn 目录中整个 developer/ 部分。

其余命令:npm run eval 会运行确定性的黄金用例套件;npm run eval:llm(需要 ANTHROPIC_API_KEY)会检查真实模型能否为问题选对工具;npm run export 会生成 OpenAPI 规范和 Postman 集合。

npm run read-doc -- <slug> 会以纯文本形式输出一个 Learn 页面,这是编写新场景的方式。npm run examples:refresh 会重新收集响应示例;它会合并而不是覆盖,因此即使某次运行因 Learn 限流,也不会丢失上一次运行的结果。

dotnet/ 中的 .NET 服务使用相同的 data/ 知识包,提供相同的 28 个工具,并以 tunahanaliozturk.PartnerCenterMcp 的名称发布到 NuGet。dotnet test PartnerCenterMcp.Tests 会运行其测试套件,其中有一项测试会断言两个服务提供相同的工具名称。

npm run pack-diff 会比较每个场景的路由、身份验证、标头、字段、响应结构和注意事项的指纹,报告自上次记录的版本以来有哪些变化。重新验证场景不会被视为变化。npm run pack-diff -- --record X.Y.Z 会将结果写入 data/history.json,pc_diff_pack 工具会从中提供数据。

参与贡献

非常欢迎添加新场景和修正文档准确性问题。请参阅 CONTRIBUTING.md。 这是一个非官方的社区项目,与 Microsoft 无关。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。