Skip to main content

MCP server for Google Chat integration

Project description

gchat-mcp

MCP (Model Context Protocol) server for Google Chat integration. This server provides tools to interact with Google Chat spaces and messages.

Features

  • List all Google Chat spaces you're a member of
  • Retrieve recent messages from any space
  • Search messages by text content

Installation

Using uv

# Create virtual environment
uv venv

# Activate it
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
uv pip install -e ".[dev]"

Or with pip

pip install -e ".[dev]"

Setup

  1. Create a Google Cloud project: https://console.cloud.google.com/

  2. Enable Google Chat API:

    gcloud services enable chat.googleapis.com
    
  3. Create a service account:

    • Go to IAM & Admin > Service Accounts
    • Click "Create Service Account"
    • Give it a name (e.g., "gchat-mcp")
    • Click "Generate Key" and select JSON format
    • Download the JSON file
  4. Place credentials: Put your service account JSON as credentials.json in the project root

  5. Validate credentials:

    make oauth
    # or
    uv run python oauth_setup.py credentials.json
    

Usage

As an MCP Server

# Start the MCP server
uv run python -m src.apps.gchat_mcp.server

Available Tools

list_spaces()

Returns a list of Google Chat spaces the authenticated user is a member of.

Example:

from src.apps.gchat_mcp.server import app

# In MCP context
spaces = await app.call_tool("list_spaces")
print(spaces)
# [{'spaceId': 'abc123', 'name': 'General', 'iconLink': 'https://...'}]

list_messages(space_id, limit=20)

Retrieves recent messages from a specific space.

Arguments:

  • space_id (str): The unique identifier of the space
  • limit (int, optional): Maximum number of messages to retrieve (default: 20)

Example:

messages = await app.call_tool("list_messages", {"space_id": "abc123", "limit": 10})
print(messages)
# [{'messageId': 'msg1', 'text': 'Hello!', 'authorName': 'User1', ...}]

search_messages(space_id, query)

Searches for messages containing specific text in a space.

Arguments:

  • space_id (str): The unique identifier of the space to search in
  • query (str): The text query to search for

Example:

results = await app.call_tool("search_messages", {"space_id": "abc123", "query": "meeting"})
print(results)
# [{'messageId': 'msg1', 'text': 'Meeting at 3pm...', 'authorName': 'User1', ...}]

Project Structure

ai-meetup-demo/
├── pyproject.toml
├── README.md
├── src/
│   ├── config/           # Configuration files
│   │   └── __init__.py
│   ├── apps/
│   │   └── gchat_mcp/    # MCP server application
│   │       ├── __init__.py
│   │       └── server.py
│   └── manage.py         # Entry point
├── credentials.json      # Google Cloud service account (add to .gitignore)
├── oauth_setup.py        # OAuth setup helper script
├── examples/
│   └── example_usage.py  # Usage examples
└── tests/
    └── test_server.py    # Unit tests

Configuration

Service Account

Place your Google Cloud service account JSON as credentials.json in the project root. This file is excluded from git.

Development

# Install dev dependencies
uv pip install -e ".[dev]"

# Run tests
uv run pytest

# Check code quality
uv run ruff check src/
uv run ruff format src/ --check

License

MIT

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

gchat_mcp-0.1.5.tar.gz (137.1 kB view details)

Uploaded Source

Built Distribution

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

gchat_mcp-0.1.5-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file gchat_mcp-0.1.5.tar.gz.

File metadata

  • Download URL: gchat_mcp-0.1.5.tar.gz
  • Upload date:
  • Size: 137.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.23

File hashes

Hashes for gchat_mcp-0.1.5.tar.gz
Algorithm Hash digest
SHA256 b1a22d65d388466d357090a33c8ae6b2c2cb0c44de6afa110abec921e28ac085
MD5 e41e30d708b4f9ac66d9dd21f9ae3260
BLAKE2b-256 833cdc626fe36e3cf7881355c242970e486cb9485b96c56ebf4af038000ee6eb

See more details on using hashes here.

File details

Details for the file gchat_mcp-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: gchat_mcp-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.23

File hashes

Hashes for gchat_mcp-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f2808f7c297efd08b3b307a60832cedcc6f933dc61251ef890e1305575835851
MD5 77189cb19fa851c9f8ebd95442c28ef4
BLAKE2b-256 83454eed57c9df2236d15197144ab936201af3fe3af4890c241fa26369c73315

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