Skip to main content

MCP server for Artificial Virtual Assistant (AVA) with Gmail integration

Project description

Model Context Protocol (MCP)

Fourth example in AI agents series. Here, I build a customer MCP server to give any AI app access to a toolset for an Artificial Virtual Assistant (AVA).

Links

How to run this example

  1. Clone this repo
  2. Install uv if you haven't already
# Mac/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  1. Test the server in dev mode
uv run mcp dev mcp-server-example.py
  1. Add server config to AI app (e.g. Claude Desktop or Cursor).
{
  "mcpServers": {
    "AVA": {
      "command": "/Users/shawhin/.local/bin/uv", # replace with global path to your uv installation
      "args": [
        "--directory",
        "/Users/shawhin/Documents/_code/_stv/sandbox/ava-mcp/", # replace with global path to repo
        "run",
        "mcp-server-example.py"
      ]
    }
  }
}

Customizing AVA's Behavior

Update Personal Details and Preferences

  1. Locate the prompts/ava.md file in your project directory
  2. Customize the file with:
    • Communication preferences
    • Specific instructions for handling tasks
    • Any other relevant guidelines for AVA

Environment Setup (.env)

  1. Create a .env file in the root directory of the project with the following variables:
USER_EMAIL=your_email_address

# Google OAuth Credentials
GOOGLE_CREDENTIALS_PATH=.config/ava-agent/credentials.json
GOOGLE_TOKEN_PATH=.config/ava-agent/token.json

Required Environment Variables:

  • USER_EMAIL: The Gmail address you want to use for this application
  • GOOGLE_CREDENTIALS_PATH: Path to your Google OAuth credentials file
  • GOOGLE_TOKEN_PATH: Path where the Google OAuth token will be stored

Google OAuth Setup

1. Create Project Directory Structure

First, create the required directory structure:

mkdir -p .config/ava-agent

2. Set Up Google Cloud Project

  1. Go to the Google Cloud Console
  2. Create a new project or select an existing one
  3. Enable the Gmail API:
    • In the navigation menu, go to "APIs & Services" > "Library"
    • Search for "Gmail API"
    • Click "Enable"

3. Create OAuth Credentials

  1. In the Google Cloud Console:

    • Go to "APIs & Services" > "Credentials"
    • Click "Create Credentials" > "OAuth client ID"
    • Choose "Desktop application" as the application type
    • Give it a name (e.g., "AVA Gmail Client")
    • Click "Create"
  2. Download the credentials:

    • After creation, click "Download JSON"
    • Save the downloaded file as credentials.json in .config/ava-agent/
    • The file should contain your client ID and client secret

4. Configure OAuth Consent Screen

  1. In the Google Cloud Console:
    • Go to "APIs & Services" > "OAuth consent screen"
    • Choose "External" user type
    • Fill in the required information:
      • App name
      • User support email
      • Developer contact information
    • Add the Gmail API scope: https://www.googleapis.com/auth/gmail.modify
    • Add your email as a test user
    • Complete the configuration

Signing into Google

Before the server can access you Gmail account you will need to authorize it. You can do this by running uv run oauth.py which does the following.

  1. Check for the presence of token.json
  2. If not found, it will initiate the Google OAuth authentication flow
  3. Guide you through the authentication process in your browser:
    • You'll be asked to sign in to your Google account
    • Grant the requested permissions
    • The application will automatically save the token
  4. Generate and store the token automatically

Security Notes

File Protection

  • Never commit your .env file or token.json to version control
  • Keep your Google credentials secure
  • Add the following to your .gitignore:
    .env
    .config/ava-agent/token.json
    .config/ava-agent/credentials.json
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_agent_mcp_uv-0.1.0.tar.gz (3.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iflow_mcp_agent_mcp_uv-0.1.0-py3-none-any.whl (3.4 kB view details)

Uploaded Python 3

File details

Details for the file iflow_mcp_agent_mcp_uv-0.1.0.tar.gz.

File metadata

  • Download URL: iflow_mcp_agent_mcp_uv-0.1.0.tar.gz
  • Upload date:
  • Size: 3.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_agent_mcp_uv-0.1.0.tar.gz
Algorithm Hash digest
SHA256 05da16d33f5d3d26532f2cf4f3995ad63f613e9939ee4e6e3d8fb4b85452a6c2
MD5 f618379d758b7d27f6b446e4d21a5932
BLAKE2b-256 81b2ff1079cc8bb66155cbb1fef6352df8e3b7110aaa775a3c0246093851cf94

See more details on using hashes here.

File details

Details for the file iflow_mcp_agent_mcp_uv-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_agent_mcp_uv-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_agent_mcp_uv-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa786644864a4882372a1cd3965067327b805e664e75ab1c14d1cc6cedf8527a
MD5 b15c80494dbc187d0025986352e45b9a
BLAKE2b-256 9a093ab54659a27ecbb179e29679781eb6fa709313da54e1ad3f630e0fd53c1f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page