Google MCP Server
by yv12
README.md
# Google MCP Server
A Python-based FastAPI server that provides tools for appending text to Google Docs and creating Gmail drafts. It uses Google OAuth 2.0 for authentication and includes a manual approval step in the terminal before performing actions.
## Prerequisites
1. Python 3.8+
2. A Google Cloud Platform (GCP) project.
## Setup Instructions
### 1. Configure Google Cloud
1. Go to the [Google Cloud Console](https://console.cloud.google.com/).
2. Create a new project (or select an existing one).
3. Navigate to **APIs & Services > Library**.
4. Search for and enable the **Google Docs API**.
5. Search for and enable the **Gmail API**.
6. Navigate to **APIs & Services > OAuth consent screen**.
- Choose "External" (or "Internal" if you have a Google Workspace).
- Fill out the required App information.
- Add the following scopes:
- `https://www.googleapis.com/auth/documents`
- `https://www.googleapis.com/auth/gmail.compose`
- Add yourself as a Test User.
7. Navigate to **APIs & Services > Credentials**.
8. Click **Create Credentials > OAuth client ID**.
- Application type: **Desktop app**.
- Name: Google MCP Server (or whatever you prefer).
9. Click **Create**, then click **Download JSON**.
10. Rename the downloaded file to `credentials.json` and place it in the root directory of this project (`google-mcp-server/`).
### 2. Install Dependencies
```bash
pip install -r requirements.txt
```
### 3. Run the Server
```bash
uvicorn server:app --reload
```
On the first run, when an endpoint is hit, a browser window will open asking you to authenticate with your Google account. After successful login, a `token.json` file will be generated locally. Subsequent runs will use this token directly.
## Usage
The server runs on `http://127.0.0.1:8000`.
### Endpoints
#### `POST /append_to_doc`
Appends content to a Google Doc.
**Payload:**
```json
{
"doc_id": "YOUR_GOOGLE_DOC_ID",
"content": "Text to append"
}
```
#### `POST /create_email_draft`
Creates a draft in Gmail.
**Payload:**
```json
{
"to": "recipient@example.com",
"subject": "Hello",
"body": "This is a draft email body."
}
```
### Manual Approval
Whenever an endpoint is invoked, the terminal running the server will prompt:
```
Action: append_to_doc
Payload: {'doc_id': '...', 'content': '...'}
Approve? (y/n):
```
You must type `y` to allow the action to proceed.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing