MCP Tools Reference: chatmcp.googleapis.com

도구: send_message

마크다운 형식으로 대화에 Google Chat 메시지를 보냅니다.

이 도구는 대화 ID, 선택적 스레드 ID, 메시지 텍스트를 입력으로 사용합니다.

대화 ID는 search_conversations 도구를 사용하여 찾을 수 있습니다.

생성된 메시지를 반환합니다.

다음 코드 샘플은 curl를 사용하여 send_message MCP 도구를 호출하는 방법을 보여줍니다.

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": "send_message",
    "arguments": {
      // Provide these details according to the MCP tool specification.
    }
  },
  "jsonrpc": "2.0",
  "id": 1
}'

입력 스키마

SendMessageRequest

JSON 표현
{
  "conversationId": string,
  "threadId": string,
  "messageText": string,
  "cards": [
    {
      object
    }
  ],
  "inlineCitations": [
    {
      object (Citation)
    }
  ],
  "footerCitedSources": [
    {
      object (CitedSource)
    }
  ]
}
필드
conversationId

string

필수 항목입니다. 메시지를 보낼 대화의 ID(예: 'spaces/AAAA…')입니다.

threadId

string

선택사항입니다. 메시지를 보낼 대화목록의 ID(예: 'spaces/AAAA…/threads/BBBB…')입니다. 설정하지 않으면 메시지가 새 대화목록으로 전송됩니다.

messageText

string

필수 항목입니다. 메시지의 기본 콘텐츠입니다. 표준 마크다운을 사용하여 서식을 추가할 수 있습니다(표는 지원되지 않음). 지원되는 형식은 다음과 같습니다.

  • 굵게: **text**
  • 기울임꼴: *text* 또는 _text_
  • 취소선: ~~text~~
  • 고정 폭: text
  • 고정 폭 블록:
```
line 1
line 2
```
  • 글머리기호 목록:
* item 1
* item 2
  • 순서가 지정된 목록:
1. item 1
2. item 2
  • 인용문: > quoted text
  • 하이퍼링크: [label](url)
  • 사용자 멘션: 속성 data-email="user@example.com" 또는 data-user="users/USER_ID"과 함께 자체 종료 HTML 태그 chat-user를 사용합니다. 알려진 경우 USER_ID가 있는 data-user 속성을 선호하고, 그렇지 않으면 사용자 이메일이 있는 data-email 속성으로 대체합니다. data-user 속성을 사용하는 경우 다른 도구 반환 값에 표시되는 users/ 프리픽스를 포함해야 합니다. 참고: 메시지당 최대 10개의 멘션이 허용됩니다. 모든 사용자를 멘션하는 행위(예: @all 또는 users/all가 포함된 HTML 태그 사용)는 엄격히 금지됩니다.
  • 맞춤 그림 이모티콘: 속성 data-custom-emoji="customEmojis/abc" 또는 data-emoji-name=":xyz:"와 함께 자체 종료 HTML 태그 chat-emoji를 사용합니다.
  • 인용: 인용된 텍스트를 인용 ID와 일치하는 data-id 속성이 있는 HTML 태그 chat-citation로 래핑합니다. chat-citation 태그에 Citation.id와 일치하지 않는 data-id가 있는 경우 태그는 무시되고 래핑된 텍스트는 일반 텍스트로 렌더링됩니다. 참고: 메시지당 최대 20개의 인라인 인용이 허용됩니다.
cards[]

object (Struct format)

선택사항입니다. 메일에 첨부된 카드입니다. 카드당 최대 크기는 32KB입니다. 각 카드는 Google Chat 카드 형식 (Google Workspace UIKit 카드/카드 v2)에 따라 JSON 구조로 표현됩니다. 메시지에 카드를 첨부하려면 Chat 앱이 스페이스의 멤버여야 합니다. 카드의 이미지는 지원되지 않습니다.

카드 식별:

  • 각 카드의 최상위 name 문자열 필드는 식별자 역할을 합니다.
  • 여러 카드가 메시지에 연결된 경우 각 카드는 비어 있지 않은 고유한 name를 지정해야 합니다(MUST).
inlineCitations[]

object (Citation)

