feat: scaffold gdocs-daily-mcp-remote server codebase #288

Open
opened 2026-04-13 00:04:26 +00:00 by forgejo_admin · 0 comments

Type

Feature

Lineage

First implementation ticket for gdocs-daily-mcp-remote project. See architecture notes:

  • arch-domain-gdocs-daily-mcp-remote
  • arch-dataflow-gdocs-daily-mcp-remote
  • arch-deployment-gdocs-daily-mcp-remote

Repo

forgejo_admin/gdocs-daily-mcp-remote (new repo — create at /tmp/gdocs-daily-mcp-remote/)

User Story

As a platform owner
I want a working MCP remote server that reads Google Docs daily notes
So that Claude.ai iOS can fetch and discuss my daily notes via Streamable HTTP MCP

Context

This follows the established MCP remote pattern used by gmail-mcp-remote, gcal-mcp-remote, and notion-mcp-remote. Key difference: no inner MCP provider package — the Google Docs API surface is one tool (get_daily_note), built directly in the server.

Uses mcp-remote-auth-ldraney for the 3-party OAuth proxy. Uses httpx directly for Google API calls (not google-api-python-client).

Reference implementations:

  • ~/gmail-mcp-remote/ — primary pattern (server.py, client_patch.py, Dockerfile.k8s, .woodpecker.yaml)
  • ~/mcp-remote-auth/ — shared OAuth library
  • ~/gcal-mcp-remote/ — another Google OAuth example

File Targets

Files to create at /tmp/gdocs-daily-mcp-remote/:

  • src/gdocs_daily_mcp_remote/server.py — OAuth config + FastMCP tool definition
  • src/gdocs_daily_mcp_remote/gdocs_client.py — Google Drive search + Docs content extraction via httpx
  • src/gdocs_daily_mcp_remote/__init__.py
  • src/gdocs_daily_mcp_remote/__main__.py
  • pyproject.toml — package config (name: gdocs-daily-mcp-remote-ldraney)
  • requirements.txt — runtime deps
  • .woodpecker.yaml — CI config (copy gmail-mcp-remote pattern)
  • Dockerfile.k8s — production image (copy gmail-mcp-remote pattern)
  • .env.example — environment template
  • README.md

Acceptance Criteria

  • FastMCP server with get_daily_note(date?) tool
  • Google Drive API search by document title (MM-DD-YYYY format)
  • Google Docs API content extraction (nested JSON → plain text with basic formatting)
  • mcp-remote-auth wired for Google OAuth (documents.readonly + drive.readonly scopes)
  • Dockerfile.k8s builds successfully
  • .woodpecker.yaml matches platform CI pattern
  • Date defaults to today (America/Denver timezone)
  • Missing notes return clear message, not error

Test Expectations

  • Manual: verify server starts with uvicorn
  • Manual: verify /health endpoint responds
  • Run command: cd /tmp/gdocs-daily-mcp-remote && pip install -e . && python -m gdocs_daily_mcp_remote

Constraints

  • Follow gmail-mcp-remote server.py pattern exactly for OAuth wiring
  • Use httpx for Google API calls (NOT google-api-python-client)
  • ContextVar pattern for per-request access_token (same as gmail-mcp-remote)
  • MM-DD-YYYY date format, America/Denver timezone for "today"

Checklist

  • PR opened
  • Tests pass
  • No unrelated changes
  • board-gdocs-daily-mcp-remote — project board
  • story-gdocs-daily-mobile-daily-review — user story
### Type Feature ### Lineage First implementation ticket for `gdocs-daily-mcp-remote` project. See architecture notes: - `arch-domain-gdocs-daily-mcp-remote` - `arch-dataflow-gdocs-daily-mcp-remote` - `arch-deployment-gdocs-daily-mcp-remote` ### Repo `forgejo_admin/gdocs-daily-mcp-remote` (new repo — create at `/tmp/gdocs-daily-mcp-remote/`) ### User Story As a **platform owner** I want a **working MCP remote server that reads Google Docs daily notes** So that **Claude.ai iOS can fetch and discuss my daily notes via Streamable HTTP MCP** ### Context This follows the established MCP remote pattern used by `gmail-mcp-remote`, `gcal-mcp-remote`, and `notion-mcp-remote`. Key difference: no inner MCP provider package — the Google Docs API surface is one tool (`get_daily_note`), built directly in the server. Uses `mcp-remote-auth-ldraney` for the 3-party OAuth proxy. Uses `httpx` directly for Google API calls (not google-api-python-client). Reference implementations: - `~/gmail-mcp-remote/` — primary pattern (server.py, client_patch.py, Dockerfile.k8s, .woodpecker.yaml) - `~/mcp-remote-auth/` — shared OAuth library - `~/gcal-mcp-remote/` — another Google OAuth example ### File Targets Files to create at `/tmp/gdocs-daily-mcp-remote/`: - `src/gdocs_daily_mcp_remote/server.py` — OAuth config + FastMCP tool definition - `src/gdocs_daily_mcp_remote/gdocs_client.py` — Google Drive search + Docs content extraction via httpx - `src/gdocs_daily_mcp_remote/__init__.py` - `src/gdocs_daily_mcp_remote/__main__.py` - `pyproject.toml` — package config (name: gdocs-daily-mcp-remote-ldraney) - `requirements.txt` — runtime deps - `.woodpecker.yaml` — CI config (copy gmail-mcp-remote pattern) - `Dockerfile.k8s` — production image (copy gmail-mcp-remote pattern) - `.env.example` — environment template - `README.md` ### Acceptance Criteria - [ ] FastMCP server with `get_daily_note(date?)` tool - [ ] Google Drive API search by document title (MM-DD-YYYY format) - [ ] Google Docs API content extraction (nested JSON → plain text with basic formatting) - [ ] mcp-remote-auth wired for Google OAuth (documents.readonly + drive.readonly scopes) - [ ] Dockerfile.k8s builds successfully - [ ] .woodpecker.yaml matches platform CI pattern - [ ] Date defaults to today (America/Denver timezone) - [ ] Missing notes return clear message, not error ### Test Expectations - [ ] Manual: verify server starts with `uvicorn` - [ ] Manual: verify `/health` endpoint responds - Run command: `cd /tmp/gdocs-daily-mcp-remote && pip install -e . && python -m gdocs_daily_mcp_remote` ### Constraints - Follow gmail-mcp-remote server.py pattern exactly for OAuth wiring - Use httpx for Google API calls (NOT google-api-python-client) - ContextVar pattern for per-request access_token (same as gmail-mcp-remote) - MM-DD-YYYY date format, America/Denver timezone for "today" ### Checklist - [ ] PR opened - [ ] Tests pass - [ ] No unrelated changes ### Related - `board-gdocs-daily-mcp-remote` — project board - `story-gdocs-daily-mobile-daily-review` — user story
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
forgejo_admin/pal-e-platform#288
No description provided.