Narzędzie: search_messages
Wyszukuje wiadomości na czacie w Google Chat za pomocą słów kluczowych i filtrów, zwracając je w formacie Markdown. Działa we wszystkich pokojach, do których użytkownik ma dostęp, lub może być ograniczony do konkretnej rozmowy.
Podejmując decyzję o użyciu search_messages zamiast innych narzędzi do wyszukiwania lub czytania, postępuj zgodnie z tymi wskazówkami:
- Używaj
search_messages, gdy szukasz konkretnych treści wiadomości, słów kluczowych, wzmianek, linków, nadawców lub nieprzeczytanych wiadomości, potencjalnie w wielu pokojach lub bez znanego identyfikatora rozmowy. - Użyj
list_messages, gdy znasz identyfikator konkretnego pokoju lub wątku i chcesz czytać wiadomości po kolei w porządku chronologicznym. - Użyj
search_conversations, aby znaleźć metadane pokoju, takie jak identyfikatory rozmów, według wyświetlanej nazwy pokoju lub uczestników (wyszukiwane są tylko metadane, a nie treść wiadomości).
Jeśli parametr searchParameters zostanie podany bez konkretnych filtrów, zwracane są ostatnie wiadomości z rozmów dostępnych dla użytkownika.
Poniższy przykładowy kod pokazuje, jak używać curl do wywoływania narzędzia MCP search_messages.
| Żądanie Curl |
|---|
curl --location 'https://chatmcp.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_messages", "arguments": { // Provide these details according to the MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' |
Schemat wejściowy
SearchMessagesRequest
| Zapis JSON |
|---|
{
"searchParameters": {
object ( |
| Pola | |
|---|---|
searchParameters |
Wymagane. Parametry wyszukiwania, których chcesz użyć. |
pageSize |
Opcjonalnie: Maksymalna liczba wyników do zwrócenia (maksymalnie 100). Jeśli nie podano tego argumentu, zwracanych jest maksymalnie 25 wyników. |
pageToken |
Opcjonalnie: Token strony otrzymany z poprzedniego wywołania |
SearchParameters
| Zapis JSON |
|---|
{
"keywords": [
string
],
"conversationId": string,
"sender": string,
"isUnread": boolean,
"hasLink": boolean,
"startTime": string,
"endTime": string,
"mentionsMe": boolean,
"conversationIncludesUser": string,
"spaceDisplayNames": [
string
],
"conversationTypes": [
enum ( |
| Pola | |
|---|---|
keywords[] |
Opcjonalnie: Zestaw słów kluczowych, które służą do filtrowania wyników. |
conversationId |
Opcjonalnie: Ogranicza wyszukiwanie do konkretnego identyfikatora rozmowy zwróconego przez narzędzie search_conversations. Format: |
sender |
Opcjonalnie: Filtrowanie wiadomości od określonego użytkownika. Można użyć adresu e-mail lub nazwy zasobu nadawcy. Nazwy zasobów użytkowników mają format |
isUnread |
Opcjonalnie: Filtruj wiadomości, które nie zostały przeczytane przez użytkownika wywołującego. |
hasLink |
Opcjonalnie: Filtruj wiadomości zawierające co najmniej 1 adres URL. |
startTime |
Opcjonalnie: Filtruj wiadomości utworzone po tym czasie. Format: sygnatura czasowa ISO 8601. |
endTime |
Opcjonalnie: Filtruj wiadomości utworzone przed tym czasem. Format: sygnatura czasowa ISO 8601. |
mentionsMe |
Opcjonalnie: Filtruj wiadomości, które wyraźnie wspominają o użytkowniku wywołującym. |
conversationIncludesUser |
Opcjonalnie: Filtruj wiadomości na czatach i czatach grupowych, które zawierają adres e-mail lub identyfikator konkretnego użytkownika. |
spaceDisplayNames[] |
Opcjonalnie: Filtruj według listy nazw pokoi. Wyświetlane nazwy pokoi są częściowo dopasowywane. Uwaga: zwracanych jest tylko 5 najlepszych dopasowań. |
conversationTypes[] |
Opcjonalnie: Filtruj według typu rozmowy. |
hasAttachment |
Opcjonalnie: Filtruj wiadomości zawierające co najmniej 1 załącznik. Uwaga: to pole jest w trakcie opracowywania i może nie być jeszcze obsługiwane we wszystkich środowiskach. |
ConversationType
Określa typ rozmowy.
| Wartości w polu enum | |
|---|---|
CONVERSATION_TYPE_UNSPECIFIED |
Nie określono. |
NAMED_SPACE |
pokój z nazwą, |
GROUP_CHAT |
czat grupowy z co najmniej 3 osobami; |
DIRECT_MESSAGE |
czat między 2 osobami lub osobą i aplikacją Google Chat; |
Schemat wyjściowy
Odpowiedź na wyszukiwanie wiadomości na czacie w Google Chat. Jeśli parametr next_page_token jest wypełniony, można ponownie wywołać SearchMessages z tym tokenem, aby pobrać następną stronę wyników.
SearchMessagesResponse
| Zapis JSON |
|---|
{
"messages": [
{
object ( |
| Pola | |
|---|---|
messages[] |
Lista obiektów wiadomości, które spełniają kryteria wyszukiwania. |
nextPageToken |
Token, który można wysłać jako |
ChatMessage
| Zapis JSON |
|---|
{ "messageId": string, "threadId": string, "plaintextBody": string, "sender": { object ( |
| Pola | |
|---|---|
messageId |
Nazwa zasobu wiadomości. Format: spaces/{space}/messages/{message} |
threadId |
Wątek, do którego należy ta wiadomość. Jeśli wiadomość nie jest częścią wątku, to pole będzie puste. Format: spaces/{space}/threads/{thread} |
plaintextBody |
Treść wiadomości w formacie Markdown. |
sender |
Nadawca wiadomości. |
createTime |
Tylko dane wyjściowe. Sygnatura czasowa utworzenia wiadomości. Format: sygnatura czasowa ISO 8601. |
threadedReply |
Określa, czy wiadomość jest odpowiedzią w wątku. |
attachments[] |
Załączniki dołączone do wiadomości. |
reactionSummaries[] |
Podsumowanie reakcji emotikonami zawarte w wiadomości. |
quotedMessageMetadata |
Tylko dane wyjściowe. Informacje o oryginalnej wiadomości, która jest cytowana lub przekazywana w tej wiadomości. Uwaga: to pole jest w trakcie opracowywania i może nie być jeszcze dostępne we wszystkich środowiskach. |
Użytkownik
| Zapis JSON |
|---|
{
"userId": string,
"displayName": string,
"email": string,
"userType": enum ( |
| Pola | |
|---|---|
userId |
Nazwa zasobu użytkownika Google Chat. Format: users/{user}. |
displayName |
Wyświetlana nazwa użytkownika Google Chat. |
email |
Adres e-mail użytkownika. To pole jest wypełniane tylko wtedy, gdy typ użytkownika to HUMAN. |
userType |
Typ użytkownika. |
ChatAttachmentMetadata
| Zapis JSON |
|---|
{
"attachmentId": string,
"filename": string,
"mimeType": string,
"source": enum ( |
| Pola | |
|---|---|
attachmentId |
Nazwa zasobu załącznika. Format: spaces/{space}/messages/{message}/attachments/{attachment}. |
filename |
Nazwa załącznika. |
mimeType |
Typ treści (typ MIME). |
source |
Źródło załącznika. |
driveFileId |
Tylko dane wyjściowe. Identyfikator pliku na Dysku Google. Wypełniane tylko wtedy, gdy źródłem jest DRIVE_FILE. Używaj z MCP Dysku Google. |
ReactionSummary
| Zapis JSON |
|---|
{ "emoji": string, "count": integer } |
| Pola | |
|---|---|
emoji |
Ciąg znaków unicode emotikona lub nazwa niestandardowego emotikona. |
count |
Łączna liczba reakcji z użyciem powiązanego emotikona. |
QuotedMessageMetadata
| Zapis JSON |
|---|
{ "messageId": string, "lastUpdateTime": string, "quoteType": enum ( |
| Pola | |
|---|---|
messageId |
Tylko dane wyjściowe. Nazwa zasobu oryginalnej wiadomości, która jest cytowana lub przekazywana dalej. Format: spaces/{space}/messages/{message} |
lastUpdateTime |
Tylko dane wyjściowe. Sygnatura czasowa określająca, kiedy oryginalna wiadomość została utworzona lub ostatnio zaktualizowana przed jej zacytowaniem lub przekazaniem dalej. Format: sygnatura czasowa ISO 8601. |
quoteType |
Tylko dane wyjściowe. Typ cytatu. |
plaintextBody |
Tylko dane wyjściowe. Zrzut treści oryginalnej wiadomości w momencie cytowania lub przekazywania. Sformatowane za pomocą Markdown w przypadku |
sender |
Tylko dane wyjściowe. Wyświetlana nazwa autora oryginalnej wiadomości. |
attachments[] |
Tylko dane wyjściowe. załączniki, które były częścią oryginalnej wiadomości; Wartość podawana tylko w przypadku typu wyceny |
forwardedMetadata |
Tylko dane wyjściowe. Metadane dotyczące rozmowy źródłowej przekazanej wiadomości. Wartość podawana tylko w przypadku typu wyceny |
ForwardedMetadata
| Zapis JSON |
|---|
{ "conversationId": string, "conversationDisplayName": string } |
| Pola | |
|---|---|
conversationId |
Tylko dane wyjściowe. Nazwa zasobu rozmowy źródłowej. Format: spaces/{space} |
conversationDisplayName |
Tylko dane wyjściowe. Wyświetlana nazwa rozmowy źródłowej w momencie przekazania wiadomości. W przypadku nazwanych pokoi jest to nazwa pokoju. W przypadku czatów indywidualnych jest to nazwa drugiego uczestnika. W przypadku czatów grupowych bez nazwy jest to nazwa wygenerowana na podstawie nazw użytkowników. |
UserType
Typ użytkownika Google Chat.
| Wartości w polu enum | |
|---|---|
USER_TYPE_UNSPECIFIED |
Nie określono. |
HUMAN |
Użytkownik. |
APP |
Użytkownik aplikacji. |
Źródło
Źródło załącznika.
| Wartości w polu enum | |
|---|---|
SOURCE_UNSPECIFIED |
Zarezerwowane. |
DRIVE_FILE |
Plik jest plikiem z Dysku Google. |
UPLOADED_CONTENT |
Plik zostanie przesłany do Google Chat. |
QuoteType
Typ cytatu wskazujący, czy wiadomość jest odpowiedzią z cytatem czy przekazaną wiadomością.
| Wartości w polu enum | |
|---|---|
QUOTE_TYPE_UNSPECIFIED |
Zarezerwowane. Niezdefiniowany typ cytatu. |
REPLY |
Wiadomość jest odpowiedzią z cytatem na oryginalną wiadomość w tym samym wątku. |
FORWARD |
Wiadomość została przekazana z oryginalnej wiadomości w innej rozmowie lub z innego wątku w tej samej rozmowie. |
Adnotacje dotyczące narzędzi
Adnotacje narzędzi są wysyłane do klientów MCP, aby opisać podstawowe ryzyko związane z danym narzędziem. Większość klientów traktuje te wskazówki jako niezaufane, ale można ich użyć do określenia, kiedy wysłać użytkownikowi prośbę o potwierdzenie.
Oprócz ciągu tytułu zdefiniowane są te wskazówki logiczne:
readOnlyHint: jeśli ma wartość „true”, narzędzie nie modyfikuje swojego środowiska. Wartość domyślna: false.destructiveHint: jeśli ma wartość „true”, narzędzie może wykonywać działania destrukcyjne. Jeśli ma wartość false, narzędzie może wykonywać tylko działania dodawania. Wartość domyślna: true.idempotentHint: jeśli ma wartość „true”, wielokrotne wywoływanie narzędzia z tymi samymi argumentami nie będzie miało dodatkowego wpływu na jego środowisko. Wartość domyślna: false.openWorldHint: jeśli ma wartość true, narzędzie może wchodzić w interakcje z „otwartym światem” elementów zewnętrznych. Jeśli ma wartość false, narzędzie może wchodzić w interakcje tylko z encjami wewnętrznymi. Na przykład narzędzie do wyszukiwania w internecie jest narzędziem typu Otwarty świat, ale narzędzie do zapamiętywania już nie.
Wskazówka dotycząca niszczenia: ❌ | Wskazówka dotycząca idempotencji: ✅ | Wskazówka dotycząca tylko do odczytu: ✅ | Wskazówka dotycząca otwartego świata: ❌
Zakresy autoryzacji
Wymaga jednego z tych zakresów OAuth:
https://www.googleapis.com/auth/chat.messages.readonlyhttps://www.googleapis.com/auth/chat.spaces.readonlyhttps://www.googleapis.com/auth/chat.memberships.readonlyhttps://www.googleapis.com/auth/chat.users.readstate.readonly