Google MCP

Um servidor MCP all-in-one do Google Workspace

Documentação

Google MCP Server

Um servidor abrangente de Model Context Protocol (MCP) para integração com o Google, fornecendo acesso a Google Calendar, Docs, Sheets, Slides, Drive, Gmail, Contacts, YouTube, Tasks, Forms, Chat e Meet.

Recursos

Google Forms

  • Criar e gerenciar Google Forms
  • Adicionar perguntas (múltipla escolha, resposta curta, caixas de seleção, etc.)
  • Adicionar quebras de página, itens de texto, imagens e vídeos
  • Listar e recuperar respostas de formulários
  • Atualizar configurações do formulário (modo de quiz, etc.)

Google Chat

  • Listar, criar e gerenciar espaços do Chat
  • Enviar, atualizar e excluir mensagens
  • Adicionar e remover reações
  • Gerenciar membros do espaço
  • Suporte a tópicos para conversas

Google Meet

  • Criar espaços de reunião com controles de acesso
  • Agendar reuniões via integração com o Calendar
  • Criar reuniões instantâneas
  • Listar e acessar registros de conferências
  • Visualizar informações dos participantes
  • Acessar gravações e transcrições de reuniões

Google Calendar

  • Listar calendários e eventos
  • Criar, atualizar e excluir eventos
  • Adicionar eventos rapidamente usando linguagem natural
  • Obter eventos de hoje e eventos futuros
  • Verificar disponibilidade livre/ocupado

Google Gmail

  • Ler, pesquisar e listar e-mails
  • Enviar e-mails e responder a tópicos, com anexos de arquivos
  • Listar e baixar anexos de mensagens recebidas
  • Marcar como lido/não lido, mover mensagens para a lixeira
  • Listar rótulos e organizar e-mails

Google Contacts (API People)

  • Listar, pesquisar e gerenciar contatos
  • Criar, atualizar e excluir contatos
  • Listar grupos de contatos

Google Drive

  • Listar, pesquisar e navegar por arquivos e pastas
  • Enviar, baixar, copiar, mover e excluir arquivos, texto ou binário
  • Substituir o conteúdo de um arquivo existente
  • Exportar arquivos do Google Workspace para outros formatos (PDF, DOCX, CSV, ...)
  • Criar pastas
  • Renomear arquivos

Google Docs

  • Criar novos documentos com conteúdo inicial opcional
  • Ler o conteúdo do documento
  • Inserir e anexar texto
  • Localizar e substituir texto
  • Listar todos os documentos

Google Sheets

  • Criar planilhas com várias abas
  • Ler valores de intervalos
  • Atualizar e anexar valores
  • Limpar intervalos
  • Adicionar e excluir abas
  • Listar todas as planilhas

Google Slides

  • Criar e gerenciar apresentações
  • Adicionar, excluir e duplicar slides
  • Adicionar caixas de texto e imagens
  • Localizar e substituir texto
  • Listar todas as apresentações

Google YouTube

  • Pesquisar vídeos, canais e playlists
  • Obter detalhes de vídeos e canais
  • Visualizar e gerenciar playlists
  • Obter comentários de vídeos
  • Visualizar inscrições e vídeos curtidos
  • Avaliar vídeos

Google Tasks (Alternativa ao Keep)

  • Gerenciar listas de tarefas (semelhante às categorias do Keep)
  • Criar, atualizar, concluir e excluir tarefas
  • Tarefas suportam notas/descrições (semelhante às notas do Keep)
  • Ferramentas de "notas" convenientes que fornecem funcionalidade semelhante ao Keep

Observação: O Google Keep não possui uma API pública oficial. Este servidor usa a API Google Tasks como alternativa, que fornece capacidades semelhantes de anotações por meio de tarefas com descrições.

Instalação

# Clone the repository
cd google-mcp

# Install dependencies
pnpm install

# Build the project
pnpm build

Configuração do Google Cloud

Antes de usar este servidor, você precisa configurar as credenciais do Google Cloud:

