Google MCP Server
Allows creating email drafts in Gmail via the MCP server.
Allows appending text to Google Docs documents via the MCP server.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google MCP ServerAppend 'Meeting summary' to my Google Doc"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google MCP Server
A Python FastAPI server that integrates with Google Docs and Gmail. Each action is printed to the terminal and requires explicit approval before it runs.
Features
Endpoint | Description |
| Append text to a Google Doc |
| Create a Gmail draft |
| Health check |
Local dev: each action is logged and prompts Approve? (y/n) in the terminal.
Production (Railway): actions are logged only; requests require the X-API-Key header matching the API_KEY secret.
Related MCP server: Google MCP Server
Project structure
google-mcp-server/
├── server.py # FastAPI app with tool endpoints
├── auth.py # Google OAuth authentication
├── docs_tool.py # Google Docs tool (append content)
├── gmail_tool.py # Gmail tool (create draft)
├── requirements.txt # Dependencies
├── README.md # This file
├── deployment-plan.md # Railway deployment guide
├── railway.toml # Railway deploy config
├── Procfile # Process start command
├── credentials.json # (NOT committed — from Google Cloud)
└── token.json # (NOT committed — auto-generated after OAuth)Prerequisites
Python 3.10+
A Google Cloud project with these APIs enabled:
Google Docs API
Gmail API
OAuth 2.0 Desktop client credentials downloaded as
credentials.json
Google Cloud setup
Go to Google Cloud Console.
Create or select a project.
Enable Google Docs API and Gmail API under APIs & Services → Library.
Go to APIs & Services → Credentials.
Create OAuth client ID → Application type: Desktop app.
Download the JSON file and save it as
credentials.jsonin this folder.Configure the OAuth consent screen (External or Internal) and add your Google account as a test user if the app is in testing mode.
OAuth scopes
https://www.googleapis.com/auth/documentshttps://www.googleapis.com/auth/gmail.compose
Installation
cd google-mcp-server
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate
pip install -r requirements.txtPlace credentials.json in the google-mcp-server/ directory.
First-time authentication
On the first API call (or when token.json is missing), a browser window opens for Google sign-in. After you approve, token.json is saved automatically. Later runs reuse that token and refresh it when needed.
Run the server
python server.pyOr:
uvicorn server:app --host 127.0.0.1 --port 8000Interactive docs: http://127.0.0.1:8000/docs
Usage examples
Append to a Google Doc
Find the document ID in the URL:
https://docs.google.com/document/d/DOCUMENT_ID/editcurl -X POST http://127.0.0.1:8000/append_to_doc \
-H "Content-Type: application/json" \
-d "{\"doc_id\": \"YOUR_DOC_ID\", \"content\": \"\\nHello from MCP server!\"}"Watch the server terminal for the approval prompt and type y.
Create a Gmail draft
curl -X POST http://127.0.0.1:8000/create_email_draft \
-H "Content-Type: application/json" \
-d "{\"to\": \"recipient@example.com\", \"subject\": \"Test draft\", \"body\": \"Hello from the MCP server.\"}"Approve in the terminal with y. The draft appears in Gmail under Drafts.
Railway deployment
See deployment-plan.md for the full guide. Summary:
Push this folder to GitHub and connect it in Railway (set Root Directory to
google-mcp-serverif needed).Set these secrets in Railway:
Variable | Value |
| Full contents of |
| Full contents of |
| Random secret for |
|
|
Optional: mount a Volume at
/dataand setGOOGLE_TOKEN_PATH=/data/token.jsonso refreshed tokens persist across redeploys.Generate a public domain and call endpoints with:
curl -X POST https://YOUR-RAILWAY-URL/append_to_doc \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{"doc_id": "YOUR_DOC_ID", "content": "\nHello from Railway!"}'Base64 variants GOOGLE_CREDENTIALS_JSON_B64 and GOOGLE_TOKEN_JSON_B64 are also supported if JSON escaping is awkward.
Security notes
Never commit
credentials.jsonortoken.json(they are listed in.gitignore).In production, all mutating endpoints require a valid
X-API-Keyheader.Revoke access anytime at Google Account permissions.
Troubleshooting
Issue | Fix |
| Download OAuth desktop credentials from Google Cloud Console |
| Add your account as a test user on the OAuth consent screen |
| You typed something other than |
Doc append fails | Confirm the Doc ID and that the signed-in account can edit the document |
Gmail draft fails | Confirm Gmail API is enabled and the account has Gmail access |
This server cannot be deployed
Maintenance
Related MCP Connectors
Permissioned access to Gmail, Drive and Calendar via the user's own Google account
Multiple Gmail accounts, editable Google Sheets & Docs for AI agents. Deny-by-default access rules.
Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflow…
Create and manage documents, spreadsheets, and presentations from your AI assistant.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceIntegrates with Google Docs and Gmail to append text to documents and create email drafts, with a terminal approval step before any action executes.-
- FlicenseNot gradedqualityDmaintenanceIntegrates with Google Docs and Gmail to enable document editing and email drafting, with approval prompts for each action.-
- FlicenseNot gradedqualityCmaintenanceEnables appending content to Google Docs and creating Gmail drafts with interactive human-in-the-loop approval for safety.-
- FlicenseNot gradedqualityDmaintenanceIntegrates with Google Docs and Gmail to append content to documents and create email drafts, featuring a manual approval system.-