google-tools-mcp 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # google-tools-mcp
2
2
 
3
- A unified MCP server for Google Workspace — Drive, Docs, Sheets, Gmail, and Calendar — with **146 tools** across 8 categories.
3
+ A unified MCP server for Google Workspace — Drive, Docs, Sheets, Gmail, Calendar, and Forms — with **152 tools** across 9 categories.
4
4
 
5
5
  All tools are loaded at startup so they're immediately available to your AI agent. No discovery step needed.
6
6
 
@@ -10,10 +10,10 @@ Most Google MCP servers split functionality across separate packages. This serve
10
10
 
11
11
  ## Features
12
12
 
13
- - **146 tools** across 8 categories, all available immediately
14
- - **Single auth token** — one OAuth flow covers Drive, Docs, Sheets, Gmail, and Calendar
13
+ - **152 tools** across 9 categories, all available immediately
14
+ - **Single auth token** — one OAuth flow covers Drive, Docs, Sheets, Gmail, Calendar, and Forms
15
15
  - **Lazy-loading auth** — no browser popup until your first tool call
16
- - **No lazy tool loading** — all 146 tools are registered eagerly at startup since most MCP clients (including Claude Code) don't support `notifications/tools/list_changed`
16
+ - **No lazy tool loading** — all 150 tools are registered eagerly at startup since most MCP clients (including Claude Code) don't support `notifications/tools/list_changed`
17
17
  - **Multi-profile support** — separate tokens per Google account
18
18
  - **No telemetry**
19
19
 
@@ -23,10 +23,11 @@ Most Google MCP servers split functionality across separate packages. This serve
23
23
 
