gogcli-mcp-drive 4.2.2 → 4.2.4
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/dist/index.js +10 -5
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/tools/drive-extra.ts +7 -2
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
},
|
|
8
8
|
"metadata": {
|
|
9
9
|
"description": "Extended Google Drive for Claude via gogcli — auth + full Drive support (upload, download, permissions, comments, shared drives)",
|
|
10
|
-
"version": "4.2.
|
|
10
|
+
"version": "4.2.4"
|
|
11
11
|
},
|
|
12
12
|
"plugins": [
|
|
13
13
|
{
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"displayName": "gogcli (Drive)",
|
|
16
16
|
"source": "./",
|
|
17
17
|
"description": "Extended Google Drive for Claude via gogcli — auth + full Drive support (upload, download, permissions, comments, shared drives)",
|
|
18
|
-
"version": "4.2.
|
|
18
|
+
"version": "4.2.4",
|
|
19
19
|
"author": {
|
|
20
20
|
"name": "Chris Hall"
|
|
21
21
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gogcli-mcp-drive",
|
|
3
3
|
"displayName": "gogcli (Drive)",
|
|
4
|
-
"version": "4.2.
|
|
4
|
+
"version": "4.2.4",
|
|
5
5
|
"description": "Extended Google Drive for Claude via gogcli — auth + full Drive support (upload, download, permissions, comments, shared drives)",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Chris Hall",
|
package/dist/index.js
CHANGED
|
@@ -35567,7 +35567,7 @@ function registerDriveTools(server) {
|
|
|
35567
35567
|
});
|
|
35568
35568
|
server.registerTool("gog_drive_rename", {
|
|
35569
35569
|
description: "Rename a file or folder in Google Drive.",
|
|
35570
|
-
annotations: { destructiveHint:
|
|
35570
|
+
annotations: { destructiveHint: false },
|
|
35571
35571
|
inputSchema: external_exports.object({
|
|
35572
35572
|
fileId: external_exports.string().describe("File or folder ID"),
|
|
35573
35573
|
newName: external_exports.string().describe("New name"),
|
|
@@ -35578,7 +35578,7 @@ function registerDriveTools(server) {
|
|
|
35578
35578
|
});
|
|
35579
35579
|
server.registerTool("gog_drive_move", {
|
|
35580
35580
|
description: "Move a file to a different folder in Google Drive.",
|
|
35581
|
-
annotations: { destructiveHint:
|
|
35581
|
+
annotations: { destructiveHint: false },
|
|
35582
35582
|
inputSchema: external_exports.object({
|
|
35583
35583
|
fileId: external_exports.string().describe("File ID to move"),
|
|
35584
35584
|
parentId: external_exports.string().describe("Destination folder ID"),
|
|
@@ -35753,7 +35753,7 @@ var failIfNotEmptyParam = external_exports.boolean().optional().describe(
|
|
|
35753
35753
|
);
|
|
35754
35754
|
|
|
35755
35755
|
// ../gogcli-mcp/src/server.ts
|
|
35756
|
-
var VERSION = true ? "4.2.
|
|
35756
|
+
var VERSION = true ? "4.2.4" : "0.0.0";
|
|
35757
35757
|
|
|
35758
35758
|
// ../gogcli-mcp/src/bootstrap-auth.ts
|
|
35759
35759
|
import { join as join2 } from "node:path";
|
|
@@ -35848,7 +35848,7 @@ function registerExtraDriveTools(server) {
|
|
|
35848
35848
|
});
|
|
35849
35849
|
server.registerTool("gog_drive_upload", {
|
|
35850
35850
|
description: `Upload a file to Drive. Supply it EITHER as localPath (a path on the gog server's own filesystem \u2014 local stdio deployments only) OR as content (the bytes, base64-encoded, carried with the request), which is what works when this server runs remotely from you and no path you can name exists on it. Use replace to replace the content of an existing file (preserves link/permissions), or convert to auto-convert to a Google format. Pair replace with ifVersion to make the overwrite conditional: gog sends an atomic If-Match precondition and reports a conflict \u2014 applying nothing \u2014 if the file changed since you read it, instead of silently clobbering a concurrent edit. No read tool surfaces the version number: fetch it immediately before uploading with gog_drive_run { subcommand: "raw", args: ["<fileId>", "--fields=version"] } \u2014 it comes back as a JSON string, so pass it on as a number. Conditional replacement refuses Google Workspace files (Docs/Sheets/Slides), which have no replaceable binary content.`,
|
|
35851
|
-
annotations: { destructiveHint:
|
|
35851
|
+
annotations: { destructiveHint: false },
|
|
35852
35852
|
inputSchema: external_exports.object({
|
|
35853
35853
|
localPath: external_exports.string().optional().describe(`Path to the file to upload, resolved ON THE GOG SERVER's filesystem \u2014 NOT this client's. Only usable when gog runs on the same machine you do (local stdio); on a hosted deployment (e.g. mcp-host) this path does not exist and the call fails with "no such file or directory" \u2014 use content there. Exactly one of localPath / content is required.`),
|
|
35854
35854
|
content: external_exports.string().optional().describe("The file's bytes, base64-encoded (standard alphabet, with padding) \u2014 upload a file you hold without it existing anywhere on the gog server. This is the only route that works when the caller and gog share no filesystem. Requires name (there is no path to take a filename from). Max 8 MiB; for anything larger use localPath from a local deployment. Exactly one of localPath / content is required \u2014 supplying both is an error, not a precedence rule."),
|
|
@@ -35915,6 +35915,7 @@ function registerExtraDriveTools(server) {
|
|
|
35915
35915
|
});
|
|
35916
35916
|
server.registerTool("gog_drive_copy", {
|
|
35917
35917
|
description: "Copy a Drive file to a new file with the given name.",
|
|
35918
|
+
annotations: { destructiveHint: false },
|
|
35918
35919
|
inputSchema: external_exports.object({
|
|
35919
35920
|
fileId: external_exports.string().describe("File ID to copy"),
|
|
35920
35921
|
name: external_exports.string().describe("Name for the new copy"),
|
|
@@ -36014,6 +36015,7 @@ function registerExtraDriveTools(server) {
|
|
|
36014
36015
|
});
|
|
36015
36016
|
server.registerTool("gog_drive_comments_add", {
|
|
36016
36017
|
description: "Add a new comment to a Drive file.",
|
|
36018
|
+
annotations: { destructiveHint: false },
|
|
36017
36019
|
inputSchema: external_exports.object({
|
|
36018
36020
|
fileId: external_exports.string().describe("File ID"),
|
|
36019
36021
|
content: external_exports.string().describe("Comment text"),
|
|
@@ -36024,7 +36026,7 @@ function registerExtraDriveTools(server) {
|
|
|
36024
36026
|
});
|
|
36025
36027
|
server.registerTool("gog_drive_comments_update", {
|
|
36026
36028
|
description: "Update the text of an existing comment.",
|
|
36027
|
-
annotations: { destructiveHint:
|
|
36029
|
+
annotations: { destructiveHint: false },
|
|
36028
36030
|
inputSchema: external_exports.object({
|
|
36029
36031
|
fileId: external_exports.string().describe("File ID"),
|
|
36030
36032
|
commentId: external_exports.string().describe("Comment ID to update"),
|
|
@@ -36047,6 +36049,7 @@ function registerExtraDriveTools(server) {
|
|
|
36047
36049
|
});
|
|
36048
36050
|
server.registerTool("gog_drive_comments_reply", {
|
|
36049
36051
|
description: 'Reply to an existing comment on a Drive file. Pass `action: "resolve"` or `"reopen"` to atomically flip the parent comment\'s resolved state via the Drive API\'s Reply.action field \u2014 avoids the older workaround of deleting the comment (which destroys review-thread context).',
|
|
36052
|
+
annotations: { destructiveHint: false },
|
|
36050
36053
|
inputSchema: external_exports.object({
|
|
36051
36054
|
fileId: external_exports.string().describe("File ID"),
|
|
36052
36055
|
commentId: external_exports.string().describe("Comment ID to reply to"),
|
|
@@ -36182,6 +36185,7 @@ function registerExtraDriveTools(server) {
|
|
|
36182
36185
|
});
|
|
36183
36186
|
server.registerTool("gog_drive_shortcut_create", {
|
|
36184
36187
|
description: "Create a Drive shortcut to a file or folder inside a destination folder. Shortcuts are classified distinctly in listing/tree output and are never followed by tree scans.",
|
|
36188
|
+
annotations: { destructiveHint: false },
|
|
36185
36189
|
inputSchema: external_exports.object({
|
|
36186
36190
|
targetId: external_exports.string().describe("File or folder ID the shortcut points to"),
|
|
36187
36191
|
parent: external_exports.string().describe("Destination folder ID for the shortcut"),
|
|
@@ -36255,6 +36259,7 @@ function registerExtraDriveTools(server) {
|
|
|
36255
36259
|
});
|
|
36256
36260
|
server.registerTool("gog_drive_labels_file_apply", {
|
|
36257
36261
|
description: 'Apply or update a label on a Drive file, optionally setting field values. Each field flag takes "fieldId=value" entries (repeatable). selection/integer/date/user values may be comma-separated within one entry for multi-valued fields.',
|
|
36262
|
+
annotations: { destructiveHint: false },
|
|
36258
36263
|
inputSchema: external_exports.object({
|
|
36259
36264
|
fileId: external_exports.string().describe("File ID"),
|
|
36260
36265
|
labelId: external_exports.string().describe("Label ID to apply"),
|
package/manifest.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"manifest_version": "0.3",
|
|
4
4
|
"name": "gogcli-mcp-drive",
|
|
5
5
|
"display_name": "gogcli (Drive)",
|
|
6
|
-
"version": "4.2.
|
|
6
|
+
"version": "4.2.4",
|
|
7
7
|
"description": "Extended Google Drive for Claude via gogcli — auth + full Drive support (upload, download, permissions, comments, shared drives)",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "Chris Hall",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gogcli-mcp-drive",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.4",
|
|
4
4
|
"mcpName": "io.github.chrischall/gogcli-mcp-drive",
|
|
5
5
|
"description": "Extended Google Drive MCP server via gogcli — auth + full Drive support (upload/download/permissions/comments/shared drives)",
|
|
6
6
|
"author": "Claude Code (AI) <https://www.anthropic.com/claude>",
|
package/server.json
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
"source": "github",
|
|
8
8
|
"subfolder": "packages/gogcli-mcp-drive"
|
|
9
9
|
},
|
|
10
|
-
"version": "4.2.
|
|
10
|
+
"version": "4.2.4",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "gogcli-mcp-drive",
|
|
15
|
-
"version": "4.2.
|
|
15
|
+
"version": "4.2.4",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
18
18
|
},
|
package/src/tools/drive-extra.ts
CHANGED
|
@@ -34,7 +34,7 @@ export function registerExtraDriveTools(server: McpServer): void {
|
|
|
34
34
|
'No read tool surfaces the version number: fetch it immediately before uploading with ' +
|
|
35
35
|
'gog_drive_run { subcommand: "raw", args: ["<fileId>", "--fields=version"] } — it comes back as a JSON string, so pass it on as a number. ' +
|
|
36
36
|
'Conditional replacement refuses Google Workspace files (Docs/Sheets/Slides), which have no replaceable binary content.',
|
|
37
|
-
annotations: { destructiveHint:
|
|
37
|
+
annotations: { destructiveHint: false },
|
|
38
38
|
inputSchema: z.object({
|
|
39
39
|
localPath: z.string().optional().describe('Path to the file to upload, resolved ON THE GOG SERVER\'s filesystem — NOT this client\'s. Only usable when gog runs on the same machine you do (local stdio); on a hosted deployment (e.g. mcp-host) this path does not exist and the call fails with "no such file or directory" — use content there. Exactly one of localPath / content is required.'),
|
|
40
40
|
content: z.string().optional().describe('The file\'s bytes, base64-encoded (standard alphabet, with padding) — upload a file you hold without it existing anywhere on the gog server. This is the only route that works when the caller and gog share no filesystem. Requires name (there is no path to take a filename from). Max 8 MiB; for anything larger use localPath from a local deployment. Exactly one of localPath / content is required — supplying both is an error, not a precedence rule.'),
|
|
@@ -113,6 +113,7 @@ export function registerExtraDriveTools(server: McpServer): void {
|
|
|
113
113
|
|
|
114
114
|
server.registerTool('gog_drive_copy', {
|
|
115
115
|
description: 'Copy a Drive file to a new file with the given name.',
|
|
116
|
+
annotations: { destructiveHint: false },
|
|
116
117
|
inputSchema: z.object({
|
|
117
118
|
fileId: z.string().describe('File ID to copy'),
|
|
118
119
|
name: z.string().describe('Name for the new copy'),
|
|
@@ -219,6 +220,7 @@ export function registerExtraDriveTools(server: McpServer): void {
|
|
|
219
220
|
|
|
220
221
|
server.registerTool('gog_drive_comments_add', {
|
|
221
222
|
description: 'Add a new comment to a Drive file.',
|
|
223
|
+
annotations: { destructiveHint: false },
|
|
222
224
|
inputSchema: z.object({
|
|
223
225
|
fileId: z.string().describe('File ID'),
|
|
224
226
|
content: z.string().describe('Comment text'),
|
|
@@ -230,7 +232,7 @@ export function registerExtraDriveTools(server: McpServer): void {
|
|
|
230
232
|
|
|
231
233
|
server.registerTool('gog_drive_comments_update', {
|
|
232
234
|
description: 'Update the text of an existing comment.',
|
|
233
|
-
annotations: { destructiveHint:
|
|
235
|
+
annotations: { destructiveHint: false },
|
|
234
236
|
inputSchema: z.object({
|
|
235
237
|
fileId: z.string().describe('File ID'),
|
|
236
238
|
commentId: z.string().describe('Comment ID to update'),
|
|
@@ -255,6 +257,7 @@ export function registerExtraDriveTools(server: McpServer): void {
|
|
|
255
257
|
|
|
256
258
|
server.registerTool('gog_drive_comments_reply', {
|
|
257
259
|
description: 'Reply to an existing comment on a Drive file. Pass `action: "resolve"` or `"reopen"` to atomically flip the parent comment\'s resolved state via the Drive API\'s Reply.action field — avoids the older workaround of deleting the comment (which destroys review-thread context).',
|
|
260
|
+
annotations: { destructiveHint: false },
|
|
258
261
|
inputSchema: z.object({
|
|
259
262
|
fileId: z.string().describe('File ID'),
|
|
260
263
|
commentId: z.string().describe('Comment ID to reply to'),
|
|
@@ -403,6 +406,7 @@ export function registerExtraDriveTools(server: McpServer): void {
|
|
|
403
406
|
|
|
404
407
|
server.registerTool('gog_drive_shortcut_create', {
|
|
405
408
|
description: 'Create a Drive shortcut to a file or folder inside a destination folder. Shortcuts are classified distinctly in listing/tree output and are never followed by tree scans.',
|
|
409
|
+
annotations: { destructiveHint: false },
|
|
406
410
|
inputSchema: z.object({
|
|
407
411
|
targetId: z.string().describe('File or folder ID the shortcut points to'),
|
|
408
412
|
parent: z.string().describe('Destination folder ID for the shortcut'),
|
|
@@ -480,6 +484,7 @@ export function registerExtraDriveTools(server: McpServer): void {
|
|
|
480
484
|
|
|
481
485
|
server.registerTool('gog_drive_labels_file_apply', {
|
|
482
486
|
description: 'Apply or update a label on a Drive file, optionally setting field values. Each field flag takes "fieldId=value" entries (repeatable). selection/integer/date/user values may be comma-separated within one entry for multi-valued fields.',
|
|
487
|
+
annotations: { destructiveHint: false },
|
|
483
488
|
inputSchema: z.object({
|
|
484
489
|
fileId: z.string().describe('File ID'),
|
|
485
490
|
labelId: z.string().describe('Label ID to apply'),
|