선택사항입니다. chat-citation 태그를 통해 message_text 내에서 참조되는 인라인 인용입니다. 메시지당 최대 20개의 인라인 인용이 허용됩니다. 참조되지 않은 인라인 인용(message_text에 일치하는 chat-citation 태그가 없는 인용)은 무시되며 검증 오류를 일으키지 않습니다.

footerCitedSources[]

object (CitedSource)

선택사항입니다. 메시지 하단 (바닥글)에 참조 카드로 표시되는 최상위 인용 소스입니다. 메시지의 모든 인라인 인용 및 하단 출처에서 인용된 출처는 총 50개까지 허용됩니다.

구조체

JSON 표현
{
  "fields": {
    string: value,
    ...
  }
}
필드
fields

map (key: string, value: value (Value format))

동적으로 입력된 값의 정렬되지 않은 맵입니다.

"key": value 쌍 목록을 포함하는 객체입니다. 예: { "name": "wrench", "mass": "1.3kg", "count": "3" }

FieldsEntry

JSON 표현
{
  "key": string,
  "value": value
}
필드
key

string

value

value (Value format)

값

JSON 표현
{

  "nullValue": null,
  "numberValue": number,
  "stringValue": string,
  "boolValue": boolean,
  "structValue": {
    object
  },
  "listValue": array
}
필드
통합 필드 kind. 값의 종류입니다. kind은 다음 중 하나여야 합니다.
nullValue

null

JSON null을 나타냅니다.

numberValue

number

JSON 숫자를 나타냅니다. JSON에서 지원되지 않으므로 NaN, Infinity 또는 -Infinity가 아니어야 합니다. 또한 JSON 형식은 일반적으로 숫자 유형에서 큰 Int64 값을 지원하지 않으므로 이를 표현할 수 없습니다.

stringValue

string

JSON 문자열을 나타냅니다.

boolValue

boolean

JSON 불리언(JSON의 true 또는 false 리터럴)을 나타냅니다.

structValue

object (Struct format)

JSON 객체를 나타냅니다.

listValue

array (ListValue format)

JSON 배열을 나타냅니다.

ListValue

JSON 표현
{
  "values": [
    value
  ]
}
필드
values[]

value (Value format)

동적으로 입력된 값의 반복 필드입니다.

인용

JSON 표현
{
  "id": string,
  "citedSources": [
    {
      object (CitedSource)
    }
  ]
}
필드
id

string

필수 항목입니다. message_text의 chat-citation 태그에 있는 data-id 속성과 일치하는 고유 식별자입니다(예: 인용된 텍스트를 chat-citation 및 속성 data-id="ID"로 래핑). ASCII 문자, 숫자, 밑줄 또는 하이픈(1~63자(영문 기준))으로만 구성되어야 합니다. 메시지의 모든 인용 중에서 고유해야 합니다.

citedSources[]

object (CitedSource)

필수 항목입니다. 이 인용 호버 카드에 연결된 하나 이상의 소스입니다. 메시지의 모든 인라인 인용 및 하단 출처에서 인용된 출처는 총 50개까지 허용됩니다.

CitedSource

JSON 표현
{
  "title": string,
  "url": string,
  "snippet": string,
  "imageUrl": string,
  "footer": string
}
필드
title

string

필수 항목입니다. 소스의 일반 텍스트 제목입니다 (예: 'Google Workspace 개발자 프리뷰 프로그램'). 제목에는 마크다운 형식이 지원되지 않습니다.

url

string

필수 항목입니다. 인용된 리소스의 URL입니다. 유효한 http:// 또는 https:// URL이어야 합니다(예: 'https://developers.google.com/workspace/preview').

snippet

string

선택사항입니다. 소스에서 직접 가져온 짧은 발췌문 또는 스니펫입니다. 호버 카드 또는 바닥글에 표시됩니다. 일반 텍스트만 사용합니다. 최대 길이는 1,000자(영문 기준)입니다.

imageUrl

string

