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.6.tar.gz (712.3 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.6-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for gchat_mcp-0.1.6.tar.gz
Algorithm Hash digest
SHA256 ade5768ba435b81ca2c96b463887f47ed455b9118fdf63ffc984abd926d8fc92
MD5 abba44aabade49165c17a75975712b84
BLAKE2b-256 6ac7e049a91390c81e1b0739f0c43ebca2a5f3c24af15711fbdd1d7d4b79e05b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for gchat_mcp-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 226186477eefb85e8a7424921ccf4b8c31af422a378805f9f17a2525ab7219bd
MD5 6fcb21e6434705c70ba0456b265bdbeb
BLAKE2b-256 530d6533773f8ef8871e1951d87ed324b6eb8a6094ba6555aa3f565eb5dcfe4d

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