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"
}
```
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues