Microsoft 365 Copilotでの MCP アプリのトラブルシューティング

このガイドでは、Microsoft 365 Copilot内の宣言型エージェントと統合するモデル コンテキスト プロトコル (MCP) アプリを開発するときに発生する可能性がある一般的な問題に関するトラブルシューティングのアドバイスを提供します。

開発者モードを有効にする

開発者モードを有効にすると、 エージェントの応答でログとエラーが表示されます。 この情報は、デバッグに不可欠です。 開発者モードを有効にするには、Microsoft Copilotで次のコマンドを入力します。

-developer on

エージェントで使用できる MCP ツールは、デバッグ情報カードの [アクション] セクションに表示されます。 カードデバッグ情報の詳細については、「Microsoft 365 Copilotで開発者モードを使用してエージェントをテストおよびデバッグする」を参照してください。

検出とエントリの問題

ツールが一覧に表示されない

デバッグ情報の [アクション] セクションカード MCP ツールが一覧に表示されない場合は、次の項目をチェックします。

  • MCP サーバーが実行されており、プラグイン マニフェストで正しい MCP エンドポイントに接続していることを確認します。
  • プラグイン マニフェストに、 functions プロパティに必要なツールが含まれていることを確認します。
  • プラグイン マニフェストの runtimes プロパティで MCP サーバー ランタイムが指定されていることを確認します。
    • mcp_tool_description プロパティ内のツールを次のいずれかの方法で参照します。
      • file プロパティのツールの説明を含む JSON ファイルを参照する OR
      • tools プロパティでツールの説明をインラインで一覧表示する
    • run_for_functions プロパティにツール名を含みます。
"runtimes": [
  {
    "type": "RemoteMCPServer",
    "spec": {
      "url": "https://api.contoso.com/mcp",
      "mcp_tool_description": "mcp-tools.json"
    },
    "run_for_functions": [
      "get_widget",
      "create_widget"
    ]
  }
]

Copilot チャットからトリガーされないツール

  • ツールとパラメーターの説明を見直して、十分なコンテキストが提供されていることを確認します。 "この関数/パラメーターを when.." を使用して書き直す方法を検討してください。言葉遣い。
  • 説明は 1,024 文字以下にしてください。 1,024 文字を超えるテキストは無視されます。
  • ツールの可視性が正しく設定されていることを確認します。
    • MCP アプリの場合、 _meta.ui.visibility には modelが含まれます。
    • OpenAI SDK アプリの場合、 meta["openai/visibility"]public に設定されます。

間違ったツールが選択されている

  • 似た名前のツールや説明が重複しないようにします。
  • 各ツールを使用するタイミングを説明する説明に明確な差別化要因を追加します。

ウィジェットの問題

ウィジェットがレンダリングされない

正しい MCP ツールが呼び出されても、UI ウィジェットが応答でレンダリングされない場合、MCP サーバーは UI コンポーネントのない構造化コンテンツのみを返す可能性があります。 UI バインドが正しく構成されていることを確認します。

  • MCP アプリの場合、ツール定義には、MIME の種類がtext/html;profile=mcp-appの登録済み HTML リソースに設定_meta.ui.resourceUriが含まれます。
  • OpenAI SDK アプリの場合、ツール定義には、MIME の種類がtext/html+skybridgeの登録済み HTML リソースに設定_meta["openai/outputTemplate"]が含まれます。

ウィジェットの読み込みに失敗する

  • ブラウザーの開発者ツールを開き、コンソールでコンテンツ セキュリティ ポリシー (CSP) 違反のチェックします。 ウィジェットのホスト URL からの要求が許可一覧表示されていることを確認します。 詳細については、「 MCP アプリの MCP サーバー要件」を参照してください。
  • ウィジェットで、すべての HTML と JavaScript の依存関係が、外部の未解決のアセットを含む 1 つのファイルにコンパイルされていることを確認します。

ウィジェットがデータなしで読み込まれる

  • ツールの応答構造を確認します。
    • content にはデータ (モデル) のみが含まれている必要があります。
    • structuredContent には、データとウィジェットの両方が含まれている必要があります。
    • _meta にはウィジェットのみが含まれている必要があります。
  • structuredContentまたは_metaに必要なデータが含まれていることを確認します。

ウィジェットには二重スクロールバーがあります

Copilot ホスト コンテナーには、最大高さのスクロールが既に含まれます。 コンテナー スタイルで overflow: hidden を設定して、ウィジェットの内部スクロールを無効にします。

