关于 partner-center-mcp
partner-center-mcp 是面向 Partner Center REST API 开发者的非官方 MCP 服务。它从内置知识包提供经核实的场景、身份验证指导、代码生成和错误诊断,不会调用 Partner Center。
主要功能
- 01查询 REST 场景及约束
- 02生成四种语言的 API 调用
- 03检查请求和身份验证模式
- 04规划购买与订阅工作流
- 05解码错误并诊断症状
- 06浏览参考资料和文档
适用场景
- 01查找 Partner Center 任务对应的端点和请求头
- 02将已归档的 .NET SDK 代码迁移为 REST 场景
- 03排查身份验证失败和 API 错误
MCP 相关
通过 MCP 工具、资源和提示词提供 Partner Center REST API 指导。它读取内置知识包,并在未找到答案时使用缓存的 Microsoft Learn 搜索;不会调用 Partner Center。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
28收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| area | enum | 否 | 将列表限制为一个功能领域。可选值: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 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 页面为依据。知识包中没有答案时,服务会回退到缓存的文档搜索。
一次典型调用: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 必须是环回地址或明确获准的地址,这可以防止随机网页驱动你的本地服务。
| 变量 | 默认值 | 作用 |
|---|---|---|
PORT | 3000 | 监听的端口。 |
HOST | 127.0.0.1 | 要绑定的接口。只有在代理经过身份验证时,才设置为 0.0.0.0。 |
ALLOWED_ORIGINS | none | 除环回地址外,允许访问的浏览器来源,以逗号分隔。 |
MAX_BODY_BYTES | 1048576 | 可接受的最大请求正文。 |
工具
| 工具 | 用途 |
|---|---|
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 无关。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。