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).
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues