Google Calendar MCP Server

Google Calendar MCP Server

ymello

云存储
访问服务器

README

Google Calendar MCP Server

Uma implementação do Model Context Protocol (MCP) para o Google Calendar que permite a interação com eventos do calendário através de CLI ou Server-Sent Events (SSE).

Funcionalidades

  • Listar eventos do calendário
  • Criar novos eventos
  • Atualizar eventos existentes
  • Excluir eventos
  • Encontrar horários disponíveis

Pré-requisitos

  • Node.js 18 ou superior
  • Conta Google com acesso à API do Google Calendar
  • Credenciais OAuth 2.0 do Google Cloud Console

Configuração

  1. Copie o arquivo .env.example para .env:

    cp .env.example .env
    
  2. Configure suas credenciais OAuth 2.0 do Google no arquivo .env:

    GOOGLE_CLIENT_ID=seu-client-id
    GOOGLE_CLIENT_SECRET=seu-client-secret
    GOOGLE_REDIRECT_URI=http://localhost:3000/oauth2callback
    GOOGLE_REFRESH_TOKEN=seu-refresh-token
    PORT=3334
    
  3. Instale as dependências:

    npm install
    
  4. Compile o código:

    npm run build
    

Uso

Execução como servidor HTTP/SSE

Inicie o servidor HTTP/SSE:

npm run start:http

Isso iniciará o servidor na porta especificada (padrão: 3334).

Endpoints disponíveis:

  • GET /sse - Conectar ao stream SSE
  • POST /messages - Enviar mensagens para o servidor

Execução como CLI (stdio)

Execute o servidor em modo stdio para uso como ferramenta CLI:

npm run start:stdio

Integração com MCP Clients

Claude Desktop

Para usar este servidor com o Claude Desktop, adicione a seguinte configuração ao arquivo de configuração do Claude:

No MacOS:

code ~/Library/Application\ Support/Claude/claude_desktop_config.json

No Windows:

code %AppData%\Claude\claude_desktop_config.json

Adicione a configuração:

{
  "mcpServers": {
    "google-calendar": {
      "command": "node",
      "args": [
        "/caminho/absoluto/para/o/build/index.js"
      ],
      "env": {
        "GOOGLE_CLIENT_ID": "seu-client-id",
        "GOOGLE_CLIENT_SECRET": "seu-client-secret",
        "GOOGLE_REDIRECT_URI": "seu-redirect-uri",
        "GOOGLE_REFRESH_TOKEN": "seu-refresh-token"
      }
    }
  }
}

Integração com outros Clientes MCP

Para outros clientes MCP que suportam comunicação via SSE, aponte-os para os endpoints:

  • SSE Endpoint: http://localhost:3334/sse
  • Message Endpoint: http://localhost:3334/messages

Ferramentas disponíveis

O servidor Google Calendar MCP fornece as seguintes ferramentas:

list_events

Lista eventos em um intervalo de tempo especificado.

{
  "timeMin": "2023-09-01T00:00:00Z",
  "timeMax": "2023-09-30T23:59:59Z",
  "maxResults": 10
}

create_event

Cria um novo evento no calendário.

{
  "summary": "Reunião importante",
  "description": "Discussão sobre o projeto XYZ",
  "startTime": "2023-09-15T14:00:00Z",
  "endTime": "2023-09-15T15:00:00Z",
  "attendees": ["pessoa1@exemplo.com", "pessoa2@exemplo.com"]
}

update_event

Atualiza um evento existente.

{
  "eventId": "abc123xyz",
  "summary": "Reunião atualizada",
  "startTime": "2023-09-15T14:30:00Z",
  "endTime": "2023-09-15T15:30:00Z"
}

delete_event

Exclui um evento do calendário.

{
  "eventId": "abc123xyz"
}

find_free_time

Encontra horários disponíveis em um intervalo de tempo.

{
  "timeMin": "2023-09-01T00:00:00Z",
  "timeMax": "2023-09-30T23:59:59Z",
  "duration": 60
}

Obtendo um Refresh Token

Para obter um refresh token do Google, você pode usar o seguinte script:

const { google } = require('googleapis');
const http = require('http');
const url = require('url');

// Substituir com suas credenciais
const CLIENT_ID = 'seu-client-id';
const CLIENT_SECRET = 'seu-client-secret';
const REDIRECT_URI = 'http://localhost:3000/oauth2callback';

const oauth2Client = new google.auth.OAuth2(
  CLIENT_ID,
  CLIENT_SECRET,
  REDIRECT_URI
);

const scopes = [
  'https://www.googleapis.com/auth/calendar',
  'https://www.googleapis.com/auth/calendar.events'
];

