Skip to main content
Glama
work-samirk

google-workspace-mcp-server

by work-samirk

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

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

Related MCP server: Google Docs + Gmail MCP Server

āš™ļø Prerequisites & Setup

1. Python Environment

Ensure Python 3.9+ is installed. Create and activate a virtual environment:

# 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.

  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:

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:

    {
      "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:

    {
      "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.

Related MCP Connectors

Related MCP Servers