Google Calendar MCP 服务器

by v-3

此 MCP 服务器允许 Claude 与您的 Google 日历交互,实现列出事件、创建会议和查找空闲时间段等功能。需要通过环境变量(GOOGLE_CLIENT_ID、GOOGLE_CLIENT_SECRET、GOOGLE_REDIRECT_URI、GOOGLE_REFRESH_TOKEN)配置 OAuth 2.0 凭据。

ProductivitystdioCommunity

Repository-wide counts · Cached 2026-03-07

Overview

The Google Calendar MCP 服务器 MCP server is a publicly available project. Review the upstream repository for installation instructions, supported tools, compatibility, permissions, and current maintenance status.

Configuration

Configuration, transport, authentication, and runtime requirements vary by project. Open the repository before connecting and use the smallest set of credentials and permissions required.

Open the Google Calendar MCP 服务器 repository to read the latest documentation.

KEEP EXPLORING

Compare source, connection, and authentication details before choosing an implementation.

View the complete category

AIHawk

feder-cr

Community

AIHawk is an LLM-based tool that writes application documents and drives a browser AI client. Requires Python 3.12 and Chrome. It uses local YAML config files in data_folder/ (created from data_folder_example/) for user resume, work preferences, and OpenAI API key.

Obsidian 的 MCP 服务器

MarkusPfundstein

Community

用于与 Obsidian 通过本地 REST API 社区插件交互的 MCP 服务器。需要预先安装并运行 Obsidian REST API 社区插件。通过环境变量或服务器配置,使用 Obsidian API 密钥、主机和端口来配置服务器。

Office-Word-MCP-Server

GongRzhe

Community

用于创建、读取和操作 Microsoft Word 文档的 MCP 服务器。该服务器通过标准化接口支持 AI 助手与 Word 文档进行交互,提供丰富的文档编辑功能。

Office-PowerPoint-MCP-Server

GongRzhe

Community

用于 PowerPoint 操作的 MCP 服务器,基于 python-pptx。提供通过 MCP 协议创建、编辑和操作 PowerPoint 演示文稿的工具。

FROM THE SOURCE

Repository README

Build-time snapshot · Retrieved 2026-10-05

View original

Google Calendar MCP Server

This MCP server allows Claude to interact with your Google Calendar, enabling capabilities like listing events, creating meetings, and finding free time slots.

Prerequisites

  • Node.js (v16 or higher)
  • Claude Desktop App
  • A Google Cloud Project
  • Google Calendar API enabled
  • OAuth 2.0 credentials

Setup Instructions

1. Create a Google Cloud Project

  1. Go to the Google Cloud Console
  2. Create a new project or select an existing one
  3. Enable the Google Calendar API:
    • Go to "APIs & Services" > "Library"
    • Search for "Google Calendar API"
    • Click "Enable"
  1. Go to "APIs & Services" > "OAuth consent screen"
  2. Select "External" user type (unless you have a Google Workspace organization)
  3. Fill in the required information:
    • App name
    • User support email
    • Developer contact information
  4. Add the following scopes:
    • https://www.googleapis.com/auth/calendar
    • https://www.googleapis.com/auth/calendar.events
  5. Add your email address as a test user

