google-workspace-mcp-server
by work-samirk
README.md
# Google Workspace MCP-Style Server (Python)
This project provides an HTTP-based Model Context Protocol (MCP) style server built in Python using FastAPI. It exposes tools to safely append reports to Google Docs and create drafts in Gmail, requiring interactive human-in-the-loop terminal confirmation before any modifications are executed.
---
## š ļø Project Structure
```text
google-mcp-server/
āāā server.py ā FastAPI app exposing endpoints with approval prompts
āāā auth.py ā Google API OAuth2 login & client token manager
āāā docs_tool.py ā Google Docs append operation logic
āāā gmail_tool.py ā Gmail draft creation logic
āāā requirements.txt ā Python package dependencies
āāā README.md ā Setup and execution instructions
āāā credentials.json ā (Not Committed) Downloaded OAuth credentials
āāā token.json ā (Not Committed) Authorized credentials token
```
---
## āļø Prerequisites & Setup
### 1. Python Environment
Ensure Python 3.9+ is installed. Create and activate a virtual environment:
```bash
# Create venv
python3 -m venv venv
# Activate venv (macOS/Linux)
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
```
### 2. Configure Google Cloud Credentials
To authorize access to Google Docs and Gmail APIs:
1. Go to the [Google Cloud Console](https://console.cloud.google.com/).
2. Create a project (or select an existing one).
3. Enable the **Google Docs API** and **Gmail API** under APIs & Services.
4. Go to **APIs & Services > Credentials**.
5. Click **Create Credentials > OAuth client ID**.
6. Set the Application Type to **Desktop app**.
7. Download the credentials JSON, rename it to `credentials.json`, and place it in the root of the `google-mcp-server` directory.
---
## š Running the Server
Start the FastAPI server:
```bash
python server.py
```
* **First Run**: A web page will automatically open in your browser prompting you to log into your Google Account and authorize access for Google Docs (modify) and Gmail (compose drafts) scopes. Once authenticated, a `token.json` file is written, and future runs execute silently.
The server runs locally at: `http://localhost:8000`
---
## š API Endpoints (Tools)
### 1. Append to Google Doc
Appends a formatted text block to the end of a Doc.
* **Endpoint**: `POST /append_to_doc`
* **Content-Type**: `application/json`
* **Request Body**:
```json
{
"doc_id": "your_google_doc_id_here",
"content": "Verbatim text to append to the document body."
}
```
### 2. Create Gmail Draft
Prepares a draft email in your mailbox.
* **Endpoint**: `POST /create_email_draft`
* **Content-Type**: `application/json`
* **Request Body**:
```json
{
"to": "stakeholders@example.com",
"subject": "Weekly review pulse teaser",
"body": " Teaser summary and deep link to the Google Doc."
}
```
---
## š Security & Interactive Approvals
For safety, the server implements an **interactive human-in-the-loop gatekeeper**.
When a POST request is sent to `/append_to_doc` or `/create_email_draft`, the FastAPI server will:
1. Print the pending action name and full payload details to the terminal console.
2. Wait/block for keyboard confirmation: `Approve action? (y/n): `
3. **If `y`**: Executes the Google Workspace operation and returns a `200 OK` JSON response.
4. **If `n` or invalid**: Aborts the operation and returns a `403 Forbidden` error response.
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessSyncing