Work IQ MCP サーバーは、 モデルコンテキストプロトコル (MCP) を介して 10 個のツールを公開します。 この記事では、各ツールの目的、パラメーター、使用例など、リファレンスを提供します。
Work IQ MCP は、ツールが Microsoft Graph リソース パスにアクセスするときに、Microsoft Entra 認証とサインインしているユーザーの Microsoft 365 アクセス許可を使用します。 個別のテナント ポリシー レイヤーが各ツール要求を評価し、既定で変更操作をブロックします。 管理者は、テナント ポリシーを通じて、サポートされている作成、更新、削除、およびアクション要求を有効にすることができます。 詳細については、 Work IQ MCP のポリシーガバナンスを参照してください。
エンティティ ツール
エンティティ ツールは、Microsoft 365 リソースに対する CRUD 操作とアクションを提供します。 これらのツールは、 Microsoft Graph エンドポイントにマップされる相対リソース パスで動作します。
フェッチ
リソース パスで 1 つ以上のエンティティを読み取ります。 複数のパスを並列でフェッチできます。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
entityUrls |
文字列配列 | はい | フェッチする相対リソース パス ( /me/messages、 /me/events/{event-id} など) |
agentId |
文字列 | いいえ | 将来使用するために予約されています。 |
応答
正常な応答には、次のプロパティを持つオブジェクトの配列である results プロパティが含まれています。 要求の entityUrls パラメーターには、リソース パスごとに 1 つのオブジェクトがあります。
| プロパティ | 型 | 説明 |
|---|---|---|
data |
object | Microsoft Graph によって返される JSON オブジェクト。 |
statusCode |
integer | 応答の HTTP 状態コード。 |
注:
- 収集結果には、テナントごとのポリシー制限が適用されます。 値を指定しない場合は、既定の
$top25 が挿入され、最大値は 100 です。 - Chat メッセージの上限は、要求あたり 10 個です。
-
$skipおよび$skiptokenクエリ パラメーターがブロックされます。
例
要求
{
"method": "tools/call",
"params": {
"name": "fetch",
"arguments": {
"entityUrls": [
"/me/messages"
]
}
}
}
応答
{
"results": [
{
"data": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('0c6bc4a2-337b-4672-9bcd-6aa53af1b02a')/messages(id,subject,from,receivedDateTime,isRead,importance)",
"value": [
{
"@odata.etag": "W/\"CQAAABYAAADltuSvpI1YRKDFG38ihSmWAABepTg8\"",
"id": "AAMkADk0...",
"receivedDateTime": "2026-05-31T15:40:44Z",
"subject": "Your weekly PIM digest for Contoso",
"importance": "normal",
"isRead": false,
"from": {
"emailAddress": {
"name": "Microsoft Security",
"address": "MSSecurity-noreply@microsoft.com"
}
}
},
{
"@odata.etag": "W/\"CQAAABYAAADltuSvpI1YRKDFG38ihSmWAAA/eZg0\"",
"id": "AAMkADk0...",
"receivedDateTime": "2026-05-26T07:39:09Z",
"subject": "Microsoft Entra ID Protection Weekly Digest",
"importance": "normal",
"isRead": false,
"from": {
"emailAddress": {
"name": "Microsoft Security",
"address": "MSSecurity-noreply@microsoft.com"
}
}
}
],
"@odata.nextLink": "https://graph.microsoft.com/v1.0/me/messages?%24select=id%2csubject%2cfrom%2creceivedDateTime%2cisRead%2cimportance&%24top=10&%24skip=10"
},
"statusCode": 200
}
]
}
fetch_blob
相対的な Work IQ パスからドキュメント、画像、Office ファイルなどのバイナリ コンテンツをフェッチします。 コンテンツは、メタデータを含む Base64 エンコード文字列として返されます。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
path |
string | はい | バイナリ コンテンツへの相対パス ( /drives/{drive-id}/items/{item-id}/contentなど) |
format |
文字列 | いいえ | ファイル変換形式 (例: pdf)。 Microsoft Graph $format パラメーターを受け入れるドライブコンテンツ エンドポイントでのみサポートされます。 |
agentId |
文字列 | いいえ | 将来使用するために予約されています。 |
応答
正常な応答は、MCP structuredContent フィールドを介して次のプロパティを公開します。
| プロパティ | 型 | 説明 |
|---|---|---|
statusCode |
integer | 応答の HTTP 状態コード。 |
contentType |
string | 返されるコンテンツの MIME タイプ。 |
blobName |
string | ファイル名 (使用可能な場合)。 |
sizeBytes |
integer | 生コンテンツのサイズ (バイト単位)。 |
base64Content |
string | Base64 としてエンコードされたバイナリ コンテンツ。 |
注:
- 既定の生ファイルの制限は 4 MB で、パスごとに構成できます。
- クライアントは元のバイトを回復するために Base64 デコード
base64Content必要があります。 - BLOB ペイロードは、MCP のテキスト コンテンツ フィールドで重複しません。 クライアントはそれを
structuredContentから読み取る必要があります。 - 構成された制限を超えるファイルは、構成された制限を含む MCP ツール エラーを返します。BLOB コンテンツは返されません。
例
要求
{
"method": "tools/call",
"params": {
"name": "fetch_blob",
"arguments": {
"path": "/me/drive/items/01ABCDEF/content"
}
}
}
応答
{
"structuredContent": {
"statusCode": 200,
"contentType": "text/plain",
"blobName": "notes.txt",
"sizeBytes": 14,
"base64Content": "SGVsbG8sIFdvcmtJUSE="
}
}
create_entity
コレクションに新しいエンティティを作成します。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
parentUrl |
string | はい | コレクションの相対リソース パス ( /me/events、 /me/messages など)。 |
jsonBody |
string | はい | 作成するエンティティ データ。リソース スキーマと一致します。 このプロパティは、JSON オブジェクトではなく、JSON でエンコードされた文字列である必要があります。 |
agentId |
文字列 | いいえ | 将来使用するために予約されています。 |
応答
正常な応答には、次のプロパティを持つ structuredContent プロパティのオブジェクトが含まれています。
| プロパティ | 型 | 説明 |
|---|---|---|
data |
object | Microsoft Graph によって返される JSON オブジェクト。 |
statusCode |
integer | 応答の HTTP 状態コード。 |
例
要求
{
"method": "tools/call",
"params": {
"name": "create_entity",
"arguments": {
"parentUrl": "/me/messages",
"jsonBody": "{ \"subject\": \"Hello world!\" }"
}
}
}
応答
{
"statusCode": 201,
"data": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('0c6bc4a2-337b-4672-9bcd-6aa53af1b02a')/messages/$entity",
"@odata.etag": "W/\"CQAAABYAAADltuSvpI1YRKDFG38ihSmWAABlFT7g\"",
"id": "AAMkADk0...",
"createdDateTime": "2026-06-01T17:32:39Z",
"lastModifiedDateTime": "2026-06-01T17:32:39Z",
"changeKey": "CQAAABYAAADltuSvpI1YRKDFG38ihSmWAABlFT7g",
"categories": [],
"receivedDateTime": "2026-06-01T17:32:39Z",
"sentDateTime": "2026-06-01T17:32:39Z",
"hasAttachments": false,
"internetMessageId": "<CH7PR03MB79063B75F29F929523CCC68FAE152@CH7PR03MB7906.namprd03.prod.outlook.com>",
"subject": "Hello world!",
"bodyPreview": "",
"importance": "normal",
"parentFolderId": "AQMkADk0...",
"conversationId": "AAQkADk0...",
"conversationIndex": "AQHc8eykdVXKjf4ytUio+dQPqWG95A==",
"isDeliveryReceiptRequested": false,
"isReadReceiptRequested": false,
"isRead": true,
"isDraft": true,
"inferenceClassification": "focused",
"body": {
"contentType": "text",
"content": ""
},
"toRecipients": [],
"ccRecipients": [],
"bccRecipients": [],
"replyTo": [],
"flag": {
"flagStatus": "notFlagged"
}
}
}
update_entity
既存のエンティティを Updates します。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
entityUrl |
string | はい | エンティティへの相対パス ( /me/messages/{message-id}など)。 |
jsonBody |
string | はい | 作成するエンティティ データ。リソース スキーマと一致します。 このプロパティは、JSON オブジェクトではなく、JSON でエンコードされた文字列である必要があります。 |
agentId |
文字列 | いいえ | 将来使用するために予約されています。 |
応答
正常な応答には、次のプロパティを持つ structuredContent プロパティのオブジェクトが含まれています。
| プロパティ | 型 | 説明 |
|---|---|---|
data |
object | Microsoft Graph によって返される JSON オブジェクト。 |
statusCode |
integer | 応答の HTTP 状態コード。 |
例
要求
{
"method": "tools/call",
"params": {
"name": "update_entity",
"arguments": {
"entityUrl": "/me/messages/AAMkADk0...",
"jsonBody": "{ \"subject\": \"Updated: Hello world!\" }"
}
}
}
応答
{
"statusCode": 200,
"data": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('0c6bc4a2-337b-4672-9bcd-6aa53af1b02a')/messages/$entity",
"@odata.etag": "W/\"CQAAABYAAADltuSvpI1YRKDFG38ihSmWAABlFT7g\"",
"id": "AAMkADk0...",
"createdDateTime": "2026-06-01T17:32:39Z",
"lastModifiedDateTime": "2026-06-01T17:32:39Z",
"changeKey": "CQAAABYAAADltuSvpI1YRKDFG38ihSmWAABlFT7g",
"categories": [],
"receivedDateTime": "2026-06-01T17:32:39Z",
"sentDateTime": "2026-06-01T17:32:39Z",
"hasAttachments": false,
"internetMessageId": "<CH7PR03MB79063B75F29F929523CCC68FAE152@CH7PR03MB7906.namprd03.prod.outlook.com>",
"subject": "Updated: Hello world!",
"bodyPreview": "",
"importance": "normal",
"parentFolderId": "AQMkADk0...",
"conversationId": "AAQkADk0...",
"conversationIndex": "AQHc8eykdVXKjf4ytUio+dQPqWG95A==",
"isDeliveryReceiptRequested": false,
"isReadReceiptRequested": false,
"isRead": true,
"isDraft": true,
"inferenceClassification": "focused",
"body": {
"contentType": "text",
"content": ""
},
"toRecipients": [],
"ccRecipients": [],
"bccRecipients": [],
"replyTo": [],
"flag": {
"flagStatus": "notFlagged"
}
}
}
delete_entity
エンティティを削除します。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
entityUrl |
string | はい | 削除するエンティティへの相対リソース パス ( /me/messages/{id} など) |
agentId |
文字列 | いいえ | 質問のルーティング先となる特定のエージェントの ID。 省略した場合、既定では組み込みの Microsoft 365 Copilot エージェントになります。 |
応答
成功した応答には、[structuredContent] フィールドに 204 に設定されたstatusCodeプロパティが含まれています。
例
要求
{
"method": "tools/call",
"params": {
"name": "delete_entity",
"arguments": {
"entityUrl": "/me/messages/AAMkADk0MDkyMzM3LTlmNzAtNDhmM...."
}
}
}
応答
{
"statusCode": 204
}
do_action
メールの送信、アイテムのコピー、移動などの副作用のあるアクションを実行します。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
actionUrl |
string | はい | アクションの相対パス ( /me/messages/{message-id}/send など)。 |
jsonBody |
文字列 | いいえ | 必要な場合は、アクションの JSON 本文。 このプロパティは、JSON オブジェクトではなく、JSON でエンコードされた文字列である必要があります。 |
agentId |
文字列 | いいえ | 将来使用するために予約されています。 |
応答
正常な応答には、次のプロパティを持つ structuredContent プロパティのオブジェクトが含まれています。
| プロパティ | 型 | 説明 |
|---|---|---|
data |
object | Microsoft Graph によって返される JSON オブジェクト (存在する場合)。 |
statusCode |
integer | 応答の HTTP 状態コード。 |
例
要求
{
"method": "tools/call",
"params": {
"name": "do_action",
"arguments": {
"actionUrl": "/me/messages/AAMkADk0.../send"
}
}
}
応答
{
"statusCode": 202
}
call_function
Microsoft Graph 関数を呼び出して、スケジュール、差分、検索結果などの派生データを計算します。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
functionUrl |
string | はい | 関数の相対パス ( /me/calendarview など)。 |
agentId |
文字列 | いいえ | 将来使用するために予約されています。 |
応答
正常な応答には、次のプロパティを持つ structuredContent プロパティのオブジェクトが含まれています。
| プロパティ | 型 | 説明 |
|---|---|---|
data |
object | Microsoft Graph によって返される JSON オブジェクト。 |
statusCode |
integer | 応答の HTTP 状態コード。 |
例
要求
{
"method": "tools/call",
"params": {
"name": "call_function",
"arguments": {
"parentUrl": "/me/calendarView?startdatetime=2026-06-01T17:51:49.607Z&enddatetime=2026-06-08T17:51:49.607Z"
}
}
}
応答
{
"data": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('0c6bc4a2-337b-4672-9bcd-6aa53af1b02a')/calendarView(id,subject,start,end,location,organizer,isAllDay)",
"value": [
{
"@odata.etag": "W/\"5bbkr6SNWESgxRt/IoUplgAAKcCTsQ==\"",
"id": "AAMkADk0...",
"subject": "Sales and Marketing Sync",
"isAllDay": false,
"start": {
"dateTime": "2026-06-08T12:30:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2026-06-08T13:00:00.0000000",
"timeZone": "UTC"
},
"location": {
"displayName": "Sales and Marketing / General",
"locationType": "default",
"uniqueId": "Sales and Marketing / General",
"uniqueIdType": "private"
},
"organizer": {
"emailAddress": {
"name": "Sales and Marketing",
"address": "SalesandMarketing@contoso.com"
}
}
}
],
"@odata.nextLink": "https://graph.microsoft.com/v1.0/me/calendarView?startdatetime=2026-06-01T17%3a51%3a49.607Z&enddatetime=2026-06-08T17%3a51%3a49.607Z&%24select=id%2csubject%2cstart%2cend%2clocation%2corganizer%2cisAllDay&%24top=10&%24skip=10"
},
"statusCode": 200
}
Copilot ツール
Copilot ツールは、Microsoft 365 Copilot を呼び出し、使用可能なエージェントを検出することで、自然言語インテリジェンスを提供します。
質問する
Microsoft 365 Copilot (または特定のエージェント) に、ユーザーのデータに関する自然言語の質問をします。
agentIdを指定すると、要求はその特定のエージェントに送られます。 省略すると、要求は組み込みの Microsoft 365 Copilot エージェントに移動します。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
question |
string | はい | 自然言語で尋ねる質問 |
agentId |
文字列 | いいえ | 質問のルーティング先となる特定のエージェントの ID。 省略した場合、既定では組み込みの Microsoft 365 Copilot エージェントになります。 |
fileUrls |
文字列配列 | 不要 | コンテキストとして使用する OneDrive または SharePoint ファイルの URL の配列。 |
conversationId |
文字列 | いいえ | 既存の会話の会話 ID。 指定された場合、この要求により既存の会話が続行されます。 |
timeZone |
文字列 | いいえ | ユーザーの現在の UTC オフセットに一致する IANA タイム ゾーン識別子。 省略すると、UTC で時間が返されます。 |
応答
正常な応答には、TextContent オブジェクトの text プロパティに JSON 文字列が含まれています。 文字列には以下のプロパティが含まれています。
| プロパティ | 型 | 説明 |
|---|---|---|
response |
string | Microsoft 365 Copilot または指定されたエージェントからの応答。 |
conversationId |
string | 会話 ID。 会話を続行するには、後続の要求の conversationId でこの ID を指定します。 |
例
要求
{
"method": "tools/call",
"params": {
"name": "ask",
"arguments": {
"question": "Do I have any meetings today?"
}
}
}
応答
{
"response": "You have **4 meetings scheduled today**. Here\\u2019s a clear view of your day:...",
"conversationId": "cc7d6f5202cb4c5b814b120440e48ede"
}
list_agents
ask ツールで使用できるエージェントを一覧表示します。 使用可能なエージェントの JSON 配列を返します。組み込みの Microsoft 365 Copilot エージェントは常に含まれます。
パラメーター
このツールはパラメーターを取りません。
応答
正常な応答には、TextContent オブジェクトの text プロパティに JSON 文字列が含まれています。 文字列には以下のプロパティが含まれています。
| プロパティ | 型 | 説明 |
|---|---|---|
agentId |
string | エージェントの一意識別子。 |
name |
string | エージェントの表示名。 |
provider |
string | エージェントの発行元。 |
例
要求
{
"method": "tools/call",
"params": {
"name": "list_agent",
"arguments": {}
}
}
応答
[
{
"agentId": "bizchat-as-gpt-scenario",
"name": "Microsoft Copilot",
"provider": "Microsoft"
}
]
スキーマ ツール
スキーマ ツールを使用すると、利用可能な API パスとその OpenAPI スキーマをランタイムで検出できます。 これらのツールを使用すると、エージェントは、大きなスキーマ定義を事前にコンテキストにロードすることなく、使用可能な操作を検出できます。
get_schema
パスと操作の種類によって識別される、特定の操作の OpenAPI スキーマを取得します。
注:
現在、Microsoft Graph v1.0 スキーマのみを使用できます。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
operationIds |
文字列 | いいえ | スキーマを取得する API の操作 ID ( me.CreateMessages など)。 両方ではなく、 operationIds または path を使用してください。 |
path |
文字列 | いいえ | スキーマを取得する API パス ( /me/messagesなど)。 両方ではなく、 operationIds または path を使用してください。 |
operationType |
string | はい | 操作の種類。 有効な値は、fetch、create、update です。 |
format |
文字列 | いいえ | 目的の出力形式。 有効な値は、 jsonschema (JSON スキーマ 形式) と typescript (TypeScript 定義) です。 省略すると、JSON スキーマが返されます。 |
backend |
文字列 | いいえ | 将来使用するために予約されています。 |
agentId |
文字列 | いいえ | 将来使用するために予約されています。 |
応答
正常な応答には、TextContent オブジェクトの text プロパティに JSON スキーマまたは TypeScript 定義が含まれています。
例
要求
{
"method": "tools/call",
"params": {
"name": "get_schema",
"arguments": {
"path": "/me/messages",
"operationType": "fetch"
}
}
}
応答
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "microsoft.graph.messageCollectionResponse",
"type": "object",
"properties": {
"value": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.message"
}
}
},
"$defs": {
...
}
}
search_paths
プレフィックスまたは正規表現フィルターで利用可能な API パスを検索します。 このツールを使用して、他のツールを呼び出す前に、使用可能なリソース パスを検出します。
注:
現在、Microsoft Graph v1.0 パスのみを使用できます。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
filter |
string | はい | 一致する API パス ( messages や .*calendar.* など) を検索するためのプレフィックスまたは正規表現パターン |
backend |
文字列 | いいえ | 将来使用するために予約されています。 |
agentId |
文字列 | いいえ | 将来使用するために予約されています。 |
応答
成功した応答には、[structuredContent] フィールドに paths プロパティが含まれています。 このプロパティは、次のプロパティを持つオブジェクトの配列です。
| プロパティ | 型 | 説明 |
|---|---|---|
path |
string | 相対 API パス。 |
operations |
文字列配列 | パスでサポートされている操作。 有効な値は、fetch、create、update です。 |
例
要求
{
"method": "tools/call",
"params": {
"name": "search_paths",
"arguments": {
"filter": "messages"
}
}
}
応答
{
"paths": [
{
"path": "/admin/serviceAnnouncement/messages",
"operations": [
"fetch",
"create"
]
},
{
"path": "/admin/serviceAnnouncement/messages/{serviceUpdateMessage-id}",
"operations": [
"fetch",
"create",
"update"
]
},
...
]
}
許可されるリソース パス
エンティティ ツールは相対リソース パスで動作します。 既定では、次のパス プレフィックスを使用できます。
/me//users//sites/
次のパス セグメントはブロックされます。
/authentication//servicePrincipals/
注:
許可されるパスとブロックされるパスの完全な一覧は、テナントごとのポリシー構成に依存し、異なる場合があります。
エラー処理
ツールの呼び出しが失敗すると、Work IQ MCP サーバーは次の情報を含むエラーを返します。
- ダウンストリーム サービスからの HTTP 状態コード
-
Retry-After調整応答のヘッダー (Microsoft Graph から渡される) - トラブルシューティング用の関連付け ID を要求する
サーバーは自動再試行を実行しません。 MCP クライアントはエラーを受信し、クライアント側の再試行を決定します。