Skip to main content
Glama
hawkxdev

google-workspace-mcp

by hawkxdev

google-workspace-mcp

Google Workspace용 독립형 원격 MCP 서버 5개(Gmail, Google Calendar, Google Drive, Google Sheets, Google Docs)를 구축하기 위한 프로젝트입니다.

상태: pre-alpha. MCP 서버는 아직 작동하지 않습니다. 현재 저장소에는 패키지 스캐폴드, 5개의 플레이스홀더 진입점, 다운스트림 OAuth 상태 코어, 그리고 서비스별 불변 구성이 포함되어 있습니다.

현재 상태

구현된 항목:

  • 5개의 콘솔 진입점을 가진 Python 패키지;

  • SQLite 기반 다운스트림 OAuth 상태;

  • OAuth 클라이언트 등록 및 PKCE;

  • 표준 resource에 대한 토큰 바인딩;

  • 리프레시 토큰 순환, 재생 탐지, 패밀리 폐기;

  • 서비스 및 리소스에 대한 불변 상태 소유권 메타데이터;

  • 엄격한 포트 및 토큰 TTL 검증이 포함된 서비스별 불변 구성.

5개의 콘솔 진입점은 모두 플레이스홀더이며 서비스가 구축되지 않았다는 메시지를 출력하고 종료됩니다. HTTP/MCP 전송, Google API 통합, 서비스 도구, 배포 구성은 아직 구현되지 않았습니다.

Related MCP server: google-workspace-mcp-advanced

계획된 서비스

아래 표는 목표 범위를 설명합니다. 이러한 기능은 아직 사용할 수 없습니다.

서비스

목표 기능

gmail

메시지 및 스레드 검색·읽기, 라벨, 첨부 파일, 초안, 보내기, 답장

calendar

캘린더, 이벤트 검색 및 조회, 가용성, 이벤트 생성 및 업데이트

drive

파일 검색, 메타데이터, 폴더 내용, 다운로드, 내보내기

sheets

스프레드시트 메타데이터, 범위 읽기·쓰기, 일괄 작업

docs

문서 생성, 구조 및 텍스트 조회, 삽입, 바꾸기

목표 아키텍처에서 각 서비스는 자체 MCP 엔드포인트, 도구 레지스트리, Google OAuth 범위, Google 자격 증명, 다운스트림 OAuth 상태를 가진 별도의 프로세스로 실행됩니다.

목표 인증 아키텍처

설계는 두 개의 독립적인 계층을 사용합니다:

클라이언트-서비스. MCP 클라이언트는 PKCE가 포함된 OAuth 2.1을 사용합니다. 각 액세스 토큰은 하나의 resource에 바인딩되며, 리프레시 토큰은 재생 탐지와 함께 순환됩니다.

서비스-Google. 각 서비스는 별도의 Google 자격 증명과 최소 필수 OAuth 범위를 사용합니다. Google 리프레시 토큰은 MCP 클라이언트에 반환되지 않습니다.

현재는 첫 번째 계층의 상태 코어만 존재합니다. HTTP 엔드포인트와 두 번째 인증 계층은 구현되지 않았습니다.

기술 스택

개발 사전 요구 사항

  • Git

  • Python 3.14

  • uv

Google API 통합이 구현된 후에는 Google Cloud 프로젝트와 OAuth 클라이언트가 필요합니다. 현재 버전에서는 사용되지 않습니다.

개발 환경 설정

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은 잠금 파일에서 환경을 다시 동기화할 수 있습니다.

구조

경로

용도

src/google_workspace_mcp/auth/state.py

다운스트림 OAuth 상태 수명 주기

src/google_workspace_mcp/common/config.py

서비스별 불변 환경 구성

src/google_workspace_mcp/cli/

5개의 플레이스홀더 진입점

tests/core/

OAuth 코어 및 패키지 진입점 회귀 테스트

pyproject.toml

패키지 메타데이터, 종속성, 도구 구성

NOTICE

수정된 코드의 출처 정보

기여

이 프로젝트는 초기 개발 단계에 있습니다. 중요한 변경을 하기 전에 제안된 동작을 설명하는 이슈를 먼저 열어 주세요. 변경 사항은 5개 서비스를 하나의 프로세스로 병합하거나, 서비스 간 자격 증명을 공유하거나, OAuth 우회를 도입해서는 안 됩니다.

출처

이 프로젝트는 MIT 라이선스에 따라 jimprosser/obsidian-web-mcp의 OAuth 2.1 코어를 수정했습니다. 자세한 내용은 NOTICE를 참조하세요.

다운스트림 OAuth 2.1 코어는 리비전 7e6a52d791a50e3bd533df1060217973ab5be1c8을 기반으로 합니다. 클라이언트 및 토큰 수명 주기, 리프레시 토큰 순환, 재생 탐지, resource 표준화에 대한 추가 수정 사항이 포함되어 있습니다.

원본 프로젝트의 Obsidian 저장소 및 Git 동기화 기능은 복사되지 않았습니다.

이 프로젝트는 mcp>=2,<3을 사용합니다. MCP 2.0에서 제거된 mcp.server.fastmcp 패키지는 필요하지 않습니다. 향후 구성은 mcp.server.mcpserver를 사용합니다.

작성자

Sergey Sokolkin (@hawkxdev)

라이선스

MIT, LICENSE 참조.

Related MCP Connectors

Related MCP Servers