24
24
  1. Go to the [Google Cloud Console](https://console.cloud.google.com/)
25
25
  2. Create a project (or use an existing one)
26
- 3. Enable the **Google Docs API**, **Google Sheets API**, **Google Drive API**, **Gmail API**, and **Google Calendar API**
27
- 4. Go to **Credentials** → **Create Credentials** → **OAuth Client ID**
28
- 5. Select **Desktop application** as the application type
29
- 6. Download the credentials or note your **Client ID** and **Client Secret**
26
+ 3. Enable the **Google Docs API**, **Google Sheets API**, **Google Drive API**, **Gmail API**, **Google Calendar API**, and **Google Forms API**
27
+ 4. Go to **OAuth consent screen** and configure it (External is fine for personal use). If your app's publishing status is **Testing** (the default), you must add your Google account as a test user — go to **OAuth consent screen** → **Test users** → **Add users** and enter your email. Without this, Google will block the OAuth flow with an "Access denied" or "app not verified" error.
28
+ 5. Go to **Credentials** **Create Credentials** **OAuth Client ID**
29
+ 6. Select **Desktop application** as the application type
30
+ 7. Download the credentials or note your **Client ID** and **Client Secret**
30
31
 
31
32
  ### Step 2: Provide Your Credentials
32
33
 
@@ -168,20 +169,20 @@ This stores tokens in `~/.config/google-tools-mcp/work/` instead of the default
168
169
 
169
170
  ## Tool Categories
170
171
 
171
- ### `files` (16 tools)
172
+ ### `files` (17 tools)
172
173
  Google Drive file management and content reading.
173
174
 
174
- `listDocuments`, `searchDocuments`, `getDocumentInfo`, `createFolder`, `listFolderContents`, `getFolderInfo`, `moveFile`, `copyFile`, `renameFile`, `deleteFile`, `createDocument`, `createDocumentFromTemplate`, `listSharedDrives`, `listSharedWithMe`, `readFile`, `searchFileContents`
175
+ `listDriveFiles`, `searchDocuments`, `getFileInfo`, `createFolder`, `listFolderContents`, `getFolderInfo`, `moveFile`, `copyFile`, `renameFile`, `deleteFile`, `createDocument`, `createDocumentFromTemplate`, `listSharedDrives`, `listSharedWithMe`, `downloadFile`, `readFile`, `searchFileContents`
175
176
 
176
- ### `documents` (23 tools)
177
+ ### `documents` (22 tools)
177
178
  Google Docs read/write/format with markdown support.
178
179
 
179
- `readDocument`, `appendText`, `insertText`, `deleteRange`, `modifyText`, `findAndReplace`, `insertTable`, `insertTableWithData`, `insertPageBreak`, `insertImage`, `listTabs`, `addTab`, `renameTab`, `applyTextStyle`, `applyParagraphStyle`, `addComment`, `deleteComment`, `getComment`, `listComments`, `replyToComment`, `resolveComment`, `appendMarkdown`, `replaceDocumentWithMarkdown`
180
+ `readDocument`, `appendText`, `deleteRange`, `modifyText`, `findAndReplace`, `insertTable`, `insertTableWithData`, `insertPageBreak`, `insertImage`, `listTabs`, `addTab`, `renameTab`, `applyParagraphStyle`, `getFormatting`, `addComment`, `deleteComment`, `getComment`, `listComments`, `replyToComment`, `resolveComment`, `appendMarkdown`, `replaceDocumentWithMarkdown`
180
181
 
181
- ### `spreadsheets` (30 tools)
182
+ ### `spreadsheets` (29 tools)
182
183
  Google Sheets operations.
183
184
 
184
- `readSpreadsheet`, `writeSpreadsheet`, `batchWrite`, `appendRows`, `clearRange`, `createSpreadsheet`, `getSpreadsheetInfo`, `addSheet`, `deleteSheet`, `duplicateSheet`, `renameSheet`, `formatCells`, `readCellFormat`, `autoResizeColumns`, `freezeRowsAndColumns`, `setColumnWidths`, `addConditionalFormatting`, `copyFormatting`, `setDropdownValidation`, `createTable`, `deleteTable`, `getTable`, `listTables`, `appendTableRows`, `updateTableRange`, `insertChart`, `deleteChart`, `groupRows`, `ungroupAllRows`, `listSpreadsheets`
185
+ `readSpreadsheet`, `writeSpreadsheet`, `batchWrite`, `appendRows`, `clearRange`, `createSpreadsheet`, `getSpreadsheetInfo`, `addSheet`, `deleteSheet`, `duplicateSheet`, `renameSheet`, `formatCells`, `readCellFormat`, `autoResizeColumns`, `freezeRowsAndColumns`, `setColumnWidths`, `addConditionalFormatting`, `copyFormatting`, `setDropdownValidation`, `createTable`, `deleteTable`, `getTable`, `listTables`, `appendTableRows`, `updateTableRange`, `insertChart`, `deleteChart`, `groupRows`, `ungroupAllRows`
185
186
 
186
187
  ### `email` (19 tools)
187
188
  Gmail messages and drafts.
@@ -208,6 +209,11 @@ Google Calendar — events, availability, and calendar management.
208
209
 
209
210
  `list_calendars`, `get_events`, `manage_event`, `get_busy`, `get_free`, `move_event`, `list_recurring_event_instances`, `manage_calendar`
210
211
 
212
+ ### `forms` (6 tools)
213
+ Google Forms — create/read forms, manage responses, and publish settings.
214
+
215
+ `create_form`, `get_form`, `batch_update_form`, `get_form_response`, `list_form_responses`, `set_publish_settings`
216
+
211
217
  ## Environment Variables
212
218
 
213
219
  | Variable | Required | Description |
@@ -102,7 +102,8 @@ export function register(server) {
102
102
  server.addTool({
103
103
  name: 'getFormatting',
104
104
  description: 'Returns the text styling (bold, italic, font, colors, etc.) and paragraph styling ' +
105
- '(alignment, headings, spacing, indentation) for a specific range or found text in a Google Doc.',
105
+ '(alignment, headings, spacing, indentation) for a specific range or found text in a Google Doc. ' +
106
+ 'Returns per-run text styles and per-paragraph styles, so mixed formatting (e.g. bold + italic spans) is fully represented.',
106
107
  parameters: GetFormattingParameters,
107
108
  execute: async (args, { log }) => {
108
109
  const docs = await getDocsClient();
@@ -3,6 +3,8 @@
3
3
  // so lazy-loading doesn't work.)
4
4
  import { z } from 'zod';
5
5
  import * as fs from 'fs/promises';
6
+ import * as path from 'path';
7
+ import { fileURLToPath } from 'url';
6
8
  import { getTokenPath } from '../auth.js';
7
9
  import { resetClients } from '../clients.js';
8
10
  import { logger } from '../logger.js';
@@ -81,6 +83,23 @@ export async function registerAllTools(server) {
81
83
  }
82
84
  logger.info(`Loaded all ${Object.keys(CATEGORIES).length} categories at startup.`);
83
85
 
86
+ // --- Help tool (always available) ---
87
+ server.addTool({
88
+ name: 'help',
89
+ description:
90
+ 'Show documentation for google-tools-mcp: setup instructions, available tool categories, environment variables, and troubleshooting. Call this when you need guidance on how to use the Google Workspace tools.',
91
+ parameters: z.object({}),
92
+ execute: async () => {
93
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
94
+ const readmePath = path.resolve(__dirname, '..', '..', 'README.md');
95
+ try {
96
+ return await fs.readFile(readmePath, 'utf-8');
97
+ } catch {
98
+ return 'README not found. Visit https://www.npmjs.com/package/google-tools-mcp for documentation.';
99
+ }
100
+ },
101
+ });
102
+
84
103
  // --- Logout tool (always available) ---
85
104
  server.addTool({
86
105
  name: 'logout',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "google-tools-mcp",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "Combined Google Workspace MCP server (Drive, Docs, Sheets, Gmail) with lazy-loaded tool categories",
5
5
  "type": "module",
6
6
  "bin": {