π Google Docs + Gmail MCP Server
A lightweight MCP-style server that integrates with Google Docs and Gmail.
This project demonstrates how to build structured AI tool interfaces with approval gating, inspired by the Model Context Protocol (MCP).
β¨ Features
- π Append structured content to Google Docs
- π§ Create Gmail drafts
- π OAuth-based Google authentication
- π§ MCP-style tool interface
- β Human-in-the-loop approval before execution
- π§© Modular and extensible design
How to Use in Your Project
Run the MCP server:uvicorn server:app --reload
Call tools via API:POST /append_to_docPOST /create_email_draft
Integrate with your AI workflow:
- Generate content using LLM
- Send output to these endpoints
π Project Structure
google-mcp-server/
βββ server.py
βββ auth.py
βββ docs_tool.py
βββ gmail_tool.py
βββ requirements.txt
βββ credentials.json (not committed)
βββ token.json (not committed)
βββ README.md
βοΈ Setup
1. Clone the repository
git clone <your-repo-url>
cd google-mcp-server
2. Create virtual environment
python3 -m venv venv
source venv/bin/activate
3. Install dependencies
pip install -r requirements.txt
4. π Google API Setup
Go to Google Cloud Console
Create a new project
Enable:
- Google Docs API
- Gmail API
Configure OAuth Consent Screen
Create OAuth Credentials (Desktop App)
Download
credentials.jsonPlace it in project root
5. π Run OAuth
python3 auth.py
- Opens browser for login
- Generates token.json
6. βΆοΈ Run Server
uvicorn server:app --reload
Open:
http://127.0.0.1:8000/docs
π§ͺ How to Test
Append to Google Doc
Endpoint: POST /append_to_doc
Example:
{
"doc_id": "YOUR_DOC_ID",
"content": "Hello from MCP π"
}
Create Email Draft
Endpoint: POST /create_email_draft
Example:
{
"to": "[email protected]",
"subject": "Test Draft",
"body": "This is a test email"
}
π Workflow
Request β Approval β Tool Execution β Response
- Every action requires manual approval
- Ensures safe and controlled execution
β οΈ Important Notes
Do NOT commit:
- credentials.json
- token.json
Approval is CLI-based (terminal input)Designed for local development
β οΈ Approval Flow
Every action requires manual approval in terminal:
ACTION: append_to_doc
PAYLOAD: {...}
Approve? (y/n):
Type:
y
π§ MCP Design
This project demonstrates:
- Structured tool calls
- Separation of generation and execution
- Human approval before tool execution
β Notes
- No emails are sent automatically (draft only)
- Google Doc must have edit access
- Token is stored locally
π License
Apache License