partner-center-mcp について
partner-center-mcp は、Partner Center REST API を扱う開発者向けの非公式 MCP サーバーです。組み込みのナレッジパックから、検証済みのシナリオ、認証ガイダンス、コード生成、エラー診断を提供し、Partner Center 自体は呼び出しません。
主な機能
- 01REST シナリオと制約の検索
- 024 言語での API 呼び出し生成
- 03リクエストと認証パターンの検証
- 04購入・サブスクリプション手順の計画
- 05エラーの解析と症状の診断
- 06リファレンスとドキュメントの参照
活用シーン
- 01Partner Center のタスクに適したエンドポイントとヘッダーの確認
- 02アーカイブ済み .NET SDK コードの REST シナリオへの移行
- 03認証失敗や API エラーの調査
MCP 対応
MCP ツール、リソース、プロンプトを通じて Partner Center REST API の情報を提供します。組み込みのナレッジパックを参照し、回答がない場合はキャッシュされた Microsoft Learn 検索を使います。Partner Center は呼び出しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
28掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| area | enum | いいえ | リストを 1 つの機能領域に絞り込みます。次のいずれかを指定します: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 を頼りにすることになります。200 余りのエンドポイントのページに、検索結果に今も表示されるアーカイブ済みの .NET SDK、そして単独ではほとんど意味が分からないエラーコードもあります。
この MCP サーバーは、そうした知識をエージェントのすぐそばに置きます。サブスクリプションのキャンセル方法を尋ねると、検証済みのメソッド、パス、ヘッダー、動作するコードサンプル、そしてページで実際に警告されている制約が返されます。認証情報は保持せず、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 が必須になります。
そのため、このサーバーは 2 つのことを行います。現在の REST と認証のパターンを示し、移行中に遭遇するエラーについて説明します。
仕組み
MCP ホスト(Claude Code、Cursor、Copilot、VS Code)は、デフォルトでは stdio、必要に応じて HTTP 経由で、MCP を使ってサーバーと通信します。サーバーは、読み込み時に zod で検証され、公式の Learn ページを参照元とするナレッジパックを読み込みます。ナレッジパックに回答がない場合は、キャッシュされたドキュメント検索にフォールバックします。
典型的な呼び出しでは、エージェントが pc_generate_call などのツールを選び、サーバーがナレッジパックからシナリオを検索します。すると、メソッド、パス、ヘッダー、すぐに使えるコードサンプル、注意点が返され、それぞれに検証元の docUrl が付いています。
実行
npx partner-center-mcp
構成、API キー、Partner Center へのネットワークアクセスは必要ありません。
Node.js 20 以降が必要です。(0.9.0 では、2025 年 4 月にサポート終了を迎えた Node 18 が対象外になりました。)
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 server(
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 | なし | ループバックに加えて許可するブラウザーのオリジンを、カンマ区切りで指定します。 |
MAX_BODY_BYTES | 1048576 | 受け付けるリクエスト本文の最大サイズです。 |
ツール
| ツール | 目的 |
|---|---|
pc_list_scenarios | サポートされている REST シナリオを一覧表示します。必要に応じて area で絞り込めます。 |
pc_get_scenario | 1 つのシナリオの詳細を表示します。メソッド、パス、ヘッダー、例、注意点が含まれます。 |
pc_generate_call | 認証、再試行、ページネーションのヘルパーを含む、現在の REST 呼び出し(curl/csharp/typescript/powershell)を生成します。アーカイブ済み SDK は使用しません。 |
pc_validate_request | 既知のシナリオに照らして、REST 呼び出し(メソッド、URL、ヘッダー、認証)を検証します。 |
pc_plan_purchase | New Commerce の購入ワークフローを順序付きで示します。製品 → 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、ヘッダー、バージョン管理、サンドボックス、レート制限、各国のクラウド間の違いを示します。 |
各ツールには、呼び出し元のエージェントに必要なメタデータがすべて含まれています。title、使用すべき状況と代わりに優先すべき同種のツールの両方を示す説明、すべての入力パラメーターの説明、宣言済みのoutputSchema、および MCP の動作アノテーションです。サーバーは認証情報を保持せず、Partner Center のエンドポイントも呼び出さず、同梱されたパックのみを読み取るため、28 個すべてのツールでreadOnlyHint: true、destructiveHint: falseとなっています。idempotentHintまたはopenWorldHintに反するツールは 3 つあります。pc_search_docsと、enrich: trueを指定したpc_get_scenarioはどちらも Microsoft Learn にアクセスし、pc_build_requestは呼び出しのたびに新しいMS-RequestIdを生成します。 |
レスポンスは共通のエンベロープを使用します。成功時は{ ok, data }、失敗時は{ ok: false, error, suggestions? }を返します。レスポンスはstructuredContentとして返され、MCP SDK により各ツールのoutputSchemaに照らして検証されます。
対応範囲
シナリオは次の項目を網羅します。
- 顧客。 ID とプロフィール、検索、ユーザーとディレクトリロール、リレーションシップの削除、契約と同意、セルフサービスのポリシー。
- サブスクリプション。 ライフサイクル全体:シート数の増減、アップグレード、キャンセル、更新内容の変更、一時停止と再開、アドオン、New Commerce への移行、移管。
- 注文とカート。 チェックアウトだけでなく、プロビジョニングの状態まで対応します。
- デバイス。 Autopilot のバッチと構成ポリシーを、最初から最後まで網羅します。
- 請求と価格設定。 あらゆるレベルの Azure 使用量、支出予算と超過料金、請求書と照合明細、サービスコスト、マージンと成長マージン、価格表、オファーマトリクス、為替レート、プロモーションの適用資格。
- 分析。 サブスクリプション、間接リセラー、紹介、検索の分析に加え、ライセンス使用量と展開に関する 3 つの独立したファミリー。
- さらに、カタログと製品、ライセンス、住所とドメインの検証、監査、サポート、セキュリティと MFA、パートナープロフィールにも対応します。
各シナリオには、検証に使用したdocUrlと最終確認日が記録されています。また、185 件には公開ページに掲載されているレスポンス例が同梱されているため、フィールド名や階層構造を推測せずに確認できます。
対応するナショナルクラウド:商用、21Vianet(中国)、US Gov。
ライフサイクルの変更には、エンドポイントだけでなく前提条件も含まれます。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})と 3 つのプロンプト(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"
}
リリース前に、古い認証コード/クライアントコードを Lint にかけます。
// 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 のスキーマで読み込み時に
すべてのファイルを検証するため、形式が不正なデータや変更されたデータはすぐにエラーになります。
検証は、オフラインとネットワークを使用する2つの部分に分けて実行します。
npm run check-pack はオフライン検証で、すべての PR で実行されます。各シナリオの
method、path、ヘッダーを、Learn ページに実際に記載されている内容のコミット済みスナップショットである
verification/doc-facts.json と照合し、まだシナリオがない、ドキュメントに記載されたエンドポイントも一覧表示します。
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 ページを1つプレーンテキストで出力します。新しいシナリオはこの方法で
作成します。npm run examples:refresh はレスポンス例を再収集します。既存データを上書きせずに統合するため、
Learn のレート制限に達した実行があっても、前回の結果が失われることはありません。
dotnet/ の .NET サーバーは、同じ data/ パックから同じ28個のツールを公開し、
NuGet パッケージ tunahanaliozturk.PartnerCenterMcp として配布されます。dotnet test PartnerCenterMcp.Tests で
テストスイートを実行できます。そのうち1つのテストでは、2つのサーバーが同じツール名を公開していることを検証します。
npm run pack-diff は、各シナリオのルート、認証、ヘッダー、フィールド、レスポンス形式、注意事項のフィンガープリントを比較し、
最後に記録されたリリースからの変更を報告します。シナリオの再検証は、意図的に変更として扱いません。
npm run pack-diff -- --record X.Y.Z は結果を data/history.json に書き込みます。この内容は
pc_diff_pack ツールから提供されます。
コントリビューション
新しいシナリオの追加や、ドキュメントの正確性に関する修正を歓迎します。CONTRIBUTING.md をご覧ください。 これは非公式のコミュニティプロジェクトであり、Microsoft とは提携していません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。