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.4.tar.gz (136.8 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.4-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for gchat_mcp-0.1.4.tar.gz
Algorithm Hash digest
SHA256 d82c313a62e9ddee608eacd361ce429cab353a1f539b94658e8abfb834a4acc3
MD5 3554b2b6c9a7ecdc4fb476e003d4c586
BLAKE2b-256 4d823705653a0627af1785891ae441ac5895a62f34433654bfc53b86f7d6f15d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for gchat_mcp-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 198b09208cdc6b93c87cf0c315a2fcac1fc8b96a0b93eda621167885a3a74168
MD5 c6584291cf60333e765ff90b88c0034b
BLAKE2b-256 b2805c4a88183f26c8be824a7bb921f7920e083612003dccd2bface7025a8b7b

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