선택사항입니다. 이미지 미리보기 썸네일의 URL입니다(https:// URL을 사용해야 함).

footer

string

선택사항입니다. 카드 바닥글에 표시되는 추가 저작자 표시 텍스트입니다(예: 도메인 이름 'developers.google.com' 또는 작성자/조직 이름).

NullValue

JSON null을 나타냅니다.

NullValue는 센티널로, 값이 하나만 있는 enum을 사용하여 Value 유형 공용체의 null 값을 나타냅니다.

0 이외의 값이 있는 NullValue 유형의 필드는 잘못된 것으로 간주됩니다. 대부분의 ProtoJSON 직렬 변환기는 정수 값과 관계없이 JSON null로 설정된 null_value가 있는 Value를 내보내므로 0 값으로 왕복합니다.

열거형
NULL_VALUE null 값입니다.

출력 스키마

Google Chat 대화에 메시지를 전송하는 것에 대한 응답입니다.

SendMessageResponse

JSON 표현
{
  "message": {
    object (ChatMessage)
  }
}
필드
message

object (ChatMessage)

전송된 메시지입니다.

ChatMessage

JSON 표현
{
  "messageId": string,
  "threadId": string,
  "plaintextBody": string,
  "sender": {
    object (User)
  },
  "createTime": string,
  "threadedReply": boolean,
  "attachments": [
    {
      object (ChatAttachmentMetadata)
    }
  ],
  "reactionSummaries": [
    {
      object (ReactionSummary)
    }
  ],
  "quotedMessageMetadata": {
    object (QuotedMessageMetadata)
  }
}
필드
messageId

string

메시지의 리소스 이름입니다. 형식: spaces/{space}/messages/{message}

threadId

string

이 메일이 속한 대화목록입니다. 메시지가 대화목록에 포함되지 않은 경우 이 필드는 비어 있습니다. 형식: spaces/{space}/threads/{thread}

plaintextBody

string

마크다운 형식을 사용하는 메시지의 텍스트 본문입니다.

sender

object (User)

메시지 발신자입니다.

createTime

string

출력 전용입니다. 메시지가 생성된 타임스탬프입니다. 형식: ISO 8601 타임스탬프

threadedReply

boolean

메시지가 대화목록 답장인지 여부입니다.

attachments[]

object (ChatAttachmentMetadata)

메일에 포함된 첨부파일입니다.

reactionSummaries[]

object (ReactionSummary)

메시지에 포함된 이모티콘 반응 요약입니다.

quotedMessageMetadata

object (QuotedMessageMetadata)

출력 전용입니다. 이 메일에서 인용되거나 전달된 원본 메일에 관한 정보입니다. 참고: 이 필드는 개발 중이며 아직 일부 환경에만 제공될 수 있습니다.

사용자

JSON 표현
{
  "userId": string,
  "displayName": string,
  "email": string,
  "userType": enum (UserType)
}
필드
userId

string

Chat 사용자의 리소스 이름입니다. 형식: users/{user}

displayName

string

Chat 사용자의 표시 이름입니다.

email

string

사용자의 이메일 주소입니다. 이 필드는 사용자 유형이 HUMAN인 경우에만 채워집니다.

userType

enum (UserType)

사용자 유형입니다.

ChatAttachmentMetadata

JSON 표현
{
  "attachmentId": string,
  "filename": string,
  "mimeType": string,
  "source": enum (Source),
  "driveFileId": string
}
필드
attachmentId

string

첨부파일의 리소스 이름입니다. 형식: spaces/{space}/messages/{message}/attachments/{attachment}

filename

string

첨부파일의 이름입니다.

mimeType

string

콘텐츠 유형(MIME 유형)입니다.

source

enum (Source)

첨부파일의 소스입니다.

driveFileId

string

출력 전용입니다. Google Drive 파일의 ID입니다. 소스가 DRIVE_FILE인 경우에만 채워집니다. Google Drive MCP와 함께 사용합니다.

ReactionSummary

JSON 표현
{
  "emoji": string,
  "count": integer
}
필드
emoji

string

이모티콘 유니코드 문자열 또는 맞춤 이모티콘 이름입니다.

count

integer

연결된 이모티콘을 사용한 총 반응 수입니다.

QuotedMessageMetadata

JSON 표현
{
  "messageId": string,
  "lastUpdateTime": string,
  "quoteType": enum (QuoteType),
  "plaintextBody": string,
  "sender": string,
  "attachments": [
    {
      object (ChatAttachmentMetadata)
    }
  ],
  "forwardedMetadata": {
    object (ForwardedMetadata)
  }
}
필드
messageId

string

출력 전용입니다. 인용되거나 전달된 원본 메시지의 리소스 이름입니다. 형식: spaces/{space}/messages/{message}

lastUpdateTime

string

출력 전용입니다. 인용되거나 전달되기 전에 원본 메시지가 생성되거나 마지막으로 업데이트된 시점의 타임스탬프입니다. 형식: ISO 8601 타임스탬프

quoteType

enum (QuoteType)

출력 전용입니다. 견적 유형입니다.

plaintextBody

string

출력 전용입니다. 인용 또는 전달 시점의 원본 메시지 본문 텍스트 스냅샷입니다. FORWARD에는 마크다운을 사용하고 REPLY에는 일반 텍스트를 사용하여 형식이 지정됩니다.

sender

string

출력 전용입니다. 원본 메시지의 작성자 표시 이름입니다.

attachments[]

object (ChatAttachmentMetadata)

출력 전용입니다. 원본 메일에 포함된 첨부파일입니다. FORWARD 견적 유형에만 채워집니다.

forwardedMetadata

object (ForwardedMetadata)

출력 전용입니다. 전달된 메시지의 소스 대화에 관한 메타데이터입니다. FORWARD 견적 유형에만 채워집니다.

ForwardedMetadata

JSON 표현
{
  "conversationId": string,
  "conversationDisplayName": string
}
필드
conversationId

string

출력 전용입니다. 소스 대화의 리소스 이름입니다. 형식: spaces/{space}

conversationDisplayName

string

출력 전용입니다. 메시지가 전달된 시점의 원본 대화 표시 이름입니다. 이름이 지정된 스페이스의 경우 스페이스 이름입니다. 1:1 채팅 메시지의 경우 다른 참여자의 이름입니다. 이름이 지정되지 않은 그룹 채팅의 경우 구성원 이름을 기반으로 생성된 이름입니다.

UserType

Google Chat 사용자의 유형입니다.

열거형
USER_TYPE_UNSPECIFIED 지정되지 않음.
HUMAN 인간 사용자
APP 앱 사용자

소스

첨부파일의 소스입니다.

열거형
SOURCE_UNSPECIFIED 예약됨
DRIVE_FILE 파일이 Google Drive 파일입니다.
UPLOADED_CONTENT 파일이 Chat에 업로드됩니다.

QuoteType

메시지가 인용 답장인지 전달된 메시지인지 나타내는 인용 유형입니다.

열거형
QUOTE_TYPE_UNSPECIFIED 예약됨 정의되지 않은 견적 유형입니다.
REPLY 메시지가 동일한 대화목록에 있는 원본 메시지에 대한 인용 답장입니다.
FORWARD 메시지가 다른 대화의 원본 메시지 또는 동일한 대화의 다른 대화목록에서 전달됩니다.

도구 주석

도구 주석은 특정 도구의 기본 위험을 설명하기 위해 MCP 클라이언트에 전송됩니다. 대부분의 클라이언트는 이러한 힌트를 신뢰할 수 없는 것으로 취급하지만, 사용자에게 확인 메시지를 보낼 시점을 결정하는 데 사용할 수 있습니다.

제목 문자열과 함께 다음 불리언 힌트가 정의됩니다.

  • readOnlyHint: true인 경우 도구가 환경을 수정하지 않습니다. 기본값: false.
  • destructiveHint: true이면 도구가 파괴적인 작업을 수행할 수 있습니다. false이면 도구는 추가 작업만 수행할 수 있습니다. 기본값은 true입니다.
  • idempotentHint: true인 경우 동일한 인수로 도구를 반복적으로 호출해도 환경에 추가적인 영향을 미치지 않습니다. 기본값: false.
  • openWorldHint: true인 경우 도구는 외부 항목의 '오픈 월드'와 상호작용할 수 있습니다. false이면 도구는 내부 항목과만 상호작용할 수 있습니다. 예를 들어 웹 검색 도구는 오픈 월드이지만 메모리 도구는 오픈 월드가 아닙니다.

Destructive Hint: ❌ | Idempotent Hint: ❌ | Read Only Hint: ❌ | Open World Hint: ✅

승인 범위

다음 OAuth 범위 중 하나가 필요합니다.

  • https://www.googleapis.com/auth/chat.messages
  • https://www.googleapis.com/auth/chat.messages.create