# Gmail MCP Server
This MCP (Model Context Protocol) server provides tools for common operations with gmail.
## Features
- `send_mail`: Send new emails
## Prerequisites
1. **Python 3.12+**
2. [**uv**](https://github.com/astral-sh/uv) - Fast Python package installer and resolver
3. **Google Cloud Console Setup**
- Go to: [Google Cloud Console](https://console.cloud.google.com/)
- Create a new project for this MCP Server
- Enable Gmail API
- Go to: **APIs and services > Library**
- Search: **Gmail API**
- Click on: **Gmail API** tile in the results
- Click on: **Enable**
- Setup OAuth
- Go to: **APIs and services > Credentials**
- Click on": **Create Credentials > OAuth client ID**
- Choose Application Type: **Web application**
- Add: **Authorised redirect URIs**: **http://localhost:4321/**
- Create client
- Download the JSON and save it to `credentials.json` in this project root. This has the **Client ID**, **Client Secret**, etc.
## Installation
1. Clone this repository:
```bash
git clone https://github.com/heuristech/gmail-mcp-server.git
cd gmail-mcp-server
```
2. Create a virtual environment and install the package in development mode:
```bash
# Create a virtual environment
uv venv
# Activate the virtual environment
# On macOS/Linux:
source .venv/bin/activate
# On Windows:
.venv\Scripts\activate
# Install dependencies
uv sync
```
**Get Refresh Token**
```python
python get_refresh_token.py
```
This will:
1. Start a server on `port`: `4321` to receive `tokens` post Google OAuth
2. Open your browser for Google OAuth
3. On succeeful authentication it will save `token.json` with `refresh_token` along with `client_id`, and `client_secret`.
4. It will also display the `refresh_token` on console.
**Create .env**
```bash
copy example.env .env
```
Setup the corresponding value using what you received in the previous step.
## Inspect
Use MCP Inspector to test it in the development mode.
```bash
mcp dev server.py
```
## Claude Desktop Integration
Once your server is ready, install it in Claude Desktop
```bash
mcp install server.py --with google-auth --with google-auth-oauthlib --with google-auth-httplib2 --with google-api-python-client -f .env
```
MCP server configuration:
```json
{
"mcpServers": {
"gmail-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/:your.path.to/gmail-mcp-server/server.py",
"run",
"server.py"
],
"env": {
"CLIENT_ID": "google.auth.app.client.id",
"CLIENT_SECRET": "google.auth.app.client.secret",
"REFRESH_TOKEN": "google.auth.app.refresh.token"
}
}
}
}
```