3. Create OAuth 2.0 Credentials

  1. Go to "APIs & Services" > "Credentials"
  2. Click "Create Credentials" > "OAuth client ID"
  3. Select "Desktop app" as the application type
  4. Name your client (e.g., "MCP Calendar Client")
  5. Click "Create"
  6. Download the client configuration file (you'll need the client ID and client secret)

4. Get Refresh Token

  1. Create a new file named getToken.js:
const { google } = require('googleapis');
const http = require('http');
const url = require('url');

// Replace these with your OAuth 2.0 credentials
const CLIENT_ID = 'your-client-id';
const CLIENT_SECRET = 'your-client-secret';
const REDIRECT_URI = 'http://localhost:3000/oauth2callback';

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

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

async function getRefreshToken() {
  return new Promise((resolve, reject) => {
    try {
      // Create server to handle OAuth callback
      const server = http.createServer(async (req, res) => {
        try {
          const queryParams = url.parse(req.url, true).query;
          
          if (queryParams.code) {
            // Get tokens from code
            const { tokens } = await oauth2Client.getToken(queryParams.code);
            console.log('\n=================');
            console.log('Refresh Token:', tokens.refresh_token);
            console.log('=================\n');
            console.log('Save this refresh token in your configuration!');
            
            // Send success response
            res.end('Authentication successful! You can close this window.');
            
            // Close server
            server.close();
            resolve(tokens);
          }
        } catch (error) {
          console.error('Error getting tokens:', error);
          res.end('Authentication failed! Please check console for errors.');
          reject(error);
        }
      }).listen(3000, () => {
        // Generate auth url
        const authUrl = oauth2Client.generateAuthUrl({
          access_type: 'offline',
          scope: scopes,
          prompt: 'consent'  // Force consent screen to ensure refresh token
        });

        console.log('1. Copy this URL and paste it in your browser:');
        console.log('\n', authUrl, '\n');
        console.log('2. Follow the Google authentication process');
        console.log('3. Wait for the refresh token to appear here');
      });

    } catch (error) {
      console.error('Server creation error:', error);
      reject(error);
    }
  });
}

// Run the token retrieval
getRefreshToken().catch(console.error);
  1. Install required dependency:
npm install googleapis
  1. Update the script with your OAuth credentials:

    • Replace your-client-id with your actual client ID
    • Replace your-client-secret with your actual client secret
  2. Run the script:

node getToken.js
  1. Follow the instructions in the console:
    • Copy the provided URL
    • Paste it into your browser
    • Complete the Google authentication process
    • Copy the refresh token that appears in the console

5. Configure Claude Desktop

  1. Open your Claude Desktop configuration file:

For MacOS:

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

For Windows:

code %AppData%\Claude\claude_desktop_config.json
  1. Add or update the configuration:
{
    "mcpServers": {
        "google-calendar": {
            "command": "node",
            "args": [
                "/ABSOLUTE/PATH/TO/YOUR/build/index.js"
            ],
            "env": {
                "GOOGLE_CLIENT_ID": "your_client_id_here",
                "GOOGLE_CLIENT_SECRET": "your_client_secret_here",
                "GOOGLE_REDIRECT_URI": "http://localhost",
                "GOOGLE_REFRESH_TOKEN": "your_refresh_token_here"
            }
        }
    }
}
  1. Save the file and restart Claude Desktop

Initial Project Setup

  1. Create a new directory for your project:
mkdir google-calendar-mcp
cd google-calendar-mcp
  1. Initialize a new npm project:
npm init -y
  1. Install dependencies:
npm install @modelcontextprotocol/sdk googleapis google-auth-library zod
npm install -D @types/node typescript
  1. Create a tsconfig.json file:
{
  "compilerOptions": {
    "target": "ES2022",
    "module": "Node16",
    "moduleResolution": "Node16",
    "outDir": "./build",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}
  1. Update package.json:
{
  "type": "module",
  "scripts": {
    "build": "tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\""
  }
}
  1. Create your source directory:
mkdir src
  1. Create a .env file for local development (don't commit this file):
GOOGLE_CLIENT_ID=your_client_id_here
GOOGLE_CLIENT_SECRET=your_client_secret_here
GOOGLE_REDIRECT_URI=http://localhost
GOOGLE_REFRESH_TOKEN=your_refresh_token_here

Building and Running

  1. Build the server:
npm run build
  1. The server will automatically start when you open Claude Desktop

Available Tools

The server provides the following tools:

  1. list_events: List calendar events within a specified time range
  2. create_event: Create a new calendar event
  3. update_event: Update an existing calendar event
  4. delete_event: Delete a calendar event
  5. find_free_time: Find available time slots in the calendar

Example Usage in Claude

After setup, you can use commands like:

  • "Show me my calendar events for next week"
  • "Schedule a meeting with [email_id] tomorrow at 2 PM for 1 hour"
  • "Find a free 30-minute slot this afternoon"
  • "Update my 3 PM meeting to 4 PM"
  • "Cancel my meeting with ID [event_id]"

Troubleshooting

Common Issues

  1. Tools not appearing in Claude:

    • Check Claude Desktop logs: tail -f ~/Library/Logs/Claude/mcp*.log
    • Verify all environment variables are set correctly
    • Ensure the path to index.js is absolute and correct
  2. Authentication Errors:

    • Verify your OAuth credentials are correct
    • Check if refresh token is valid
    • Ensure required scopes are enabled
  3. Server Connection Issues:

    • Check if the server built successfully
    • Verify file permissions on build/index.js (should be 755)
    • Try running the server directly: node /path/to/build/index.js

Viewing Logs

To view server logs:

# For MacOS/Linux:
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

# For Windows:
Get-Content -Path "$env:AppData\Claude\Logs\mcp*.log" -Wait -Tail 20

Environment Variables

If you're getting environment variable errors, verify each one:

  1. GOOGLE_CLIENT_ID: Should start with something like "123456789-..."
  2. GOOGLE_CLIENT_SECRET: Usually ends in ".apps.googleusercontent.com"
  3. GOOGLE_REDIRECT_URI: Should be "http://localhost"
  4. GOOGLE_REFRESH_TOKEN: A long string that doesn't expire

Security Considerations

  • Keep your OAuth credentials secure
  • Don't commit credentials to version control
  • Use environment variables for sensitive data
  • Regularly rotate refresh tokens
  • Monitor API usage in Google Cloud Console

License

MIT License - See LICENSE file for details.

Support

If you encounter any issues:

  1. Check the troubleshooting section above
  2. Review Claude Desktop logs
  3. Open an issue on GitHub
  4. Contact the maintainer