function getRefreshToken() {
  const server = http.createServer(async (req, res) => {
    const queryParams = url.parse(req.url, true).query;
    
    if (queryParams.code) {
      try {
        const { tokens } = await oauth2Client.getToken(queryParams.code);
        console.log('Refresh Token:', tokens.refresh_token);
        res.end('Autenticação bem-sucedida! Você pode fechar esta janela.');
        server.close();
      } catch (error) {
        console.error('Erro ao obter tokens:', error);
        res.end('Falha na autenticação!');
      }
    }
  }).listen(3000, () => {
    const authUrl = oauth2Client.generateAuthUrl({
      access_type: 'offline',
      scope: scopes,
      prompt: 'consent'
    });

    console.log('Acesse esta URL no navegador:');
    console.log(authUrl);
  });
}

getRefreshToken();

Salve este script como getToken.js, execute-o com node getToken.js, e siga as instruções para obter seu refresh token.

Desenvolvimento

Para desenvolvimento, você pode executar:

npm run dev

Isso compilará o TypeScript em modo de observação, permitindo que você faça alterações e veja os resultados em tempo real.

Solução de Problemas

Problemas Comuns

  1. Erro de autenticação no Google

    • Verifique se suas credenciais estão corretas
    • Confirme se o refresh token é válido
    • Certifique-se de que os escopos necessários estão ativados
  2. Servidor não inicia

    • Verifique se todas as variáveis de ambiente estão definidas
    • Confirme se o processo de build foi bem-sucedido
    • Verifique as permissões do arquivo build/index.js
  3. Conexão SSE falha

    • Confirme se a porta (3334 por padrão) está disponível
    • Verifique logs para erros específicos
    • Certifique-se de que os endpoints estão corretamente configurados

Licença

ISC

推荐服务器

Google Drive MCP Server

Google Drive MCP Server

启用与 Google Drive 的集成,用于列出、读取和搜索文件,支持各种文件类型,并为 Google Workspace 文件提供自动导出功能。

本地
JavaScript
AWS MCP Server

AWS MCP Server

一个模型上下文协议服务器实现,使 Claude 能够通过自然语言命令在 S3 和 DynamoDB 服务上执行 AWS 操作。

本地
Python
Google Drive MCP Server

Google Drive MCP Server

与 Google Drive 集成,以实现文件列表、搜索和读取,以及 Google 表格的读取和写入。

本地
TypeScript
Azure MCP Server

Azure MCP Server

这个服务器实现了模型上下文协议,可以与 Azure Blob 存储和 Cosmos DB 无缝交互,从而实现操作的自动日志记录和审计跟踪。

Python
Box MCP Server

Box MCP Server

Box MCP 服务器方便使用开发者令牌认证在 Box 中搜索和读取 PDF 和 Word 文件。

JavaScript
MCP JSON Document Collection Server

MCP JSON Document Collection Server

一个模型上下文协议服务器,允许创建和管理多个 Fireproof JSON 数据库,具备 CRUD 操作、查询功能以及云同步能力,以便与他人共享数据库。 (Breakdown of the translation:) * **一个模型上下文协议服务器 (Yī gè móxíng shàngxiàwén xiéyì fúwùqì):** A Model Context Protocol server * **允许 (yǔnxǔ):** allows * **创建和管理 (chuàngjiàn hé guǎnlǐ):** creation and management * **多个 (duō gè):** multiple * **Fireproof JSON 数据库 (Fireproof JSON shùjùkù):** Fireproof JSON databases * **具备 (jùbèi):** with, possesses * **CRUD 操作 (CRUD cāozuò):** CRUD operations (Create, Read, Update, Delete) * **查询功能 (cháxún gōngnéng):** querying capabilities * **以及 (yǐjí):** and * **云同步能力 (yún tóngbù nénglì):** cloud synchronization capability * **以便 (yǐbiàn):** in order to * **与他人共享 (yǔ tārén gòngxiǎng):** sharing with others * **数据库 (shùjùkù):** databases

JavaScript
Unstructured Document Processor MCP

Unstructured Document Processor MCP

一个模型上下文协议服务器,它使大型语言模型能够从各种文件格式的非结构化文档中提取和使用内容。

Python
Firebase MCP Server

Firebase MCP Server

一个提供统一接口以与 Firebase 服务(包括身份验证、Firestore 和存储)交互的服务器。

TypeScript
MCP Server for Apache OpenDAL™

MCP Server for Apache OpenDAL™

一个模型上下文协议服务器,通过 Apache OpenDAL™ 提供对包括 S3、Azure Blob 存储和 Google Cloud Storage 在内的多个存储服务的无缝访问。

Python
Cloudinary MCP Server

Cloudinary MCP Server

这个服务器提供了一些工具,可以使用 Claude/Cline 直接将图片和视频上传到 Cloudinary,从而方便资源管理,并提供可定制的选项,例如资源类型和公共 ID。

JavaScript