Skip to main content
Glama
hawkxdev

google-workspace-mcp

by hawkxdev

google-workspace-mcp

Проект для создания пяти независимых удалённых MCP-серверов для Google Workspace: Gmail, Google Calendar, Google Drive, Google Sheets и Google Docs.

Статус: pre-alpha. MCP-серверы ещё не работают. Репозиторий в настоящее время содержит каркас пакета, пять точек входа-заглушек, базовое ядро состояния OAuth для нижестоящего сервиса и неизменяемую конфигурацию для каждого сервиса.

Текущий статус

Реализовано:

  • Python-пакет с пятью консольными точками входа;

  • состояние OAuth для нижестоящего сервиса на базе SQLite;

  • регистрация OAuth-клиента и PKCE;

  • привязка токена к каноническому resource;

  • ротация refresh-токенов, обнаружение повторов и отзыв семейства токенов;

  • неизменяемые метаданные владения состоянием для сервиса и ресурса;

  • неизменяемая конфигурация для каждого сервиса со строгой проверкой порта и TTL токена.

Все пять консольных точек входа являются заглушками и завершаются сообщением о том, что сервис не реализован. HTTP/MCP-транспорт, интеграция с Google API, инструменты сервисов и конфигурация развёртывания пока не реализованы.

Related MCP server: google-workspace-mcp-advanced

Планируемые сервисы

В таблице описана целевая область. Эти возможности пока недоступны.

Сервис

Целевые возможности

gmail

поиск и чтение сообщений и цепочек, метки, вложения, черновики, отправка и ответы

calendar

календари, поиск и получение событий, доступность, создание и обновление событий

drive

поиск файлов, метаданные, содержимое папок, скачивание и экспорт

sheets

метаданные таблиц, чтение и запись диапазонов, пакетные операции

docs

создание документов, получение структуры и текста, вставка и замена

В целевой архитектуре каждый сервис работает как отдельный процесс со своей конечной точкой MCP, реестром инструментов, областями OAuth Google, учётными данными Google и состоянием OAuth нижестоящего сервиса.

Целевая архитектура авторизации

В проекте используются два независимых уровня:

Клиент — сервис. MCP-клиент использует OAuth 2.1 с PKCE. Каждый токен доступа привязан к одному resource, а refresh-токены ротируются с обнаружением повторов.

Сервис — Google. Каждый сервис использует отдельные учётные данные Google и минимально необходимые области OAuth. Refresh-токены Google никогда не возвращаются MCP-клиентам.

Сегодня существует только ядро состояния для первого уровня. HTTP-конечные точки и второй уровень авторизации не реализованы.

Технологии

Требования для разработки

  • Git

  • Python 3.14

  • uv

Проект Google Cloud и OAuth-клиент потребуются после реализации интеграции с Google API. Текущая версия их не использует.

Настройка среды разработки

git clone https://github.com/hawkxdev/google-workspace-mcp.git
cd google-workspace-mcp
uv sync --dev

Виртуальное окружение активировать не нужно. Запускайте команды через uv run.

Проверки

uv run --no-sync pytest -q
uv run --no-sync ruff check .
uv run --no-sync ruff format --check .
uv run --no-sync mypy src

Флаг --no-sync обязателен при проверке установленной версии зависимости. Обычный uv run может повторно синхронизировать окружение из lock-файла.

Структура

Путь

Назначение

src/google_workspace_mcp/auth/state.py

жизненный цикл состояния OAuth нижестоящего сервиса

src/google_workspace_mcp/common/config.py

неизменяемая конфигурация окружения для каждого сервиса

src/google_workspace_mcp/cli/

пять точек входа-заглушек

tests/core/

регрессионные тесты ядра OAuth и точек входа пакета

pyproject.toml

метаданные пакета, зависимости и конфигурация инструментов

NOTICE

происхождение адаптированного кода

Участие в разработке

Проект находится на ранней стадии разработки. Перед внесением существенных изменений откройте issue с описанием предлагаемого поведения. Изменения не должны объединять пять сервисов в один процесс, разделять учётные данные между сервисами или вводить обход OAuth.

Происхождение

Проект адаптирует ядро OAuth 2.1 из jimprosser/obsidian-web-mcp под лицензией MIT. Подробности см. в NOTICE.

Ядро OAuth 2.1 для нижестоящего сервиса основано на ревизии 7e6a52d791a50e3bd533df1060217973ab5be1c8. Оно включает дополнительные исправления для жизненного цикла клиента и токенов, ротации refresh-токенов, обнаружения повторов и канонизации resource.

Функциональность Obsidian-хранилища и синхронизации с Git из исходного проекта не копировалась.

В этом проекте используется mcp>=2,<3. Пакет mcp.server.fastmcp, удалённый в MCP 2.0, не требуется; будущая композиция будет использовать mcp.server.mcpserver.

Автор

Sergey Sokolkin (@hawkxdev)

Лицензия

MIT, см. LICENSE.

Related MCP Connectors

Related MCP Servers