Mcp Server

by trasousa

297 downloads
Not rated
GitHub

Description

## MCP Gmail Server This repository provides an MCP (Model Context Protocol) server for Gmail, enabling you to interact with your Gmail account through defined tools (`list_unread`, `search_emails`) over the MCP protocol. It handles OAuth2 authentication with Google and exposes…

About

## MCP Gmail Server This repository provides an MCP (Model Context Protocol) server for Gmail, enabling you to interact with your Gmail account through defined tools (`list_unread`, `search_emails`) over the MCP protocol. It handles OAuth2 authentication with Google and exposes an asyncio-based server for integration…

Details

Author
trasousa
Downloads
297
Categories
Other

- list_unread tool to retrieve unread Gmail message snippets.
- search_emails tool to search by Gmail query.
- Seamless OAuth2 flow with token caching.
- Asyncio‑based server compatible with MCP clients.
- Can be wrapped with mcpo for HTTP/OpenAPI endpoints.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Mcp Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install dependencies with uv, place OAuth2 credentials in secrets/credentials.json, then run with uv run gmail-server. Alternatively, expose via mcpo using uvx mcpo --port 8000 --api-key "your-api-key" -- uv run gmail-server. Use any MCP‑compliant client to invoke the tools.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "mcp server": {
            "mcp-server-trasousa": {
                "command": "uv",
                "args": [
                    "pip",
                    "install",
                    "mcpo"
                ]
            }
        }
    }
}

McpServers

{
    "mcp-server-trasousa": {
        "command": "uv",
        "args": [
            "pip",
            "install",
            "mcpo"
        ]
    }
}

MCP Gmail Server

This repository provides an MCP (Model Context Protocol) server for Gmail, enabling you to interact with your Gmail account through defined tools (list_unread, search_emails) over the MCP protocol. It handles OAuth2 authentication with Google and exposes an asyncio-based server for integration with Open WebUI or other MCP clients.

Features

- list_unread: Retrieve snippets of unread Gmail messages.
- search_emails: Search emails by Gmail query (e.g., from:alice@example.com).
- Seamless OAuth2 flow with token caching.
- Asyncio-based server compatible with MCP clients (e.g., Open WebUI).

---

What is MCP?

The Model Context Protocol (MCP) is an open standard that defines how applications provide context to large language models (LLMs). Think of MCP as a standardized interface—similar to USB-C for hardware—that allows AI models to connect with various tools and data sources seamlessly.

---

Why Use mcpo?

While MCP servers are powerful, they typically communicate via standard input/output (stdio), which can be limiting:

- Insecure across different environments.
- Incompatible with many modern tools, UIs, or platforms.
- Lack features like authentication, documentation, and error handling.

mcpo (MCP-to-OpenAPI proxy) addresses these issues by:

- Wrapping your MCP tools with secure, scalable HTTP endpoints.
- Making them instantly compatible with existing OpenAPI tools, SDKs, and clients.
- Auto-generating interactive OpenAPI documentation for each tool.
- Using plain HTTP—eliminating the need for socket setup or platform-specific code.

This means you can deploy your AI tools in the cloud, integrate them with web interfaces like Open WebUI, and enhance security and scalability—all without modifying your existing MCP server code.

---

Exposing MCP Gmail Server via mcpo

To expose your MCP Gmail Server through OpenAPI using mcpo, follow these steps:

1. Install mcpo:

Using pip:

   pip install mcpo
   

Or using uv (recommended for faster startup):

   uv pip install mcpo
   

2. Run the MCP Gmail Server with mcpo:

   mcpo --port 8000 -- uv run gmail-server
   

This command starts the mcpo proxy on port 8000 and runs your Gmail MCP server behind it.

3. Access the OpenAPI Documentation:

Once running, navigate to http://localhost:8000/docs in your browser to view the auto-generated OpenAPI documentation for your Gmail tools.

4. Integrate with Open WebUI:

In Open WebUI, add your new OpenAPI tool server by specifying the endpoint (e.g., http://localhost:8000). This allows you to interact with your Gmail account through the Open WebUI interface using the defined tools.

---

By integrating mcpo with your MCP Gmail Server, you enhance its accessibility, security, and compatibility with modern tools and platforms, facilitating seamless interactions with your Gmail account through standardized APIs.

---

Prerequisites

- Python 3.13 or newer
- uv package manager
- A Google account
- Access to create projects and OAuth credentials on Google Cloud Console

Project Structure

├── mcp_server/
│   ├── __init__.py       # Package initialization
│   └── gmail/
│       ├── __init__.py   # Module initialization
│       └── server.py     # Main server implementation
├── tests/
│   ├── __init__.py
│   └── test_gmail_server.py  # Test suite for Gmail server
├── secrets/
│   ├── credentials.json  # OAuth2 client credentials (downloaded)
│   └── token.json        # Cached user tokens (auto-created)
├── pyproject.toml        # Project metadata and dependencies
├── pytest.ini           # Pytest configuration
├── run_tests.sh         # Script to run tests with uv
├── Dockerfile           # Docker configuration
└── README.md            # This documentation

Gmail API Credential Setup

1. Go to the Google Cloud Console.
2. Create a new project (or select an existing one).
3. Enable the Gmail API under APIs & Services > Library.
4. Under APIs & Services > OAuth consent screen, configure an External consent screen:
- App name: MCP Gmail Server
- Add your email as a Test user (the server won't be published).
5. Under APIs & Services > Credentials, click Create Credentials > OAuth client ID.
- Application type: Desktop app
- Download the JSON file.
6. Rename the downloaded file to credentials.json and place it in the secrets/ directory.

Installation

1. Clone this repository:

2. Install uv if you don't have it yet:

   pipx install uv
   

3. Create and activate a virtual environment using uv:

   # Create a virtual environment
   uv venv
   
   # Activate the virtual environment
   # On Unix/macOS:
   source .venv/bin/activate
   
   # On Windows:
   .\.venv\Scripts\activate
   

4. Install dependencies using uv:

   # Install the package in development mode
   uv pip install -e .
   

Configuration

- Ensure the secrets/credentials.json file is present.
- The first run will prompt you to authorize the app in your browser; afterwards, a secrets/token.json file is created.

Running the Server

Start the MCP server via:

# Run directly with uv
uv run gmail-server

Alternative: Run with MCP OpenAPI Proxy

uvx mcpo --port 8000 --api-key "your-api-key" -- uv run gmail-server

You should see output indicating the server is running and listening for MCP client connections.

Usage

- Connect any MCP-compliant client (e.g., Open Web UI).
- Use the following tools/actions:
- list_unread: Returns unread email snippets.
- search_emails: Returns emails matching the provided Gmail query.

Docker Setup

The project includes a Dockerfile for containerization:

1. Build the Docker image:

   docker build -t gmail-mcp-server .
   

2. Run the Docker container:

   docker run -p 8000:8000 \
     -e API_KEY="your-secure-api-key" \
     gmail-mcp-server
   

Docker Configuration Details

- Base Image: Python 3.13-slim
- Dependencies: Installed using uv
- Volume Mount: /app/secrets should contain your Google OAuth credentials
- Environment Variables:
- API_KEY: Security key for the MCP OpenAPI proxy (default: "top-secret")
- Port: Exposes port 8000 for the MCP OpenAPI proxy

License

This project is licensed under the MIT License. See the LICENSE file for details.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.