1. Criar um Projeto no Google Cloud

  1. Acesse o Console do Google Cloud
  2. Crie um novo projeto ou selecione um existente
  3. Ative as seguintes APIs:
    • Google Calendar API
    • Google Docs API
    • Google Sheets API
    • Google Slides API
    • Google Drive API
    • Gmail API
    • People API (Contacts)
    • YouTube Data API v3
    • Google Tasks API
    • Google Forms API
    • Google Chat API
    • Google Meet REST API

2. Criar Credenciais OAuth 2.0

  1. Navegue até APIs & Services > Credentials
  2. Clique em Create Credentials > OAuth client ID
  3. Selecione Desktop app como o tipo de aplicativo
  4. Baixe o arquivo JSON

3. Colocar o Arquivo de Credenciais

Salve o arquivo JSON baixado como credentials.json no local apropriado para sua plataforma:

Linux:

~/.config/google-mcp/credentials.json

(ou $XDG_CONFIG_HOME/google-mcp/credentials.json se XDG_CONFIG_HOME estiver definido)

macOS:

~/Library/Application Support/google-mcp/credentials.json

Windows:

%APPDATA%\google-mcp\credentials.json

(geralmente C:\Users\<username>\AppData\Roaming\google-mcp\credentials.json)

O arquivo deve ter a seguinte aparência:

{
  "installed": {
    "client_id": "YOUR_CLIENT_ID.apps.googleusercontent.com",
    "project_id": "your-project-id",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_secret": "YOUR_CLIENT_SECRET",
    "redirect_uris": ["http://localhost:3000/oauth2callback"]
  }
}

Uso com Clientes MCP

O servidor é executado como um worker de pool de longa duração, não como um subprocesso stdio. Ele expõe o transporte atual Streamable HTTP em /mcp e mantém o transporte legado HTTP+SSE em /sse além de /messages para clientes mais antigos. Inicie o worker uma vez e, em seguida, aponte os clientes para /mcp.

Inicie o worker:

node /path/to/google-mcp/dist/index.js
# or from the project directory:
pnpm dev

Ele escuta em 127.0.0.1:3015 por padrão. Substitua com GOOGLE_MCP_HOST e GOOGLE_MCP_PORT (ou PORT).

Adicione à sua configuração de configurações MCP:

{
  "mcpServers": {
    "google": {
      "url": "http://127.0.0.1:3015/mcp"
    }
  }
}

Cada cliente que se conecta obtém sua própria sessão MCP enquanto compartilha uma sessão autenticada do Google, então você só completa o fluxo OAuth uma vez, não importa quantos clientes ou agentes se conectem. Clientes SSE legados podem continuar a usar http://127.0.0.1:3015/sse.

Autenticação

No primeiro uso, chame a ferramenta google_auth para iniciar a autenticação OAuth:

  1. O servidor fornecerá uma URL para autenticar
  2. Abra a URL em um navegador e faça login com sua conta do Google
  3. Conceda as permissões solicitadas
  4. A autenticação será concluída automaticamente

Os tokens são armazenados localmente e serão atualizados automaticamente:

  • Linux: ~/.local/share/google-mcp/tokens.json (ou $XDG_DATA_HOME/google-mcp/)
  • macOS: ~/Library/Application Support/google-mcp/tokens.json
  • Windows: %APPDATA%\google-mcp\tokens.json

Arquivos Locais

Ferramentas que leem um arquivo local (path) ou gravam um (savePath) resolvem cada caminho dentro de um único diretório sandbox, com padrão para ~/Downloads/google-mcp. Caminhos relativos são considerados a partir dessa raiz; caminhos absolutos devem estar dentro dela.

Isso é importante porque os argumentos vêm de um modelo que pode ter acabado de ler um e-mail hostil. Sem um limite, um "anexar ~/.ssh/id_rsa" injetado é uma primitiva de exfiltração e um savePath injetado de ~/.ssh/authorized_keys é execução de código. Dentro da sandbox, ambos são inertes.

export GOOGLE_MCP_FILE_ROOT="$HOME/Documents/mcp-files"