アンカー タグ <a> Copilot の外部リンクでは機能しません。 代わりに、適切なプラットフォーム API を使用してください。

  • MCP アプリの場合は、 app.openLinkを使用します。
  • OpenAI SDK アプリの場合は、 window.openai.openExternalを使用します。

一部の Copilot ホストでは全画面表示が機能しない

全画面表示は、すべての Copilot ホストでサポートされているわけではありません。 ベスト プラクティスとして、常にホスト機能をチェックし、条件付きで UI 要素 (全画面表示ボタンなど) を表示します。 詳細については、「 API の可用性の確認」を参照してください。

応答の問題

ツールの結果の有効期限の問題

contentまたはstructuredContentを介して送信されるツール応答が過度に大きくないことを確認します。 アバター URL や UI 固有の詳細など、モデルに役立たない豊富なメタデータがウィジェットに必要な場合は、 _meta に完全なデータを含め、 contentで簡潔な概要を提供します。 このアプローチにより、効果的なマルチトゥルム エクスペリエンスをサポートしながら、モデルが重要な情報を保持できます。

ウィジェットとテキストの概要の重複データ

次のいずれかのオプションを使用して、この問題を解決します。

  • データの分離を最適化する: ウィジェット固有のデータには _meta を使用し、モデルで表示されるサマリーには content を使用します。
  • 書式設定の操作: 宣言型エージェント マニフェストの指示を使用して、応答の構造化と提示方法をガイドします。

認証の問題

認証構成とプラグインのアプリ ID の不一致

デバッグ情報に次のようなエラーカード表示される場合:

OAuth authentication failed: The App ID used in the request does not match the App ID in the authentication configuration. (HTTP 404)

Teams 開発者ポータルに移動します。 OAuth クライアントまたはシングル サインオン (SSO) クライアントの登録を見つけて、プラグインのアプリ ID が登録済みのアプリ ID と一致することを確認します。

認証構成のベース URL がプラグインと一致しない

デバッグ情報に次のようなエラーカード表示される場合:

OAuth authentication failed: The base URL in your authentication configuration does not match the server URL. (HTTP 401)

Teams 開発者ポータルに移動します。 OAuth クライアントまたは SSO クライアントの登録を見つけて、プラグインの MCP サーバー URL が登録済みのベース URL と一致することを確認します。

プラグイン マニフェストの参照 ID が正しくないか、見つからない

デバッグ情報に次のようなエラーカード表示される場合:

OAuth authentication failed: No matching configuration found for referenceID in 'runtime.auth' section of the action manifest

Teams 開発者ポータルに移動します。 OAuth クライアントまたは SSO クライアントの登録を見つけ、MCP サーバーのランタイムの auth.reference_id の ID が開発者ポータルの登録の ID と一致することを確認します。

組織ポリシーによるアクセスの制限

デバッグ情報に次のようなエラーカード表示される場合:

OAuth authentication failed: Access is restricted by your organization's policy. (HTTP 404)

アプリのアクセスを確認して有効にするには、organizationの管理者に問い合わせてください。

サインイン ボタンが非アクティブであるか、一般的なエラーが表示される

サインイン ボタンが非アクティブまたは無効になっている場合、または選択すると一般的な "要求を処理できません" というエラーが表示される場合、この条件は一時的な認証またはセッションの問題を示している可能性があります。 クエリを再試行します。 問題が解決しない場合は、アプリを再インストールするか、organizationの管理者に問い合わせてください。

サインイン ポップアップが開きに失敗する

ブラウザーの設定でサイトのポップアップを有効にして、もう一度やり直してください。

資格情報が正しくないエラー

サインイン ポップアップまたはチャット応答に "資格情報が正しくない" エラーが表示される場合は、正しい資格情報を入力していることを確認してください。 エラーが解決しない場合は、ユーザーに必要なアクセス許可があることを確認します。

サインイン URL が見つかりません

アプリをアンインストールして再インストールしてから、もう一度サインインしてみてください。

認証中の内部サーバー エラー

認証ポップアップで詳細を確認し、アクセス許可の問題についてorganizationの管理者に問い合わせてください。

アクセス許可またはビジネス上の正当な理由を要求する同意ダイアログが表示される場合は、要求されたアクセス許可を確認し、必要に応じてビジネス上の正当な理由を提供します。 不明な場合、または同意ダイアログで管理者の同意を必要とするアクセス許可が要求される場合は、organizationの管理者にお問い合わせください。