2025年12月28日 (日)

Copilot Studio で SharePoint Lists MCP を利用してリストを操作する

Copilot Studio で作成するAI エージェントのツールとしてMCP(モデル コンテキスト プロトコル)サーバーを追加できますが、現在、SharePoint に関するMCPサーバーも利用できるようになっています。SharePoint を利用するので、Microsoft 365 Copilot のライセンスは必要です。

利用できるのは次の2つです。なお、これらは現在 Frontier プログラムの一部となっています。

  • Microsoft SharePoint Lists MCP

  • Microsoft SharePoint and OneDrive MCP

20251228_195226

この記事では SharePoint Lists MCP について説明します。

なお、今回の説明で使用しているモデルは GPT5-Auto (Preview) であり、プライマリ言語は日本語です。日本語でどこまで動作するのか試したくて。

Microsoft SharePoint Lists MCP とは?

このMCPをエージェント内でツールとして利用することでエージェントと自然な会話をしながら、SharePoint サイト内のリストを操作できます。

SharePoint Lists MCP サーバーに関する公式ドキュメントは次の通りです。

SharePoint Lists Tools MCP サーバー リファレンス | Microsoft Learn

ただし、このドキュメントに書かれていることが Copilot Studioで利用する際にすべてその通りの操作できるかといえばそうとは限らないので、注意点などを含めてこの記事にまとめておきます。

※あくまでも 2025/12/28現在の情報であり今後いろいろとアップデートされていくことになると思います。

余談ですが上記ドキュメントに書かれている通り、この MCP ではすべての操作はMicrosoft Graph API v1.0 を使用しています。そのため、ある程度 Graph API v1.0 の知識があるとどうやってやり取りしたらいいかの勘所はつかみやすくなると思いますし制限もイメージしやすいと思います。

主な機能

このMCPサーバーで行える操作は次の通りです。

サイトの操作

  • 名前または URL でサイトを検索する
  • ホスト名とパスでサイトを解決する
  • サブサイトの一覧
  • サイト内のリスト一覧

リストの管理

  • 新しい SharePoint リストを作成する
  • 対応しているのはgenericList のみ
  • ドキュメント ライブラリの作成はサポートされない (試すと404エラーとなる)

列の操作

  • リスト内のすべての列を一覧表示する
  • 列の削除

アイテムの操作

  • アイテム取得(listListItems)
  • アイテム作成(createListItem)
  • アイテム更新(updateListItem、ifMatchで同時編集制御可)
  • アイテムの削除

サポートされる列の種類

  • 1行テキスト
  • 複数(プレーンテキスト、リッチ テキスト)
  • 数値 (小数点以下の桁数、最小値、最大値を含む)
  • 選択肢 (単一選択および複数選択)
  • はい/いいえ
  • 日付と時刻 (日付のみ、または日時)
  • ユーザーまたはグループの列 (単一選択および複数選択)
  • 参照
  • ハイパーリンク

サポートされていない機能

上記の機能以外は現時点ではサポートされていません。詳しくは先ほどの公式ドキュメントも確認してみてください。列の追加や編集ができたらいいなと思ったんですが、そこは難しそうですね。ちなみにドキュメント ライブラリを対象にファイル操作をしたい場合は、SharePoint and OneDrive MCPを使う必要があります。

MCPの追加

ツールタブから新しいツールとしてモデルコンテキスト プロトコルの一覧から Microsoft SharePoint Lists MCP を追加します。

追加すると、「ツール」に操作一覧が表示されます。必要な操作のみを許可することも可能ですが、ここでは一通りの処理を検証するため既定値のすべてオンのまま利用します。

20251227_100232 このツールを追加してチャットで利用する場合は(テストチャットを含む)、接続の許可が必要です。

20251227_100746_2

操作編

サイトの名前やURLを取得する

サイト名やURLの取得につかえるのは次の2つの操作です。リストを操作する際にまずは対象のリストが存在するサイトのURLが必要になるため、まずはサイトの情報の取得方法を覚えておきましょう。

英語名ですが名称からできることは推測できます。

  • searchSitesByName
  • getSiteByPath

searchSitesByName を利用できるということは、サイトの表示名や部分的なURLからサイトをできるようになっているということです。そのためサイト名が分かっていれば次のように目的のサイトの情報を取得できます。

例) 「Copilot Studio 入門」という名前のサイトの情報を取得して

20251227_100846

getSiteByPath はURLが分かっている場合にサイトの情報を取得できるということです。

例) 「次のURLのサイトの情報を知りたい。
<サイトのURL>」

20251227_101418

リストの取得

特定のサイトのリスト一覧を取得できる操作が利用できます。

  • listLists

たとえば、次のように指示します。

例)「次のURLにあるリストの一覧を表にしてほしい。<サイトのURL>」

20251227_102030 単にリストを一覧表示してほしいと依頼すると Hidden属性が True のものも表示されます。では次のように指示して、Hidden属性も表示させましょう。

例)「次のURLにあるリストの一覧を表にしてほしい。Hidden属性も表示すること。<サイトのURL>」

20251227_103611

Hidden属性は隠しリストであるかどうかを示すもので、一般的にはシステムが使うリストは Hidden属性がTrueになっています。そのため、一般利用のリストの一覧を取得したい場合は、「次のURLにあるリストの一覧を表にしてほしい。Hidden属性がTrue のものは除外して表示して。」と依頼するといいでしょう。

またリストにはドキュメント ライブラリも含まれます。ドキュメント ライブラリもリストの一種であるためです。もしリストのみにしたいのであれば、「ドキュメント ライブラリは除外して」「BaseType eq 0 のものだけにして」などと指定します。ちなみにライブラリのみにしたい場合は「ドキュメント ライブラリだけを対象にして」「BaseType eq 1 のものだけにして」などと指定します。

