gogcli-mcp-slides 2.4.1 → 2.6.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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/dist/index.js +22 -1
- package/manifest.json +5 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/tools/slides-extra.ts +22 -0
- package/tests/tools/slides-extra.test.ts +23 -0
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
},
|
|
8
8
|
"metadata": {
|
|
9
9
|
"description": "Extended Google Slides for Claude via gogcli — auth + full Slides support (create, edit, export, templates, markdown)",
|
|
10
|
-
"version": "2.
|
|
10
|
+
"version": "2.6.0"
|
|
11
11
|
},
|
|
12
12
|
"plugins": [
|
|
13
13
|
{
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"displayName": "gogcli (Slides)",
|
|
16
16
|
"source": "./",
|
|
17
17
|
"description": "Extended Google Slides for Claude via gogcli — auth + full Slides support (create, edit, export, templates, markdown)",
|
|
18
|
-
"version": "2.
|
|
18
|
+
"version": "2.6.0",
|
|
19
19
|
"author": {
|
|
20
20
|
"name": "Chris Hall"
|
|
21
21
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gogcli-mcp-slides",
|
|
3
3
|
"displayName": "gogcli (Slides)",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.6.0",
|
|
5
5
|
"description": "Extended Google Slides for Claude via gogcli — auth + full Slides support (create, edit, export, templates, markdown)",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Chris Hall",
|
package/dist/index.js
CHANGED
|
@@ -31321,7 +31321,7 @@ function registerSlidesTools(server2) {
|
|
|
31321
31321
|
}
|
|
31322
31322
|
|
|
31323
31323
|
// ../gogcli-mcp/src/server.ts
|
|
31324
|
-
var VERSION = true ? "2.
|
|
31324
|
+
var VERSION = true ? "2.6.0" : "0.0.0";
|
|
31325
31325
|
function createServer(options) {
|
|
31326
31326
|
return new McpServer({
|
|
31327
31327
|
name: options?.name ?? "gogcli",
|
|
@@ -31389,6 +31389,27 @@ function registerExtraSlidesTools(server2) {
|
|
|
31389
31389
|
if (before) args.push(`--before=${before}`);
|
|
31390
31390
|
return runOrDiagnose(args, { account });
|
|
31391
31391
|
});
|
|
31392
|
+
server2.registerTool("gog_slides_insert_image", {
|
|
31393
|
+
description: "Place a local image on an existing slide at a given size and position. Unlike gog_slides_add_slide (which creates a new full-bleed image slide), this inserts the image onto a slide you already have. width is required; omit height to keep the image's aspect ratio.",
|
|
31394
|
+
inputSchema: {
|
|
31395
|
+
presentationId: external_exports.string().describe("Presentation ID"),
|
|
31396
|
+
slideId: external_exports.string().describe("Slide ID (object ID of the target slide)"),
|
|
31397
|
+
image: external_exports.string().describe("Path to the local image file"),
|
|
31398
|
+
width: external_exports.number().describe("Image width, in unit"),
|
|
31399
|
+
height: external_exports.number().optional().describe("Image height, in unit; omit to keep the image's aspect ratio"),
|
|
31400
|
+
x: external_exports.number().optional().describe("Left position of the image, in unit"),
|
|
31401
|
+
y: external_exports.number().optional().describe("Top position of the image, in unit"),
|
|
31402
|
+
unit: external_exports.enum(["PT", "EMU"]).optional().describe("Measurement unit for x/y/width/height (default: PT)"),
|
|
31403
|
+
account: accountParam
|
|
31404
|
+
}
|
|
31405
|
+
}, async ({ presentationId, slideId, image, width, height, x, y, unit, account }) => {
|
|
31406
|
+
const args = ["slides", "insert-image", presentationId, slideId, image, `--width=${width}`];
|
|
31407
|
+
if (height !== void 0) args.push(`--height=${height}`);
|
|
31408
|
+
if (x !== void 0) args.push(`--x=${x}`);
|
|
31409
|
+
if (y !== void 0) args.push(`--y=${y}`);
|
|
31410
|
+
if (unit) args.push(`--unit=${unit}`);
|
|
31411
|
+
return runOrDiagnose(args, { account });
|
|
31412
|
+
});
|
|
31392
31413
|
server2.registerTool("gog_slides_delete_slide", {
|
|
31393
31414
|
description: "Delete a slide from a Google Slides presentation.",
|
|
31394
31415
|
annotations: { destructiveHint: true },
|
package/manifest.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"manifest_version": "0.3",
|
|
4
4
|
"name": "gogcli-mcp-slides",
|
|
5
5
|
"display_name": "gogcli (Slides)",
|
|
6
|
-
"version": "2.
|
|
6
|
+
"version": "2.6.0",
|
|
7
7
|
"description": "Extended Google Slides for Claude via gogcli — auth + full Slides support (create, edit, export, templates, markdown)",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "Chris Hall",
|
|
@@ -105,6 +105,10 @@
|
|
|
105
105
|
"name": "gog_slides_add_slide",
|
|
106
106
|
"description": "Add a slide from a local image"
|
|
107
107
|
},
|
|
108
|
+
{
|
|
109
|
+
"name": "gog_slides_insert_image",
|
|
110
|
+
"description": "Place a sized, positioned local image on an existing slide"
|
|
111
|
+
},
|
|
108
112
|
{
|
|
109
113
|
"name": "gog_slides_list_slides",
|
|
110
114
|
"description": "List slides in a presentation"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gogcli-mcp-slides",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0",
|
|
4
4
|
"mcpName": "io.github.chrischall/gogcli-mcp-slides",
|
|
5
5
|
"description": "Extended Google Slides MCP server via gogcli — auth + full Slides support",
|
|
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-slides"
|
|
9
9
|
},
|
|
10
|
-
"version": "2.
|
|
10
|
+
"version": "2.6.0",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "gogcli-mcp-slides",
|
|
15
|
-
"version": "2.
|
|
15
|
+
"version": "2.6.0",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
18
18
|
},
|
|
@@ -64,6 +64,28 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
64
64
|
return runOrDiagnose(args, { account });
|
|
65
65
|
});
|
|
66
66
|
|
|
67
|
+
server.registerTool('gog_slides_insert_image', {
|
|
68
|
+
description: 'Place a local image on an existing slide at a given size and position. Unlike gog_slides_add_slide (which creates a new full-bleed image slide), this inserts the image onto a slide you already have. width is required; omit height to keep the image\'s aspect ratio.',
|
|
69
|
+
inputSchema: {
|
|
70
|
+
presentationId: z.string().describe('Presentation ID'),
|
|
71
|
+
slideId: z.string().describe('Slide ID (object ID of the target slide)'),
|
|
72
|
+
image: z.string().describe('Path to the local image file'),
|
|
73
|
+
width: z.number().describe('Image width, in unit'),
|
|
74
|
+
height: z.number().optional().describe('Image height, in unit; omit to keep the image\'s aspect ratio'),
|
|
75
|
+
x: z.number().optional().describe('Left position of the image, in unit'),
|
|
76
|
+
y: z.number().optional().describe('Top position of the image, in unit'),
|
|
77
|
+
unit: z.enum(['PT', 'EMU']).optional().describe('Measurement unit for x/y/width/height (default: PT)'),
|
|
78
|
+
account: accountParam,
|
|
79
|
+
},
|
|
80
|
+
}, async ({ presentationId, slideId, image, width, height, x, y, unit, account }) => {
|
|
81
|
+
const args = ['slides', 'insert-image', presentationId, slideId, image, `--width=${width}`];
|
|
82
|
+
if (height !== undefined) args.push(`--height=${height}`);
|
|
83
|
+
if (x !== undefined) args.push(`--x=${x}`);
|
|
84
|
+
if (y !== undefined) args.push(`--y=${y}`);
|
|
85
|
+
if (unit) args.push(`--unit=${unit}`);
|
|
86
|
+
return runOrDiagnose(args, { account });
|
|
87
|
+
});
|
|
88
|
+
|
|
67
89
|
server.registerTool('gog_slides_delete_slide', {
|
|
68
90
|
description: 'Delete a slide from a Google Slides presentation.',
|
|
69
91
|
annotations: { destructiveHint: true },
|
|
@@ -218,3 +218,26 @@ describe('gog_slides_replace_slide', () => {
|
|
|
218
218
|
);
|
|
219
219
|
});
|
|
220
220
|
});
|
|
221
|
+
|
|
222
|
+
// gog 0.23.0
|
|
223
|
+
describe('gog_slides_insert_image', () => {
|
|
224
|
+
it('inserts an image with the required width', async () => {
|
|
225
|
+
await handlers.get('gog_slides_insert_image')!({
|
|
226
|
+
presentationId: 'p1', slideId: 's1', image: '/tmp/i.png', width: 200,
|
|
227
|
+
});
|
|
228
|
+
expect(lib.runOrDiagnose).toHaveBeenCalledWith(
|
|
229
|
+
['slides', 'insert-image', 'p1', 's1', '/tmp/i.png', '--width=200'],
|
|
230
|
+
{ account: undefined },
|
|
231
|
+
);
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
it('passes height, position and unit', async () => {
|
|
235
|
+
await handlers.get('gog_slides_insert_image')!({
|
|
236
|
+
presentationId: 'p1', slideId: 's1', image: '/tmp/i.png', width: 200, height: 100, x: 50, y: 60, unit: 'PT', account: 'a@b.com',
|
|
237
|
+
});
|
|
238
|
+
expect(lib.runOrDiagnose).toHaveBeenCalledWith(
|
|
239
|
+
['slides', 'insert-image', 'p1', 's1', '/tmp/i.png', '--width=200', '--height=100', '--x=50', '--y=60', '--unit=PT'],
|
|
240
|
+
{ account: 'a@b.com' },
|
|
241
|
+
);
|
|
242
|
+
});
|
|
243
|
+
});
|