Skip to main content
Glama
tambeaditya101

Google Workspace MCP Server

README.md
# Google Workspace MCP Server

A lightweight Model Context Protocol style REST server written in Python using FastAPI.
Integrates with Google Docs and Google Gmail to allow agents to append content to documents and create draft emails.

---

## Directory Structure

```
google-mcp-server/
├── server.py        # FastAPI server endpoints
├── auth.py          # Google OAuth workflow manager
├── docs_tool.py     # Doc append tool
├── gmail_tool.py    # Gmail draft creator
├── requirements.txt # Python dependencies
├── README.md        # This file
├── credentials.json # (Ignored) downloaded from Google Cloud
└── token.json       # (Ignored) generated after first user login
```

---

## Prerequisites & Google Cloud Setup

1. Create a project in [Google Cloud Console](https://console.cloud.google.com).
2. Enable the **Google Docs API** and the **Gmail API** for your project.
3. Set up the OAuth consent screen (choose **External** user type and add your email as a test user).
4. Go to **Credentials**, click **Create Credentials**, select **OAuth Client ID** (Desktop Application type).
5. Download the client secret JSON file, rename it to `credentials.json`, and place it in the `google-mcp-server/` directory.

---

## Installation & Running

1. Navigate to the server folder:
   ```bash
   cd google-mcp-server
   ```

2. Create a virtual environment and install dependencies:
   ```bash
   python3 -m venv .venv
   source .venv/bin/activate
   pip install -r requirements.txt
   ```

3. Start the server:
   ```bash
   python server.py
   ```

On the first start, the server will trigger a local browser authentication window. Grant permission to access Google Docs and Gmail, and it will save `token.json` so you do not need to re-login.

---

## Endpoint API Reference

All requests must require standard terminal input confirmation by the server operator (`Approve? (y/n)`).

### 1. Append to Google Doc
* **URL:** `POST /append_to_doc`
* **Content-Type:** `application/json`
* **Request Payload:**
  ```json
  {
    "doc_id": "YOUR_GOOGLE_DOC_ID",
    "content": "Text to append to the document\n"
  }
  ```

### 2. Create Gmail Draft
* **URL:** `POST /create_email_draft`
* **Content-Type:** `application/json`
* **Request Payload:**
  ```json
  {
    "to": "stakeholder1@example.com, stakeholder2@example.com",
    "subject": "Weekly review pulse report",
    "body": "HTML string containing summary and details"
  }
  ```