Independentemente da raiz, o servidor se recusa a tocar em diretórios de chaves e credenciais (.ssh, .aws, .gnupg, ...) ou arquivos que parecem segredos (*.pem, *.key, tokens.json, credentials.json, .env*), não segue symlinks para fora da raiz e nunca sobrescreve um arquivo existente.

Transferências inline são limitadas a 1 MB, pois caem no contexto do modelo; passe savePath para qualquer coisa maior, até 25 MB.

Ferramentas Disponíveis

Autenticação

FerramentaDescrição
google_authIniciar autenticação OAuth
google_auth_statusVerificar status da autenticação
google_auth_codeDefinir código de autenticação manualmente
google_logoutSair e limpar tokens

Google Calendar

FerramentaDescrição
calendar_listListar todos os calendários
calendar_getObter detalhes do calendário
calendar_list_eventsListar eventos do calendário
calendar_get_eventObter detalhes do evento
calendar_create_eventCriar novo evento
calendar_update_eventAtualizar evento existente
calendar_delete_eventExcluir um evento
calendar_quick_addAdicionar evento via linguagem natural
calendar_get_freebusyVerificar disponibilidade
calendar_todayObter eventos de hoje
calendar_upcomingObter eventos futuros

Google Gmail

FerramentaDescrição
gmail_get_profileObter informações do perfil do Gmail
gmail_list_labelsListar rótulos do Gmail
gmail_list_messagesListar e-mails
gmail_get_messageObter e-mail específico
gmail_sendEnviar um e-mail
gmail_replyResponder a um e-mail
gmail_get_attachmentBaixar um anexo de uma mensagem
gmail_trashMover para a lixeira
gmail_mark_readMarcar como lido
gmail_mark_unreadMarcar como não lido
gmail_searchPesquisar e-mails
gmail_get_unreadObter e-mails não lidos
gmail_get_threadObter tópico de e-mail

Google Contacts

FerramentaDescrição
contacts_listListar contatos
contacts_getObter detalhes do contato
contacts_searchPesquisar contatos
contacts_createCriar contato
contacts_deleteExcluir contato
contacts_list_groupsListar grupos de contatos

Google Drive

FerramentaDescrição
drive_list_filesListar arquivos com filtragem
drive_get_fileObter metadados do arquivo
drive_download_fileBaixar conteúdo do arquivo, texto ou binário
drive_upload_fileEnviar um novo arquivo
drive_update_fileSubstituir o conteúdo de um arquivo existente
drive_delete_fileExcluir um arquivo
drive_create_folderCriar uma nova pasta
drive_searchPesquisar arquivos por conteúdo
drive_move_fileMover arquivo para pasta
drive_copy_fileCopiar um arquivo
drive_rename_fileRenomear um arquivo

Google Docs

FerramentaDescrição
docs_createCriar um novo documento
docs_readLer o conteúdo do documento
docs_insert_textInserir texto em uma posição
docs_append_textAnexar texto ao final
docs_replace_textLocalizar e substituir texto
docs_listListar todos os documentos

Google Sheets

FerramentaDescrição
sheets_createCriar planilha
sheets_getObter informações da planilha
sheets_readLer valores de um intervalo
sheets_updateAtualizar valores em um intervalo
sheets_appendAnexar linhas
sheets_clearLimpar um intervalo
sheets_add_sheetAdicionar uma nova aba
sheets_delete_sheetExcluir uma aba
sheets_listListar todas as planilhas

Google Slides

FerramentaDescrição
slides_createCriar apresentação
slides_getObter apresentação
slides_listListar apresentações
slides_add_slideAdicionar um slide
slides_delete_slideExcluir um slide
slides_add_textAdicionar caixa de texto
slides_add_imageAdicionar imagem
slides_replace_textLocalizar/substituir texto
slides_duplicate_slideDuplicar slide

Google YouTube

FerramentaDescrição
youtube_searchPesquisar no YouTube
youtube_get_videoObter detalhes do vídeo
youtube_get_channelObter detalhes do canal
youtube_get_my_channelObter seu canal
youtube_list_playlistsListar suas playlists
youtube_get_playlist_itemsObter vídeos da playlist
youtube_get_video_commentsObter comentários do vídeo
youtube_list_subscriptionsListar inscrições
youtube_list_liked_videosListar vídeos curtidos
youtube_rate_videoCurtir/não curtir vídeo

