Skip to main content
Glama
duskydaydreamer

Google Workspace MCP Server

README.md
# 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](https://console.cloud.google.com/).
   - 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:
   ```env
   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**:
   ```bash
   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:
```bash
npm run dev
```

Run tests with `npm run test` (using Vitest).