工具:search_corpus
根据提供的查询,在多个 Workspace 语料库(云端硬盘、Gmail、日历和 Chat)中执行搜索。
此工具是一种跨语料库搜索工具,默认情况下会搜索所有受支持的语料库(云端硬盘、Gmail、日历和 Chat)。如果用户的查询未指定特定语料库(例如,“我计划在 6 月份去哪里进行摄影散步?”),您必须先调用此跨语料库“search_corpus”工具,而不是调用“list_events”“search_threads”“list_threads”或“search_files”等特定工具。如果此工具未返回任何结果,您可以改用这些针对具体产品(单一语料库)的搜索工具。
请注意,如果用户在查询中指定了特定语料库(例如“搜索我电子邮件中的内容”),建议使用单语料库工具(例如 GmailTool),以便获得更集中的结果(如果有)。不过,此跨语料库搜索工具仍可用于这些查询,并且在没有特定工具可用时,应使用此工具。
此工具可以根据查询字符串过滤结果。跨语料库搜索不支持分页。请注意,如果 Gmail 邮件包含附件,这些附件不会作为单独的字段返回,而是直接包含在邮件摘要中。
以下代码示例展示了如何使用 curl 调用 search_corpus MCP 工具。
| Curl 请求 |
|---|
curl --location 'https://workspacemcp.googleapis.com/mcp/v1' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "search_corpus", "arguments": { // Provide these details according to the MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' |
输入架构
WorkspaceToolService.SearchCorpus 的请求消息。
SearchCorpusRequest
| JSON 表示法 |
|---|
{ "query": string, "pageSize": integer, "pageToken": string } |
| 字段 | |
|---|---|
query |
必需。用户提供的原始查询字符串。 |
pageSize |
可选。目前已忽略。服务器最多返回服务器定义的结果数量。不支持分页。 |
pageToken |
可选。目前已忽略。不支持分页。 |
输出架构
WorkspaceToolService.SearchCorpus 的响应消息。
SearchCorpusResponse
| JSON 表示法 |
|---|
{
"items": [
{
object ( |
| 字段 | |
|---|---|
items[] |
通用搜索结果项的列表,每个结果项可能来自不同的语料库。 |
nextPageToken |
目前始终为空。不支持分页。 |
SearchResultItem
| JSON 表示法 |
|---|
{ "driveResult": { object ( |
| 字段 | |
|---|---|
联合字段 item_result。来自 Workspace 语料库的特定搜索结果。item_result 只能是下列其中一项: |
|
driveResult |
来自 Google 云端硬盘的搜索结果。 |
gmailResult |
来自 Gmail 的搜索结果。 |
calendarResult |
来自 Google 日历的搜索结果。 |
chatResult |
来自 Google Chat 的搜索结果。 |
DriveResult
| JSON 表示法 |
|---|
{ "itemId": string, "title": string, "mimeType": string, "viewUrl": string, "contentSnippet": string } |
| 字段 | |
|---|---|
itemId |
云端硬盘内容(例如文档、表格、演示文稿)的唯一标识符。 |
title |
云端硬盘内容的标题。 |
mimeType |
云端硬盘内容的 MIME 类型。 |
viewUrl |
用于查看云端硬盘内容的网址。 |
contentSnippet |
云端硬盘内容的内容摘要。 |
GmailResult
| JSON 表示法 |
|---|
{
"thread": {
object ( |
| 字段 | |
|---|---|
thread |
与搜索查询匹配的会话。 |
GmailThread
| JSON 表示法 |
|---|
{
"threadId": string,
"messages": [
{
object ( |
| 字段 | |
|---|---|
threadId |
Gmail 会话串的标识符。 |
messages[] |
会话中的消息列表。 |
GmailMessage
| JSON 表示法 |
|---|
{ "messageId": string, "subject": string, "snippet": string, "sender": string, "recipients": [ string ], "ccRecipients": [ string ], "viewUrl": string } |
| 字段 | |
|---|---|
messageId |
Gmail 邮件的标识符。 |
subject |
Gmail 邮件的主题。 |
snippet |
Gmail 邮件的内容摘要。 |
sender |
Gmail 邮件的发件人邮箱。 |
recipients[] |
Gmail 邮件收件人的邮箱。 |
ccRecipients[] |
Gmail 邮件的抄送收件人电子邮件地址。 |
viewUrl |
用于查看 Gmail 邮件的网址。 |
CalendarResult
| JSON 表示法 |
|---|
{ "eventId": string, "title": string, "description": string, "calendarId": string, "viewUrl": string, "location": string, "start": { object ( |
| 字段 | |
|---|---|
eventId |
日历活动的唯一标识符。 |
title |
日历活动的标题。 |
description |
日历活动的说明。 |
calendarId |
日历活动的日历 ID,即所有者的邮箱。 |
viewUrl |
用于查看日历活动的网址。 |
location |
表示日历活动的地点。 |
start |
日历活动的开始时间(含边界值)。 |
end |
日历活动的结束时间(不含此时间)。 |
DateOrDateTime
| JSON 表示法 |
|---|
{ "date": string, "dateTime": string, "timeZone": string } |
| 字段 | |
|---|---|
date |
采用 |
dateTime |
ISO 8601 时间戳(例如 |
timeZone |
采用 IANA 时区数据库格式的原始时区(例如 |
ChatResult
| JSON 表示法 |
|---|
{
"messages": [
{
object ( |
| 字段 | |
|---|---|
messages[] |
可归为同一对话的消息列表。 |
ChatMessage
| JSON 表示法 |
|---|
{ "id": { object ( |
| 字段 | |
|---|---|
id |
邮件和会话的唯一标识符。 |
plaintextBody |
邮件的纯文本正文。 |
sender |
消息的发件人。 |
createTime |
消息的创建时间戳。 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不进行“Z”归一化处理的偏差时间也是可以接受的。示例: |
threadedReply |
消息是否为消息串回复。 |
attachments[] |
邮件中包含的附件。 |
reactionSummaries[] |
消息中包含的表情符号回应摘要。 |
viewUrl |
用于查看聊天消息的网址。 |
ChatMessageId
| JSON 表示法 |
|---|
{ "messageId": string, "threadId": string } |
| 字段 | |
|---|---|
messageId |
消息的资源名称。 |
threadId |
此消息所属的会话。 |
ChatUser
| JSON 表示法 |
|---|
{
"userId": string,
"displayName": string,
"email": string,
"chatUserType": enum ( |
| 字段 | |
|---|---|
userId |
用户的唯一标识符。 |
displayName |
用户的显示名称。 |
email |
用户的邮箱。 |
chatUserType |
用户类型。 |
时间戳
| JSON 表示法 |
|---|
{ "seconds": string, "nanos": integer } |
| 字段 | |
|---|---|
seconds |
表示世界协调时间 (UTC) 的秒数(从 Unix 纪元 1970-01-01T00:00:00Z 开始算起)。必须介于 -62135596800 到 253402300799 之间(含边界值,对应于 0001-01-01T00:00:00Z 到 9999-12-31T23:59:59Z)。 |
nanos |
秒数的非负小数部分(以纳秒为单位)。此字段是时长的纳秒部分,而不是秒的替代值。对于含小数部分的负秒数,仍必须包含按时间递升的非负纳秒值。必须在 0 到 999,999,999 之间(含边界值)。 |
ChatAttachment
| JSON 表示法 |
|---|
{
"attachmentId": string,
"filename": string,
"mimeType": string,
"source": enum ( |
| 字段 | |
|---|---|
attachmentId |
附件的资源名称。 |
filename |
附件的名称。 |
mimeType |
内容类型(MIME 类型)。 |
source |
附件的来源。 |
ChatReaction
| JSON 表示法 |
|---|
{ "emoji": string, "count": integer } |
| 字段 | |
|---|---|
emoji |
表情符号 Unicode 字符串或自定义表情符号名称。 |
count |
使用相关表情符号的回应总数。 |
ChatUserType
表示 Chat 用户类型的枚举。
| 枚举 | |
|---|---|
CHAT_USER_TYPE_UNSPECIFIED |
默认值。请勿使用。 |
CHAT_USER_TYPE_HUMAN |
人类用户。 |
CHAT_USER_TYPE_BOT |
机器人用户。 |
来源
附件的来源。
| 枚举 | |
|---|---|
SOURCE_UNSPECIFIED |
Reserved. |
DRIVE_FILE |
该文件是 Google 云端硬盘文件。 |
UPLOADED_CONTENT |
文件会上传到 Chat。 |
工具注释
工具注解会发送到 MCP 客户端,用于描述给定工具的基本风险。大多数客户端会将这些提示视为不可信,但它们可用于决定何时向用户发送确认提示。
除了标题字符串之外,还定义了以下布尔值提示:
readOnlyHint:如果为 true,则该工具不会修改其环境。默认值:false。destructiveHint:如果为 true,则该工具可以执行破坏性操作。如果为 false,则该工具只能执行添加操作。默认值:true。idempotentHint:如果为 true,则使用相同参数重复调用该工具不会对其环境产生额外影响。默认值:false。openWorldHint:如果为 true,则该工具可以与外部实体的“开放世界”进行交互。如果为 false,则该工具只能与内部实体交互。例如,网页搜索工具是开放世界,而记忆工具不是开放世界。
破坏性提示:❌ | 等幂性提示:✅ | 只读提示:✅ | 开放世界提示:❌
授权范围
需要以下 OAuth 范围之一:
https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/drive.readonlyhttps://mail.google.com/https://www.googleapis.com/auth/gmail.modifyhttps://www.googleapis.com/auth/gmail.readonlyhttps://www.googleapis.com/auth/calendarhttps://www.googleapis.com/auth/calendar.readonlyhttps://www.googleapis.com/auth/chat.messageshttps://www.googleapis.com/auth/chat.messages.readonlyhttps://www.googleapis.com/auth/chat.spaces.readonlyhttps://www.googleapis.com/auth/chat.memberships.readonly