Google Tasks

FerramentaDescrição
tasks_list_tasklistsListar listas de tarefas
tasks_create_tasklistCriar lista de tarefas
tasks_delete_tasklistExcluir lista de tarefas
tasks_list_tasksListar tarefas
tasks_create_taskCriar uma tarefa
tasks_update_taskAtualizar uma tarefa
tasks_delete_taskExcluir uma tarefa
tasks_complete_taskMarcar tarefa como concluída

Notas (semelhante ao Keep)

FerramentaDescrição
notes_createCriar uma nota rápida
notes_listListar todas as notas
notes_updateAtualizar uma nota
notes_deleteExcluir uma nota

Google Forms

FerramentaDescrição
forms_createCriar um novo formulário
forms_getObter detalhes do formulário
forms_update_infoAtualizar título/descrição
forms_add_questionAdicionar uma pergunta
forms_delete_itemExcluir item do formulário
forms_list_responsesListar respostas do formulário
forms_get_responseObter resposta específica
forms_add_page_breakAdicionar quebra de página
forms_add_textAdicionar item de texto
forms_add_imageAdicionar imagem
forms_add_videoAdicionar vídeo do YouTube

Google Chat

FerramentaDescrição
chat_list_spacesListar espaços do Chat
chat_get_spaceObter detalhes do espaço
chat_create_spaceCriar um espaço
chat_delete_spaceExcluir um espaço
chat_list_messagesListar mensagens
chat_get_messageObter detalhes da mensagem
chat_send_messageEnviar uma mensagem
chat_update_messageAtualizar uma mensagem
chat_delete_messageExcluir uma mensagem
chat_list_membersListar membros do espaço
chat_add_memberAdicionar um membro
chat_remove_memberRemover um membro
chat_add_reactionAdicionar reação com emoji

Google Meet

FerramentaDescrição
meet_create_spaceCriar espaço de reunião
meet_get_spaceObter detalhes do espaço
meet_end_conferenceEncerrar reunião ativa
meet_scheduleAgendar uma reunião
meet_create_instantCriar reunião instantânea
meet_get_by_eventObter reunião a partir do evento
meet_list_upcomingListar próximas reuniões
meet_list_conference_recordsListar reuniões passadas
meet_get_conference_recordObter gravação da reunião
meet_list_participantsListar participantes
meet_list_recordingsListar gravações
meet_get_recordingObter gravação
meet_list_transcriptsListar transcrições
meet_get_transcriptObter transcrição
meet_list_transcript_entriesObter texto da transcrição

Exemplos

Enviar um E-mail

Use gmail_send with to "recipient@example.com", subject "Hello", and body "This is a test email."

Criar um Evento no Calendário

Use calendar_create_event with summary "Team Meeting", startDateTime "2025-01-15T10:00:00-05:00", and endDateTime "2025-01-15T11:00:00-05:00"

Pesquisar no YouTube

Use youtube_search with query "MCP tutorial" and type "video"

Criar um Google Doc

Use docs_create with title "Meeting Notes" and content "# Weekly Meeting\n\nAttendees: ..."

Ler uma Planilha

Use sheets_read with spreadsheetId "abc123" and range "Sheet1!A1:D10"

Pesquisar no Drive

Use drive_search with query "quarterly report"

Criar uma Nota

Use notes_create with title "Shopping List" and content "- Milk\n- Eggs\n- Bread"

Criar um Google Formulário

Use forms_create with title "Customer Survey" and description "Help us improve our service"

Enviar uma Mensagem no Chat

Use chat_send_message with spaceName "spaces/AAAAA" and text "Hello team!"

Agendar um Google Meet

Use meet_schedule with summary "Team Standup", startTime "2025-01-15T09:00:00-05:00", and endTime "2025-01-15T09:30:00-05:00"

Desenvolvimento

# Run in development mode with hot reload
pnpm dev

# Build for production
pnpm build

# Run tests
pnpm test

Licença

Licença MIT - consulte LICENSE para detalhes.

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.