20251227_105207


Tips

設定メニュー内の「生成AI」の項目から「コードインタープリター」を有効化していれば、Excel への出力もできます。

20251227_102540

実際に Excel への出力を依頼するとすぐに作成してくれます。

20251227_105349


特定のリストを取得する

サイトのURLとリスト名が分かっている場合は次のように指定することも可能です。

  1. まず目的のサイトを取得する
  2. リスト名を指定してリストを取得する

20251227_113621

リストを新規に作成する

createList操作がサポートされており、リストの新規作成が可能です。ただし、現時点ではupdateList がサポートされていないためリスト名の変更などは対応していません。

例) 「このサイトに"図書の貸出台帳"という名前のリストを作成してください」

20251227_112359

列の操作

列の操作としては listListColumn と deleteListColumn がサポートされています。つまり既存の列の一覧および削除ができます。createListColumn やgetListColumn やupdateListColumnがサポートされていないため、列の新規追加、特定の列情報の取得や更新はできません。

ちなみに、公式ドキュメントには createListItem は掲載されているのですが、実際に追加したツールの操作一覧には表示されておらず、列の新規作成を依頼しても、誤ってリストアイテムを作成しようとします。今後、サポートされるといいですね。

さて、リストの列の取得は可能です。一覧を取得してみましょう。

例) 「このリストの列を一覧にしてください」

20251227_133946


Tips

決まったリストを操作するのに毎回サイトのURLやリスト名を指定するのは面倒です。このように特定のリストに対して繰り返し処理を行う場合は、指示に最初からサイトのURLとリスト名を指定しておくと便利です。

使用するURLはダブルクォーテーションで囲み、末尾には/を追加しないようにしましょう。末尾にスラッシュをうっかり追加してしまうだけで正しく回答してくれなくなります。

20251228_165157


アイテムの新規追加、更新、削除

アイテムの新規追加、更新、削除がサポートされています。

  • createListItem…新規追加
  • updateListItem…更新
  • deleteListItem…削除

例えば、次のような依頼をすることで新規にアイテムを追加できます。

例)「リストの列を確認したうえで、次のアイテムを追加してください。
タイトル: データ分析の基礎
貸出日: 2025-12-18
返却期限: 2026-01-08
状態: 貸出中
備考: 演習問題付き」
20251228_165327

特定の列の値を変更したい場合は次のように指示できます。

例) 「次の書籍名の貸出者をそれぞれ更新してください。
-プロジェクト マネージメント入門: 佐藤 花子
-データ分析の基礎: 鈴木 太郎
- クラウドサービス 活用ガイド: 高橋 正樹」

20251228_165813

ここまではシステム管理者っぽく操作をしてきましたが、エージェントがあれこれ推論してくれるため、もっとフランクにやり取りすることもできます。たとえば、次のようなやり取りです。

例) 「これから3日間借りられそうな本はありますか? 」

これに対して利用可能な書籍をリストアップして回答してくれます。

20251228_171051

そのまま貸し出しを依頼することもできます。この場合、エージェントが先回りして特に指示しなくても、貸出日や返却期限、貸出者なども更新してくれます。
※返却日を空にするところまではしてくれませんでしたが。

20251228_171526

リスト操作に不足する機能をどう補うか考える

ここまで見てきたように SharePoint Lists MCPではリストに対して、かなりのことが自然な会話のやり取りで操作できます。ただし、不足する機能があれば、適宜、リストの「ルール」を使うことも検討する必要があります。今回は貸し出し管理が題材でしたが、例えば、返却されたら貸出日と返却予定日を空にするようにルールを作成しておくと、対応がスムーズです。もちろん、これをAIエージェントの指示に書くことも可能ですが、ルールのほうがより確実です。

現時点ではまだサポートされる機能が十分でないところもあります。必要があれば、Power Automate などを使って機能を補うことも考慮する必要があります。

まとめ

ここまで、SharePoint Lists MCP の機能について詳しく説明してきました。これまで、リスト操作はフィルターや検索くらいしかできませんでした。それが、自然な会話形式であれこれやり取りできるのは画期的で、驚きました。

ただ、欲を言えばリストの更新、列の追加、列の変更がサポートされるようになるといいのになと思います。例えば、図書の貸し出し管理をしたいので、リストと列を提案してほしいという。この時に、日本人が引っ掛かりやすい表示名と内部名の問題も、Copilot に考案してもらい、それをそのままリスト化できるといいんですけどね。将来に期待しましょう。

ぜひ、ご自身でもいろいろと試してみてください! なかなか楽しいですよ。

今年、最後のご挨拶

さて、2025年も残すところあと3日です。本年のブログはこの記事をもって終わりとします。

今年一年を簡単に振り返ってみると、初の試みとして SharePoint の勉強会コミュニティを立ち上げました。またメインの講師業としては、8月から Copilot Studio の入門者向け研修コースの開発をはじめ、11月に次の研修コースのリリースしました。

【オフィスアイ株式会社】Microsoft 365 Copilot ユーザーのためのCopilot Studioで始めるAIエージェント開発入門

新コースのリリース以降は、このブログでも生成AIおよび Copilot に関する情報を記事に書き始めましたが、来年も引き続きSharePoint が中心となりますが情報発信を続けていく所存でおりますので、皆様どうぞご期待ください。勉強会も不定期ですが来年もまた開催します。

そうそう、Microsoft 365 Copilot の中核を担っているのは SharePoint だといっても過言ではありませんし、今後ますます重要になりますから。


🗻🐍では、皆様、よい年をお迎えくださいませ🐎🎍


コメント