Skip to main content
Glama
README.md
# 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"
      }   
    }   
  }
}
```