gogcli-mcp-docs 1.0.9 → 2.0.0
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 +2 -2
- package/SKILL.md +4 -4
- package/dist/index.js +6 -549
- package/manifest.json +4 -168
- package/package.json +1 -1
- package/src/index.ts +4 -2
- package/tests/tools/docs-extra.test.ts +128 -246
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# gogcli-mcp-docs
|
|
2
2
|
|
|
3
|
-
Extended Google Docs [MCP](https://modelcontextprotocol.io) server via [gogcli](https://github.com/steipete/gogcli). Includes
|
|
3
|
+
Extended Google Docs [MCP](https://modelcontextprotocol.io) server via [gogcli](https://github.com/steipete/gogcli). Includes auth tools plus 14 additional dedicated Docs tools for editing, exporting, comments, and more.
|
|
4
4
|
|
|
5
5
|
## Requirements
|
|
6
6
|
|
|
@@ -43,7 +43,7 @@ claude mcp add gogcli-docs -- gogcli-mcp-docs
|
|
|
43
43
|
|
|
44
44
|
## Extra Docs Tools (14)
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
Plus 5 auth tools and 7 base Docs tools (info, cat, create, write, find-replace, structure, run).
|
|
47
47
|
|
|
48
48
|
| Tool | Description |
|
|
49
49
|
|------|-------------|
|
package/SKILL.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gogcli-mcp-docs
|
|
3
|
-
description: Use when the user asks to read, write, edit, export, or comment on Google Docs. Triggers for requests involving document editing, inserting text, exporting as PDF/HTML/DOCX, sed-like find-replace, managing document tabs, or working with comments and replies.
|
|
3
|
+
description: Use when the user asks to read, write, edit, export, or comment on Google Docs. Triggers for requests involving document editing, inserting text, exporting as PDF/HTML/DOCX/RTF/ODT/EPUB, sed-like find-replace, managing document tabs, or working with comments and replies. Includes auth and Docs tools only.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# gogcli-mcp-docs
|
|
7
7
|
|
|
8
|
-
Extended Google Docs MCP server via [gogcli](https://github.com/steipete/gogcli) —
|
|
8
|
+
Extended Google Docs MCP server via [gogcli](https://github.com/steipete/gogcli) — 26 tools: auth + 7 base Docs + 14 extra dedicated Docs tools.
|
|
9
9
|
|
|
10
10
|
- **Source:** [github.com/chrischall/gogcli-mcp](https://github.com/chrischall/gogcli-mcp)
|
|
11
11
|
|
|
@@ -37,7 +37,7 @@ Extended Google Docs MCP server via [gogcli](https://github.com/steipete/gogcli)
|
|
|
37
37
|
| `gog_docs_copy` | Copy a document |
|
|
38
38
|
| `gog_docs_delete` | Delete content by character index range |
|
|
39
39
|
| `gog_docs_edit` | Find and replace with case-sensitivity |
|
|
40
|
-
| `gog_docs_export` | Export as PDF, TXT, HTML, DOCX, RTF |
|
|
40
|
+
| `gog_docs_export` | Export as PDF, TXT, HTML, DOCX, RTF, ODT, or EPUB |
|
|
41
41
|
| `gog_docs_insert` | Insert text at a specific position |
|
|
42
42
|
| `gog_docs_list_tabs` | List all document tabs |
|
|
43
43
|
| `gog_docs_sed` | Stream-edit with sed-like regex |
|
|
@@ -49,4 +49,4 @@ Extended Google Docs MCP server via [gogcli](https://github.com/steipete/gogcli)
|
|
|
49
49
|
| `gog_docs_comments_resolve` | Resolve a comment |
|
|
50
50
|
| `gog_docs_comments_delete` | Delete a comment |
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
Plus 5 auth tools and 7 base Docs tools.
|
package/dist/index.js
CHANGED
|
@@ -30276,191 +30276,6 @@ function registerAuthTools(server2) {
|
|
|
30276
30276
|
});
|
|
30277
30277
|
}
|
|
30278
30278
|
|
|
30279
|
-
// ../gogcli-mcp/src/tools/calendar.ts
|
|
30280
|
-
function registerCalendarTools(server2) {
|
|
30281
|
-
server2.registerTool("gog_calendar_events", {
|
|
30282
|
-
description: "List calendar events. Filters can be combined (e.g. --from + --to for a range, or --today for just today).",
|
|
30283
|
-
annotations: { readOnlyHint: true },
|
|
30284
|
-
inputSchema: {
|
|
30285
|
-
calendarId: external_exports.string().optional().describe("Calendar ID (default: primary calendar)"),
|
|
30286
|
-
from: external_exports.string().optional().describe("Start time filter (RFC3339, date, or natural language)"),
|
|
30287
|
-
to: external_exports.string().optional().describe("End time filter (RFC3339, date, or natural language)"),
|
|
30288
|
-
today: external_exports.boolean().optional().describe("Only show today's events"),
|
|
30289
|
-
query: external_exports.string().optional().describe("Free text search within events"),
|
|
30290
|
-
all: external_exports.boolean().optional().describe("Fetch events from all calendars"),
|
|
30291
|
-
account: accountParam
|
|
30292
|
-
}
|
|
30293
|
-
}, async ({ calendarId, from, to, today, query, all, account }) => {
|
|
30294
|
-
const args = ["calendar", "events"];
|
|
30295
|
-
if (calendarId) args.push(calendarId);
|
|
30296
|
-
if (from) args.push(`--from=${from}`);
|
|
30297
|
-
if (to) args.push(`--to=${to}`);
|
|
30298
|
-
if (today) args.push("--today");
|
|
30299
|
-
if (query) args.push(`--query=${query}`);
|
|
30300
|
-
if (all) args.push("--all");
|
|
30301
|
-
return runOrDiagnose(args, { account });
|
|
30302
|
-
});
|
|
30303
|
-
server2.registerTool("gog_calendar_get", {
|
|
30304
|
-
description: "Get a specific calendar event by ID.",
|
|
30305
|
-
annotations: { readOnlyHint: true },
|
|
30306
|
-
inputSchema: {
|
|
30307
|
-
calendarId: external_exports.string().describe("Calendar ID"),
|
|
30308
|
-
eventId: external_exports.string().describe("Event ID"),
|
|
30309
|
-
account: accountParam
|
|
30310
|
-
}
|
|
30311
|
-
}, async ({ calendarId, eventId, account }) => {
|
|
30312
|
-
return runOrDiagnose(["calendar", "event", calendarId, eventId], { account });
|
|
30313
|
-
});
|
|
30314
|
-
server2.registerTool("gog_calendar_create", {
|
|
30315
|
-
description: "Create a calendar event.",
|
|
30316
|
-
annotations: { destructiveHint: false },
|
|
30317
|
-
inputSchema: {
|
|
30318
|
-
calendarId: external_exports.string().describe('Calendar ID (use "primary" for the default calendar)'),
|
|
30319
|
-
summary: external_exports.string().describe("Event title"),
|
|
30320
|
-
from: external_exports.string().describe("Start time (RFC3339 or date for all-day events)"),
|
|
30321
|
-
to: external_exports.string().describe("End time (RFC3339 or date for all-day events)"),
|
|
30322
|
-
description: external_exports.string().optional().describe("Event description"),
|
|
30323
|
-
location: external_exports.string().optional().describe("Event location"),
|
|
30324
|
-
attendees: external_exports.string().optional().describe("Attendee emails, comma-separated"),
|
|
30325
|
-
allDay: external_exports.boolean().optional().describe("All-day event (use date-only in from/to)"),
|
|
30326
|
-
account: accountParam
|
|
30327
|
-
}
|
|
30328
|
-
}, async ({ calendarId, summary, from, to, description, location, attendees, allDay, account }) => {
|
|
30329
|
-
const args = ["calendar", "create", calendarId, `--summary=${summary}`, `--from=${from}`, `--to=${to}`];
|
|
30330
|
-
if (description) args.push(`--description=${description}`);
|
|
30331
|
-
if (location) args.push(`--location=${location}`);
|
|
30332
|
-
if (attendees) args.push(`--attendees=${attendees}`);
|
|
30333
|
-
if (allDay) args.push("--all-day");
|
|
30334
|
-
return runOrDiagnose(args, { account });
|
|
30335
|
-
});
|
|
30336
|
-
server2.registerTool("gog_calendar_update", {
|
|
30337
|
-
description: "Update an existing calendar event.",
|
|
30338
|
-
annotations: { destructiveHint: false },
|
|
30339
|
-
inputSchema: {
|
|
30340
|
-
calendarId: external_exports.string().describe("Calendar ID"),
|
|
30341
|
-
eventId: external_exports.string().describe("Event ID"),
|
|
30342
|
-
summary: external_exports.string().optional().describe("New event title"),
|
|
30343
|
-
from: external_exports.string().optional().describe("New start time (RFC3339)"),
|
|
30344
|
-
to: external_exports.string().optional().describe("New end time (RFC3339)"),
|
|
30345
|
-
description: external_exports.string().optional().describe("New description"),
|
|
30346
|
-
location: external_exports.string().optional().describe("New location"),
|
|
30347
|
-
attendees: external_exports.string().optional().describe("New attendee emails, comma-separated (replaces existing)"),
|
|
30348
|
-
account: accountParam
|
|
30349
|
-
}
|
|
30350
|
-
}, async ({ calendarId, eventId, summary, from, to, description, location, attendees, account }) => {
|
|
30351
|
-
const args = ["calendar", "update", calendarId, eventId];
|
|
30352
|
-
if (summary !== void 0) args.push(`--summary=${summary}`);
|
|
30353
|
-
if (from !== void 0) args.push(`--from=${from}`);
|
|
30354
|
-
if (to !== void 0) args.push(`--to=${to}`);
|
|
30355
|
-
if (description !== void 0) args.push(`--description=${description}`);
|
|
30356
|
-
if (location !== void 0) args.push(`--location=${location}`);
|
|
30357
|
-
if (attendees !== void 0) args.push(`--attendees=${attendees}`);
|
|
30358
|
-
return runOrDiagnose(args, { account });
|
|
30359
|
-
});
|
|
30360
|
-
server2.registerTool("gog_calendar_delete", {
|
|
30361
|
-
description: "Delete a calendar event.",
|
|
30362
|
-
annotations: { destructiveHint: true },
|
|
30363
|
-
inputSchema: {
|
|
30364
|
-
calendarId: external_exports.string().describe("Calendar ID"),
|
|
30365
|
-
eventId: external_exports.string().describe("Event ID"),
|
|
30366
|
-
account: accountParam
|
|
30367
|
-
}
|
|
30368
|
-
}, async ({ calendarId, eventId, account }) => {
|
|
30369
|
-
return runOrDiagnose(["calendar", "delete", calendarId, eventId], { account });
|
|
30370
|
-
});
|
|
30371
|
-
server2.registerTool("gog_calendar_respond", {
|
|
30372
|
-
description: "Respond to a calendar event invitation.",
|
|
30373
|
-
annotations: { destructiveHint: true },
|
|
30374
|
-
inputSchema: {
|
|
30375
|
-
calendarId: external_exports.string().describe("Calendar ID"),
|
|
30376
|
-
eventId: external_exports.string().describe("Event ID"),
|
|
30377
|
-
status: external_exports.enum(["accepted", "declined", "tentative"]).describe("Response status"),
|
|
30378
|
-
comment: external_exports.string().optional().describe("Optional comment to include with response"),
|
|
30379
|
-
account: accountParam
|
|
30380
|
-
}
|
|
30381
|
-
}, async ({ calendarId, eventId, status, comment, account }) => {
|
|
30382
|
-
const args = ["calendar", "respond", calendarId, eventId, `--status=${status}`];
|
|
30383
|
-
if (comment) args.push(`--comment=${comment}`);
|
|
30384
|
-
return runOrDiagnose(args, { account });
|
|
30385
|
-
});
|
|
30386
|
-
server2.registerTool("gog_calendar_run", {
|
|
30387
|
-
description: "Run any gog calendar subcommand not covered by the other tools. Run `gog calendar --help` for the full list of subcommands, or `gog calendar <subcommand> --help` for flags on a specific subcommand.",
|
|
30388
|
-
annotations: { destructiveHint: true },
|
|
30389
|
-
inputSchema: {
|
|
30390
|
-
subcommand: external_exports.string().describe('The gog calendar subcommand to run, e.g. "calendars", "freebusy"'),
|
|
30391
|
-
args: external_exports.array(external_exports.string()).describe("Additional positional args and flags"),
|
|
30392
|
-
account: accountParam
|
|
30393
|
-
}
|
|
30394
|
-
}, async ({ subcommand, args, account }) => {
|
|
30395
|
-
return runOrDiagnose(["calendar", subcommand, ...args], { account });
|
|
30396
|
-
});
|
|
30397
|
-
}
|
|
30398
|
-
|
|
30399
|
-
// ../gogcli-mcp/src/tools/contacts.ts
|
|
30400
|
-
function registerContactsTools(server2) {
|
|
30401
|
-
server2.registerTool("gog_contacts_search", {
|
|
30402
|
-
description: "Search Google Contacts by name, email, or phone.",
|
|
30403
|
-
annotations: { readOnlyHint: true },
|
|
30404
|
-
inputSchema: {
|
|
30405
|
-
query: external_exports.string().describe("Search query (name, email, or phone)"),
|
|
30406
|
-
account: accountParam
|
|
30407
|
-
}
|
|
30408
|
-
}, async ({ query, account }) => {
|
|
30409
|
-
return runOrDiagnose(["contacts", "search", query], { account });
|
|
30410
|
-
});
|
|
30411
|
-
server2.registerTool("gog_contacts_list", {
|
|
30412
|
-
description: "List all Google Contacts.",
|
|
30413
|
-
annotations: { readOnlyHint: true },
|
|
30414
|
-
inputSchema: {
|
|
30415
|
-
account: accountParam
|
|
30416
|
-
}
|
|
30417
|
-
}, async ({ account }) => {
|
|
30418
|
-
return runOrDiagnose(["contacts", "list"], { account });
|
|
30419
|
-
});
|
|
30420
|
-
server2.registerTool("gog_contacts_get", {
|
|
30421
|
-
description: "Get a contact by resource name.",
|
|
30422
|
-
annotations: { readOnlyHint: true },
|
|
30423
|
-
inputSchema: {
|
|
30424
|
-
resourceName: external_exports.string().describe("Contact resource name (e.g. people/c12345)"),
|
|
30425
|
-
account: accountParam
|
|
30426
|
-
}
|
|
30427
|
-
}, async ({ resourceName, account }) => {
|
|
30428
|
-
return runOrDiagnose(["contacts", "get", resourceName], { account });
|
|
30429
|
-
});
|
|
30430
|
-
server2.registerTool("gog_contacts_create", {
|
|
30431
|
-
description: "Create a new Google Contact.",
|
|
30432
|
-
annotations: { destructiveHint: false },
|
|
30433
|
-
inputSchema: {
|
|
30434
|
-
givenName: external_exports.string().describe("Given (first) name"),
|
|
30435
|
-
familyName: external_exports.string().optional().describe("Family (last) name"),
|
|
30436
|
-
email: external_exports.string().optional().describe("Email address"),
|
|
30437
|
-
phone: external_exports.string().optional().describe("Phone number"),
|
|
30438
|
-
org: external_exports.string().optional().describe("Organization/company name"),
|
|
30439
|
-
title: external_exports.string().optional().describe("Job title"),
|
|
30440
|
-
account: accountParam
|
|
30441
|
-
}
|
|
30442
|
-
}, async ({ givenName, familyName, email: email3, phone, org, title, account }) => {
|
|
30443
|
-
const args = ["contacts", "create", `--given=${givenName}`];
|
|
30444
|
-
if (familyName) args.push(`--family=${familyName}`);
|
|
30445
|
-
if (email3) args.push(`--email=${email3}`);
|
|
30446
|
-
if (phone) args.push(`--phone=${phone}`);
|
|
30447
|
-
if (org) args.push(`--org=${org}`);
|
|
30448
|
-
if (title) args.push(`--title=${title}`);
|
|
30449
|
-
return runOrDiagnose(args, { account });
|
|
30450
|
-
});
|
|
30451
|
-
server2.registerTool("gog_contacts_run", {
|
|
30452
|
-
description: "Run any gog contacts subcommand not covered by the other tools. Run `gog contacts --help` for the full list of subcommands, or `gog contacts <subcommand> --help` for flags on a specific subcommand.",
|
|
30453
|
-
annotations: { destructiveHint: true },
|
|
30454
|
-
inputSchema: {
|
|
30455
|
-
subcommand: external_exports.string().describe('The gog contacts subcommand to run, e.g. "update", "delete", "directory"'),
|
|
30456
|
-
args: external_exports.array(external_exports.string()).describe("Additional positional args and flags"),
|
|
30457
|
-
account: accountParam
|
|
30458
|
-
}
|
|
30459
|
-
}, async ({ subcommand, args, account }) => {
|
|
30460
|
-
return runOrDiagnose(["contacts", subcommand, ...args], { account });
|
|
30461
|
-
});
|
|
30462
|
-
}
|
|
30463
|
-
|
|
30464
30279
|
// ../gogcli-mcp/src/tools/docs.ts
|
|
30465
30280
|
function registerDocsTools(server2) {
|
|
30466
30281
|
server2.registerTool("gog_docs_info", {
|
|
@@ -30541,373 +30356,13 @@ function registerDocsTools(server2) {
|
|
|
30541
30356
|
});
|
|
30542
30357
|
}
|
|
30543
30358
|
|
|
30544
|
-
// ../gogcli-mcp/src/tools/drive.ts
|
|
30545
|
-
function registerDriveTools(server2) {
|
|
30546
|
-
server2.registerTool("gog_drive_ls", {
|
|
30547
|
-
description: "List files in a Google Drive folder (default: root).",
|
|
30548
|
-
annotations: { readOnlyHint: true },
|
|
30549
|
-
inputSchema: {
|
|
30550
|
-
folderId: external_exports.string().optional().describe("Folder ID to list (default: root)"),
|
|
30551
|
-
account: accountParam
|
|
30552
|
-
}
|
|
30553
|
-
}, async ({ folderId, account }) => {
|
|
30554
|
-
const args = ["drive", "ls"];
|
|
30555
|
-
if (folderId) args.push(folderId);
|
|
30556
|
-
return runOrDiagnose(args, { account });
|
|
30557
|
-
});
|
|
30558
|
-
server2.registerTool("gog_drive_search", {
|
|
30559
|
-
description: "Search Google Drive files by full-text query.",
|
|
30560
|
-
annotations: { readOnlyHint: true },
|
|
30561
|
-
inputSchema: {
|
|
30562
|
-
query: external_exports.string().describe("Search query"),
|
|
30563
|
-
account: accountParam
|
|
30564
|
-
}
|
|
30565
|
-
}, async ({ query, account }) => {
|
|
30566
|
-
return runOrDiagnose(["drive", "search", query], { account });
|
|
30567
|
-
});
|
|
30568
|
-
server2.registerTool("gog_drive_get", {
|
|
30569
|
-
description: "Get metadata for a Google Drive file.",
|
|
30570
|
-
annotations: { readOnlyHint: true },
|
|
30571
|
-
inputSchema: {
|
|
30572
|
-
fileId: external_exports.string().describe("File ID"),
|
|
30573
|
-
account: accountParam
|
|
30574
|
-
}
|
|
30575
|
-
}, async ({ fileId, account }) => {
|
|
30576
|
-
return runOrDiagnose(["drive", "get", fileId], { account });
|
|
30577
|
-
});
|
|
30578
|
-
server2.registerTool("gog_drive_mkdir", {
|
|
30579
|
-
description: "Create a new folder in Google Drive.",
|
|
30580
|
-
annotations: { destructiveHint: false },
|
|
30581
|
-
inputSchema: {
|
|
30582
|
-
name: external_exports.string().describe("Folder name"),
|
|
30583
|
-
account: accountParam
|
|
30584
|
-
}
|
|
30585
|
-
}, async ({ name, account }) => {
|
|
30586
|
-
return runOrDiagnose(["drive", "mkdir", name], { account });
|
|
30587
|
-
});
|
|
30588
|
-
server2.registerTool("gog_drive_rename", {
|
|
30589
|
-
description: "Rename a file or folder in Google Drive.",
|
|
30590
|
-
annotations: { destructiveHint: true },
|
|
30591
|
-
inputSchema: {
|
|
30592
|
-
fileId: external_exports.string().describe("File or folder ID"),
|
|
30593
|
-
newName: external_exports.string().describe("New name"),
|
|
30594
|
-
account: accountParam
|
|
30595
|
-
}
|
|
30596
|
-
}, async ({ fileId, newName, account }) => {
|
|
30597
|
-
return runOrDiagnose(["drive", "rename", fileId, newName], { account });
|
|
30598
|
-
});
|
|
30599
|
-
server2.registerTool("gog_drive_move", {
|
|
30600
|
-
description: "Move a file to a different folder in Google Drive.",
|
|
30601
|
-
annotations: { destructiveHint: true },
|
|
30602
|
-
inputSchema: {
|
|
30603
|
-
fileId: external_exports.string().describe("File ID to move"),
|
|
30604
|
-
parentId: external_exports.string().describe("Destination folder ID"),
|
|
30605
|
-
account: accountParam
|
|
30606
|
-
}
|
|
30607
|
-
}, async ({ fileId, parentId, account }) => {
|
|
30608
|
-
return runOrDiagnose(["drive", "move", fileId, `--parent=${parentId}`], { account });
|
|
30609
|
-
});
|
|
30610
|
-
server2.registerTool("gog_drive_delete", {
|
|
30611
|
-
description: "Move a Google Drive file to trash.",
|
|
30612
|
-
annotations: { destructiveHint: true },
|
|
30613
|
-
inputSchema: {
|
|
30614
|
-
fileId: external_exports.string().describe("File ID to trash"),
|
|
30615
|
-
account: accountParam
|
|
30616
|
-
}
|
|
30617
|
-
}, async ({ fileId, account }) => {
|
|
30618
|
-
return runOrDiagnose(["drive", "delete", fileId], { account });
|
|
30619
|
-
});
|
|
30620
|
-
server2.registerTool("gog_drive_share", {
|
|
30621
|
-
description: "Share a Google Drive file or folder.",
|
|
30622
|
-
annotations: { destructiveHint: true },
|
|
30623
|
-
inputSchema: {
|
|
30624
|
-
fileId: external_exports.string().describe("File or folder ID"),
|
|
30625
|
-
to: external_exports.enum(["user", "anyone", "domain"]).describe("Share target type"),
|
|
30626
|
-
email: external_exports.string().optional().describe("User email (required when to=user)"),
|
|
30627
|
-
domain: external_exports.string().optional().describe("Domain (required when to=domain)"),
|
|
30628
|
-
role: external_exports.enum(["reader", "writer"]).optional().describe("Permission role (default: reader)"),
|
|
30629
|
-
account: accountParam
|
|
30630
|
-
}
|
|
30631
|
-
}, async ({ fileId, to, email: email3, domain: domain2, role, account }) => {
|
|
30632
|
-
const args = ["drive", "share", fileId, `--to=${to}`];
|
|
30633
|
-
if (email3) args.push(`--email=${email3}`);
|
|
30634
|
-
if (domain2) args.push(`--domain=${domain2}`);
|
|
30635
|
-
if (role) args.push(`--role=${role}`);
|
|
30636
|
-
return runOrDiagnose(args, { account });
|
|
30637
|
-
});
|
|
30638
|
-
server2.registerTool("gog_drive_run", {
|
|
30639
|
-
description: "Run any gog drive subcommand not covered by the other tools. Run `gog drive --help` for the full list of subcommands, or `gog drive <subcommand> --help` for flags on a specific subcommand.",
|
|
30640
|
-
annotations: { destructiveHint: true },
|
|
30641
|
-
inputSchema: {
|
|
30642
|
-
subcommand: external_exports.string().describe('The gog drive subcommand to run, e.g. "copy", "upload", "download", "permissions"'),
|
|
30643
|
-
args: external_exports.array(external_exports.string()).describe("Additional positional args and flags"),
|
|
30644
|
-
account: accountParam
|
|
30645
|
-
}
|
|
30646
|
-
}, async ({ subcommand, args, account }) => {
|
|
30647
|
-
return runOrDiagnose(["drive", subcommand, ...args], { account });
|
|
30648
|
-
});
|
|
30649
|
-
}
|
|
30650
|
-
|
|
30651
|
-
// ../gogcli-mcp/src/tools/gmail.ts
|
|
30652
|
-
function registerGmailTools(server2) {
|
|
30653
|
-
server2.registerTool("gog_gmail_search", {
|
|
30654
|
-
description: 'Search Gmail threads using Gmail query syntax (e.g. "from:alice subject:invoice is:unread").',
|
|
30655
|
-
annotations: { readOnlyHint: true },
|
|
30656
|
-
inputSchema: {
|
|
30657
|
-
query: external_exports.string().describe("Gmail search query"),
|
|
30658
|
-
max: external_exports.number().int().optional().describe("Max results to return (default: 10)"),
|
|
30659
|
-
account: accountParam
|
|
30660
|
-
}
|
|
30661
|
-
}, async ({ query, max, account }) => {
|
|
30662
|
-
const args = ["gmail", "search", query];
|
|
30663
|
-
if (max !== void 0) args.push(`--max=${max}`);
|
|
30664
|
-
return runOrDiagnose(args, { account });
|
|
30665
|
-
});
|
|
30666
|
-
server2.registerTool("gog_gmail_get", {
|
|
30667
|
-
description: "Get a Gmail message by ID.",
|
|
30668
|
-
annotations: { readOnlyHint: true },
|
|
30669
|
-
inputSchema: {
|
|
30670
|
-
messageId: external_exports.string().describe("Message ID"),
|
|
30671
|
-
format: external_exports.enum(["full", "metadata", "raw"]).optional().describe("Message format (default: full)"),
|
|
30672
|
-
account: accountParam
|
|
30673
|
-
}
|
|
30674
|
-
}, async ({ messageId, format, account }) => {
|
|
30675
|
-
const args = ["gmail", "get", messageId];
|
|
30676
|
-
if (format) args.push(`--format=${format}`);
|
|
30677
|
-
return runOrDiagnose(args, { account });
|
|
30678
|
-
});
|
|
30679
|
-
server2.registerTool("gog_gmail_send", {
|
|
30680
|
-
description: "Send an email.",
|
|
30681
|
-
annotations: { destructiveHint: true },
|
|
30682
|
-
inputSchema: {
|
|
30683
|
-
to: external_exports.string().describe("Recipient(s), comma-separated"),
|
|
30684
|
-
subject: external_exports.string().describe("Subject line"),
|
|
30685
|
-
body: external_exports.string().describe("Email body (plain text)"),
|
|
30686
|
-
cc: external_exports.string().optional().describe("CC recipients, comma-separated"),
|
|
30687
|
-
bcc: external_exports.string().optional().describe("BCC recipients, comma-separated"),
|
|
30688
|
-
replyToMessageId: external_exports.string().optional().describe("Message ID to reply to"),
|
|
30689
|
-
threadId: external_exports.string().optional().describe("Thread ID to reply within"),
|
|
30690
|
-
account: accountParam
|
|
30691
|
-
}
|
|
30692
|
-
}, async ({ to, subject, body, cc, bcc, replyToMessageId, threadId, account }) => {
|
|
30693
|
-
const args = ["gmail", "send", `--to=${to}`, `--subject=${subject}`, `--body=${body}`];
|
|
30694
|
-
if (cc) args.push(`--cc=${cc}`);
|
|
30695
|
-
if (bcc) args.push(`--bcc=${bcc}`);
|
|
30696
|
-
if (replyToMessageId) args.push(`--reply-to-message-id=${replyToMessageId}`);
|
|
30697
|
-
if (threadId) args.push(`--thread-id=${threadId}`);
|
|
30698
|
-
return runOrDiagnose(args, { account });
|
|
30699
|
-
});
|
|
30700
|
-
server2.registerTool("gog_gmail_run", {
|
|
30701
|
-
description: "Run any gog gmail subcommand not covered by the other tools. Run `gog gmail --help` for the full list of subcommands, or `gog gmail <subcommand> --help` for flags on a specific subcommand.",
|
|
30702
|
-
annotations: { destructiveHint: true },
|
|
30703
|
-
inputSchema: {
|
|
30704
|
-
subcommand: external_exports.string().describe('The gog gmail subcommand to run, e.g. "archive", "mark-read", "labels"'),
|
|
30705
|
-
args: external_exports.array(external_exports.string()).describe("Additional positional args and flags"),
|
|
30706
|
-
account: accountParam
|
|
30707
|
-
}
|
|
30708
|
-
}, async ({ subcommand, args, account }) => {
|
|
30709
|
-
return runOrDiagnose(["gmail", subcommand, ...args], { account });
|
|
30710
|
-
});
|
|
30711
|
-
}
|
|
30712
|
-
|
|
30713
|
-
// ../gogcli-mcp/src/tools/sheets.ts
|
|
30714
|
-
function registerSheetsTools(server2) {
|
|
30715
|
-
server2.registerTool("gog_sheets_get", {
|
|
30716
|
-
description: 'Read values from a Google Sheets range. Returns a JSON object with a "values" array of rows.',
|
|
30717
|
-
annotations: { readOnlyHint: true },
|
|
30718
|
-
inputSchema: {
|
|
30719
|
-
spreadsheetId: external_exports.string().describe("Spreadsheet ID (from the URL)"),
|
|
30720
|
-
range: external_exports.string().describe("Range in A1 notation, e.g. Sheet1!A1:B10 or a named range"),
|
|
30721
|
-
account: accountParam
|
|
30722
|
-
}
|
|
30723
|
-
}, async ({ spreadsheetId, range, account }) => {
|
|
30724
|
-
return runOrDiagnose(["sheets", "get", spreadsheetId, range], { account });
|
|
30725
|
-
});
|
|
30726
|
-
server2.registerTool("gog_sheets_update", {
|
|
30727
|
-
description: "Write values to a Google Sheets range, overwriting existing content.",
|
|
30728
|
-
annotations: { destructiveHint: true },
|
|
30729
|
-
inputSchema: {
|
|
30730
|
-
spreadsheetId: external_exports.string().describe("Spreadsheet ID (from the URL)"),
|
|
30731
|
-
range: external_exports.string().describe("Top-left cell or range in A1 notation, e.g. Sheet1!A1"),
|
|
30732
|
-
values: external_exports.array(external_exports.array(external_exports.string())).describe("2D array of values: outer array is rows, inner is columns"),
|
|
30733
|
-
account: accountParam
|
|
30734
|
-
}
|
|
30735
|
-
}, async ({ spreadsheetId, range, values, account }) => {
|
|
30736
|
-
return runOrDiagnose(
|
|
30737
|
-
["sheets", "update", spreadsheetId, range, `--values-json=${JSON.stringify(values)}`],
|
|
30738
|
-
{ account }
|
|
30739
|
-
);
|
|
30740
|
-
});
|
|
30741
|
-
server2.registerTool("gog_sheets_append", {
|
|
30742
|
-
description: "Append rows to a Google Sheet after the last row with data in the given range.",
|
|
30743
|
-
annotations: { destructiveHint: true },
|
|
30744
|
-
inputSchema: {
|
|
30745
|
-
spreadsheetId: external_exports.string().describe("Spreadsheet ID (from the URL)"),
|
|
30746
|
-
range: external_exports.string().describe("Range indicating which sheet/columns to append to, e.g. Sheet1!A:C"),
|
|
30747
|
-
values: external_exports.array(external_exports.array(external_exports.string())).describe("2D array of rows to append"),
|
|
30748
|
-
account: accountParam
|
|
30749
|
-
}
|
|
30750
|
-
}, async ({ spreadsheetId, range, values, account }) => {
|
|
30751
|
-
return runOrDiagnose(
|
|
30752
|
-
["sheets", "append", spreadsheetId, range, `--values-json=${JSON.stringify(values)}`],
|
|
30753
|
-
{ account }
|
|
30754
|
-
);
|
|
30755
|
-
});
|
|
30756
|
-
server2.registerTool("gog_sheets_clear", {
|
|
30757
|
-
description: "Clear all values in a Google Sheets range (formatting is preserved).",
|
|
30758
|
-
annotations: { destructiveHint: true },
|
|
30759
|
-
inputSchema: {
|
|
30760
|
-
spreadsheetId: external_exports.string().describe("Spreadsheet ID"),
|
|
30761
|
-
range: external_exports.string().describe("Range in A1 notation to clear"),
|
|
30762
|
-
account: accountParam
|
|
30763
|
-
}
|
|
30764
|
-
}, async ({ spreadsheetId, range, account }) => {
|
|
30765
|
-
return runOrDiagnose(["sheets", "clear", spreadsheetId, range], { account });
|
|
30766
|
-
});
|
|
30767
|
-
server2.registerTool("gog_sheets_metadata", {
|
|
30768
|
-
description: "Get spreadsheet metadata: title, sheet tabs, named ranges, and other properties.",
|
|
30769
|
-
annotations: { readOnlyHint: true },
|
|
30770
|
-
inputSchema: {
|
|
30771
|
-
spreadsheetId: external_exports.string().describe("Spreadsheet ID"),
|
|
30772
|
-
account: accountParam
|
|
30773
|
-
}
|
|
30774
|
-
}, async ({ spreadsheetId, account }) => {
|
|
30775
|
-
return runOrDiagnose(["sheets", "metadata", spreadsheetId], { account });
|
|
30776
|
-
});
|
|
30777
|
-
server2.registerTool("gog_sheets_create", {
|
|
30778
|
-
description: "Create a new Google Spreadsheet. Returns JSON with the new spreadsheetId and URL.",
|
|
30779
|
-
annotations: { destructiveHint: false },
|
|
30780
|
-
inputSchema: {
|
|
30781
|
-
title: external_exports.string().describe("Title for the new spreadsheet"),
|
|
30782
|
-
account: accountParam
|
|
30783
|
-
}
|
|
30784
|
-
}, async ({ title, account }) => {
|
|
30785
|
-
return runOrDiagnose(["sheets", "create", title], { account });
|
|
30786
|
-
});
|
|
30787
|
-
server2.registerTool("gog_sheets_find_replace", {
|
|
30788
|
-
description: "Find and replace text across an entire Google Spreadsheet.",
|
|
30789
|
-
annotations: { destructiveHint: true },
|
|
30790
|
-
inputSchema: {
|
|
30791
|
-
spreadsheetId: external_exports.string().describe("Spreadsheet ID"),
|
|
30792
|
-
find: external_exports.string().describe("Text to find"),
|
|
30793
|
-
replace: external_exports.string().describe("Replacement text"),
|
|
30794
|
-
account: accountParam
|
|
30795
|
-
}
|
|
30796
|
-
}, async ({ spreadsheetId, find, replace, account }) => {
|
|
30797
|
-
return runOrDiagnose(["sheets", "find-replace", spreadsheetId, find, replace], { account });
|
|
30798
|
-
});
|
|
30799
|
-
server2.registerTool("gog_sheets_run", {
|
|
30800
|
-
description: "Run any gog sheets subcommand not covered by the other tools. Run `gog sheets --help` for the full list of subcommands, or `gog sheets <subcommand> --help` for flags on a specific subcommand.",
|
|
30801
|
-
annotations: { destructiveHint: true },
|
|
30802
|
-
inputSchema: {
|
|
30803
|
-
subcommand: external_exports.string().describe('The gog sheets subcommand to run, e.g. "freeze", "add-tab", "rename-tab"'),
|
|
30804
|
-
args: external_exports.array(external_exports.string()).describe('Additional positional args and flags, e.g. ["<spreadsheetId>", "--rows=1"]'),
|
|
30805
|
-
account: accountParam
|
|
30806
|
-
}
|
|
30807
|
-
}, async ({ subcommand, args, account }) => {
|
|
30808
|
-
return runOrDiagnose(["sheets", subcommand, ...args], { account });
|
|
30809
|
-
});
|
|
30810
|
-
}
|
|
30811
|
-
|
|
30812
|
-
// ../gogcli-mcp/src/tools/tasks.ts
|
|
30813
|
-
function registerTasksTools(server2) {
|
|
30814
|
-
server2.registerTool("gog_tasks_lists", {
|
|
30815
|
-
description: "List all Google Task lists.",
|
|
30816
|
-
annotations: { readOnlyHint: true },
|
|
30817
|
-
inputSchema: {
|
|
30818
|
-
account: accountParam
|
|
30819
|
-
}
|
|
30820
|
-
}, async ({ account }) => {
|
|
30821
|
-
return runOrDiagnose(["tasks", "lists", "list"], { account });
|
|
30822
|
-
});
|
|
30823
|
-
server2.registerTool("gog_tasks_list", {
|
|
30824
|
-
description: "List tasks in a Google Task list.",
|
|
30825
|
-
annotations: { readOnlyHint: true },
|
|
30826
|
-
inputSchema: {
|
|
30827
|
-
tasklistId: external_exports.string().describe("Task list ID (use gog_tasks_lists to find IDs)"),
|
|
30828
|
-
account: accountParam
|
|
30829
|
-
}
|
|
30830
|
-
}, async ({ tasklistId, account }) => {
|
|
30831
|
-
return runOrDiagnose(["tasks", "list", tasklistId], { account });
|
|
30832
|
-
});
|
|
30833
|
-
server2.registerTool("gog_tasks_get", {
|
|
30834
|
-
description: "Get a specific task by ID.",
|
|
30835
|
-
annotations: { readOnlyHint: true },
|
|
30836
|
-
inputSchema: {
|
|
30837
|
-
tasklistId: external_exports.string().describe("Task list ID"),
|
|
30838
|
-
taskId: external_exports.string().describe("Task ID"),
|
|
30839
|
-
account: accountParam
|
|
30840
|
-
}
|
|
30841
|
-
}, async ({ tasklistId, taskId, account }) => {
|
|
30842
|
-
return runOrDiagnose(["tasks", "get", tasklistId, taskId], { account });
|
|
30843
|
-
});
|
|
30844
|
-
server2.registerTool("gog_tasks_add", {
|
|
30845
|
-
description: "Add a task to a Google Task list.",
|
|
30846
|
-
annotations: { destructiveHint: false },
|
|
30847
|
-
inputSchema: {
|
|
30848
|
-
tasklistId: external_exports.string().describe("Task list ID"),
|
|
30849
|
-
title: external_exports.string().describe("Task title"),
|
|
30850
|
-
notes: external_exports.string().optional().describe("Task notes/description"),
|
|
30851
|
-
due: external_exports.string().optional().describe("Due date (YYYY-MM-DD or RFC3339)"),
|
|
30852
|
-
account: accountParam
|
|
30853
|
-
}
|
|
30854
|
-
}, async ({ tasklistId, title, notes, due, account }) => {
|
|
30855
|
-
const args = ["tasks", "add", tasklistId, `--title=${title}`];
|
|
30856
|
-
if (notes) args.push(`--notes=${notes}`);
|
|
30857
|
-
if (due) args.push(`--due=${due}`);
|
|
30858
|
-
return runOrDiagnose(args, { account });
|
|
30859
|
-
});
|
|
30860
|
-
server2.registerTool("gog_tasks_done", {
|
|
30861
|
-
description: "Mark a task as completed.",
|
|
30862
|
-
annotations: { destructiveHint: true },
|
|
30863
|
-
inputSchema: {
|
|
30864
|
-
tasklistId: external_exports.string().describe("Task list ID"),
|
|
30865
|
-
taskId: external_exports.string().describe("Task ID"),
|
|
30866
|
-
account: accountParam
|
|
30867
|
-
}
|
|
30868
|
-
}, async ({ tasklistId, taskId, account }) => {
|
|
30869
|
-
return runOrDiagnose(["tasks", "done", tasklistId, taskId], { account });
|
|
30870
|
-
});
|
|
30871
|
-
server2.registerTool("gog_tasks_delete", {
|
|
30872
|
-
description: "Delete a task.",
|
|
30873
|
-
annotations: { destructiveHint: true },
|
|
30874
|
-
inputSchema: {
|
|
30875
|
-
tasklistId: external_exports.string().describe("Task list ID"),
|
|
30876
|
-
taskId: external_exports.string().describe("Task ID"),
|
|
30877
|
-
account: accountParam
|
|
30878
|
-
}
|
|
30879
|
-
}, async ({ tasklistId, taskId, account }) => {
|
|
30880
|
-
return runOrDiagnose(["tasks", "delete", tasklistId, taskId], { account });
|
|
30881
|
-
});
|
|
30882
|
-
server2.registerTool("gog_tasks_run", {
|
|
30883
|
-
description: "Run any gog tasks subcommand not covered by the other tools. Run `gog tasks --help` for the full list of subcommands, or `gog tasks <subcommand> --help` for flags on a specific subcommand.",
|
|
30884
|
-
annotations: { destructiveHint: true },
|
|
30885
|
-
inputSchema: {
|
|
30886
|
-
subcommand: external_exports.string().describe('The gog tasks subcommand to run, e.g. "update", "undo", "clear"'),
|
|
30887
|
-
args: external_exports.array(external_exports.string()).describe("Additional positional args and flags"),
|
|
30888
|
-
account: accountParam
|
|
30889
|
-
}
|
|
30890
|
-
}, async ({ subcommand, args, account }) => {
|
|
30891
|
-
return runOrDiagnose(["tasks", subcommand, ...args], { account });
|
|
30892
|
-
});
|
|
30893
|
-
}
|
|
30894
|
-
|
|
30895
30359
|
// ../gogcli-mcp/src/server.ts
|
|
30896
|
-
var VERSION = true ? "
|
|
30897
|
-
function
|
|
30898
|
-
|
|
30360
|
+
var VERSION = true ? "2.0.0" : "0.0.0";
|
|
30361
|
+
function createServer(options) {
|
|
30362
|
+
return new McpServer({
|
|
30899
30363
|
name: options?.name ?? "gogcli",
|
|
30900
30364
|
version: options?.version ?? VERSION
|
|
30901
30365
|
});
|
|
30902
|
-
registerAuthTools(server2);
|
|
30903
|
-
registerCalendarTools(server2);
|
|
30904
|
-
registerContactsTools(server2);
|
|
30905
|
-
registerDocsTools(server2);
|
|
30906
|
-
registerDriveTools(server2);
|
|
30907
|
-
registerGmailTools(server2);
|
|
30908
|
-
registerSheetsTools(server2);
|
|
30909
|
-
registerTasksTools(server2);
|
|
30910
|
-
return server2;
|
|
30911
30366
|
}
|
|
30912
30367
|
|
|
30913
30368
|
// src/tools/docs-extra.ts
|
|
@@ -31119,7 +30574,9 @@ function registerExtraDocsTools(server2) {
|
|
|
31119
30574
|
}
|
|
31120
30575
|
|
|
31121
30576
|
// src/index.ts
|
|
31122
|
-
var server =
|
|
30577
|
+
var server = createServer({ name: "gogcli-docs" });
|
|
30578
|
+
registerAuthTools(server);
|
|
30579
|
+
registerDocsTools(server);
|
|
31123
30580
|
registerExtraDocsTools(server);
|
|
31124
30581
|
var transport = new StdioServerTransport();
|
|
31125
30582
|
await server.connect(transport);
|