Releases: aliwatters/gsuite-mcp
v0.3.2
What's Changed
- fix(auth): take over oauth_port from stale gsuite-mcp daemon (closes #158) by @aliwatters in #159
- fix(auth): split portclaim by build tag — syscall.Kill is Unix-only (v0.3.2 release fix) by @aliwatters in #160
Full Changelog: v0.3.1...v0.3.2
v0.3.1
What's Changed
- feat(gmail): expose attachment IDs in gmail_get / gmail_get_message (closes #156) by @aliwatters in #157
Full Changelog: v0.3.0...v0.3.1
v0.3.0
What's Changed
- feat: install.sh for one-command build + install by @aliwatters in #146
- docs: recommend Desktop OAuth client type by default (Closes #134) by @aliwatters in #147
- chore(deps): bump go.opentelemetry.io/otel from 1.39.0 to 1.41.0 by @dependabot[bot] in #138
- chore(deps)(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in #142
- chore(deps)(deps): bump actions/setup-go from 5 to 6 by @dependabot[bot] in #143
- chore(deps)(deps): bump goreleaser/goreleaser-action from 6 to 7 by @dependabot[bot] in #144
- chore(deps)(deps): bump the go-minor-and-patch group across 1 directory with 4 updates by @dependabot[bot] in #145
- fix(auth): improve OAuth refresh UX + investigate TTL behavior by @aliwatters in #150
- fix(auth): No-Silent-Failures + TokenSource cache + functional pre-refresh + test hardening (P67 Slot 2) by @aliwatters in #155
- chore(deps)(deps): bump modernc.org/sqlite from 1.50.0 to 1.50.1 in the go-minor-and-patch group by @dependabot[bot] in #148
New Contributors
- @dependabot[bot] made their first contribution in #138
Full Changelog: v0.1.7...v0.3.0
v0.1.7
What's Changed
- refactor: architecture improvements — split god files and interfaces by @aliwatters in #116
- feat: parallel Drive API calls, token health --json, OAuth improvements, experimental markers by @aliwatters in #115
- refactor: citation quality improvements — error context, test coverage, DRY, chunker extraction by @aliwatters in #117
- refactor: wrap bare return err with error context by @aliwatters in #128
- refactor: DI, global state removal, DRY unification by @aliwatters in #129
- refactor: config permissions fix and constant dedup by @aliwatters in #130
- fix: tighten existing config.json permissions to 0600 by @aliwatters in #132
- fix: address 7 unresolved Copilot review comments by @aliwatters in #133
- feat: migrate mark3labs/mcp-go to v0.52.0 (#140) by @aliwatters in #141
- chore(deps): bump go deps (#136) by @aliwatters in #139
Full Changelog: v0.1.6...v0.1.7
v0.1.6
What's Changed
- feat: auth bug fix, format_by_find fix, and named ranges support by @aliwatters in #94
- feat(e2e): add E2E test suite with dedicated test account by @aliwatters in #95
- feat: add Google Meet API support and GCP setup guide by @aliwatters in #96
- feat: add Drive Activity and Google Chat API support by @aliwatters in #97
Full Changelog: v0.2.2...v0.1.6
v0.2.2
What's New
docs_get_structure tool
Returns document paragraph boundaries with real Google Docs character indices. Each structural element includes type, startIndex, endIndex, named style, and text preview — enabling position-based operations like paragraph shading, targeted hyperlink insertion, and batch formatting.
[
{"type": "paragraph", "style": "TITLE", "startIndex": 1, "endIndex": 45, "text": "DevX Epic: Three Parallel..."},
{"type": "table", "startIndex": 300, "endIndex": 800, "rows": 7, "cols": 4},
{"type": "paragraph", "style": "HEADING_2", "startIndex": 801, "endIndex": 830, "text": "Stream A: Ephemeral..."}
]Closes #92
v0.2.1
What's New
docs_format_by_find tool
Find text in a Google Doc and apply formatting to all matches — no position math needed. Resolves real Google Docs UTF-16 indexes internally, handling tables and structured elements correctly.
{
"document_id": "...",
"find_text": "NEXT_PUBLIC_PRACTICE_STATUS",
"match_all": true,
"font_family": "Courier New",
"font_size": 9,
"background_color": "#e8e8e8"
}Supports all text formatting options: bold, italic, underline, strikethrough, small_caps, font_family, font_size, foreground_color, background_color, baseline_offset.
Closes #88
v0.2.0
What's New
Multi-installation support
--config-dir flag and GSUITE_MCP_CONFIG_DIR env var to run multiple gsuite-mcp instances with different GCP projects. Each installation gets its own client_secret.json, config.json, and credentials/.
Citation tools (11 tools)
Large document indexing with FTS5 search, concept extraction, and citation formatting. Dual-layer storage: Google Sheets (source of truth) + SQLite FTS5 (local cache). Feature-flagged via large_doc_indexing.
citation_create_index— Create index Sheet in a Drive foldercitation_add_documents— Chunk and index documents (Docs, Slides, .pptx)citation_lookup— FTS5 full-text search across chunkscitation_get_overview— Index stats, file list, concepts, corpus summarycitation_get_chunks— Retrieve full chunk content by IDcitation_verify_claim— Find chunks supporting a claimcitation_format_citation— Human-readable citation stringcitation_save_concepts/citation_save_summary— Persist LLM extractionscitation_list_indexes/citation_refresh— Manage indexes
Other additions since v0.1.0
- Google Forms (5 tools): Get form structure, create forms, batch update, list/get responses
- Google Slides (5 tools): Read presentations, get slides, thumbnails, create, batch update
- Gmail send-as aliases and delegation (9 tools)
- Drive access filtering: Configurable allowlist/blocklist for shared drives
- Docs enhancements: Markdown export, find-replace, PDF export, doc import
- Docs styling and Sheets formatting: Paragraph styles, charts, pivot tables
- Calendar enhancements: Focus Time, OOO events, conference data, free/busy
- Drive enhancements: Shareable links, file type filter, comments, revisions
- Protocol-level MCP tests for regression prevention
Changed
- Default OAuth port changed from
8100to38917
Full Changelog: v0.1.0...v0.2.0
v0.1.5
What's New
- Configurable OAuth port — Default changed from 8000 to 8100 to avoid dev server conflicts. Override via
config.jsonorGSUITE_MCP_OAUTH_PORTenv var (#48) - Preflight check command —
gsuite-mcp checkvalidates config, tokens, and API access in one command (#38) - Shared drive support — All Drive operations now work with shared drives (#42)
- Folder paths in Drive results —
drive_get,drive_search, anddrive_listinclude folder paths (#43)
Improvements
- Comprehensive OAuth setup and troubleshooting guide (#47)
- Safer argument parsing with
RequireStringArghelper (#45) - Safe type assertions with
ParseStringArg/ParseBoolArg(#44) - Calendar refactor: extract
setNewEventTimes(#46)
Fixes
v0.1.4
Refactoring
Major code quality pass across all 7 service packages — 10 refactoring PRs eliminating duplication and improving maintainability.
- Extract inline HTML templates into
go:embed'd files (templates/error.html,templates/success.html) - Use
html/templatefor proper auto-escaping instead offmt.Sprintf - Extract
googleUserInfoURLconstant
Gmail (#11, #7, #6, PR #26, #24, #21)
- Consolidate inline helpers:
parseBodyFormat,extractAddRemoveLabels,buildMessageFromArgs - Split monolithic
RegisterTools(346 lines) into logical groups with table-driven registration - Extract
modifyLabelshelper in Gmail mock service
- Extract
updateEventTimes,parseAttendees,parseReminders,buildConferenceDatahelpers
- Consolidate field parsing with generic
parseContactFieldsparser - Extract
applyContactUpdates,ensurePrefixhelpers - Add
PeoplePrefix/ContactGroupsPrefixconstants
- Extract DRY helpers for file listing and permission operations
Cross-package (#15, #14, #10, #8, PR #18, #17)
- Extract DRY helpers and reduce exported surface across
common/and service packages - Remove dead code across all packages
Community
- Fix build command path in installation instructions (PR #19, thanks @nightscape)