Skip to main content
Glama
duskydaydreamer

Google Workspace MCP Server

Google Workspace MCP Server

A Model Context Protocol (MCP) server that exposes standardized tools for AI agents to interact with Google Workspace (Gmail and Google Docs).

This server is designed to run in a cloud environment (like Render) using HTTP and Server-Sent Events (SSE) for client-server communication.

Features

  • Gmail: Draft and send emails securely.

  • Google Docs: Append structured content to documents.

  • Generic & Extensible: Exposes strongly-typed tools via the MCP protocol.

  • Cloud-Ready: SSE transport allows remote AI agents to connect seamlessly.

Setup

  1. Google Cloud Configuration:

    • Create a project in Google Cloud Console.

    • Enable the Gmail API and Google Docs API.

    • Create an OAuth 2.0 Client ID for a Web Application or Desktop App.

    • Note the Client ID and Client Secret.

  2. Environment Variables: In your Render Dashboard (or local .env file), configure the following:

    GOOGLE_CLIENT_ID=your-client-id
    GOOGLE_CLIENT_SECRET=your-client-secret
    GOOGLE_REDIRECT_URI=http://localhost:3000/oauth2callback
    TOKEN_STORAGE_PATH=.tokens.json
    LOG_LEVEL=info
    GOOGLE_OAUTH_TOKENS={"access_token":"...","refresh_token":"..."} # Provide this in production
  3. Install Dependencies:

    npm install
  4. Authentication: Before deploying to production, generate the initial OAuth tokens locally. You can then stringify the .tokens.json file content and set it as the GOOGLE_OAUTH_TOKENS environment variable in Render.

  5. Deploy to Render:

    • Connect your GitHub repository to Render as a Web Service.

    • Render will automatically use the render.yaml blueprint to run npm run build and npm start.

    • Ensure the GOOGLE_OAUTH_TOKENS and Google API credentials are set in the Render Environment Variables tab.

  6. Connecting to the Server: Once deployed, connect your MCP Client (like an AI agent) to the SSE endpoint: https://<your-render-app-url>/sse

Development

Run locally using:

npm run dev

Run tests with npm run test (using Vitest).