presentations-mcp 0.1.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.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,866 @@
1
+ #!/usr/bin/env node
2
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
5
+ import _PptxGenJS from 'pptxgenjs';
6
+ import { z } from 'zod';
7
+ import crypto from 'crypto';
8
+ import path from 'path';
9
+ import fs from 'fs';
10
+ const PptxGenJS = _PptxGenJS;
11
+ const presentations = new Map();
12
+ const server = new Server({
13
+ name: 'presentations-mcp',
14
+ version: '0.2.0',
15
+ }, {
16
+ capabilities: {
17
+ tools: {},
18
+ },
19
+ });
20
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
21
+ tools: [
22
+ {
23
+ name: 'create_presentation',
24
+ description: 'Create a new empty PowerPoint presentation. Returns a presentation ID used by all other tools.',
25
+ inputSchema: {
26
+ type: 'object',
27
+ properties: {
28
+ title: { type: 'string', description: 'Presentation title (metadata)' },
29
+ author: { type: 'string', description: 'Author name (metadata)' },
30
+ subject: { type: 'string', description: 'Subject (metadata)' },
31
+ description: { type: 'string', description: 'Presentation description (metadata)' },
32
+ width: { type: 'number', description: 'Slide width in inches (default 10)' },
33
+ height: { type: 'number', description: 'Slide height in inches (default 7.5)' },
34
+ },
35
+ },
36
+ },
37
+ {
38
+ name: 'get_presentation_info',
39
+ description: 'Get metadata and slide list for a presentation.',
40
+ inputSchema: {
41
+ type: 'object',
42
+ properties: {
43
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
44
+ },
45
+ required: ['presentation_id'],
46
+ },
47
+ },
48
+ {
49
+ name: 'add_slide',
50
+ description: 'Add a new slide to the presentation. Returns the 1-based slide number used to reference this slide in other tools.',
51
+ inputSchema: {
52
+ type: 'object',
53
+ properties: {
54
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
55
+ title: { type: 'string', description: 'Optional slide title (added as a text box at top)' },
56
+ notes: { type: 'string', description: 'Optional speaker notes for this slide' },
57
+ slide_number: { type: 'number', description: 'Optional position to insert the slide (1-based). Appends to end if omitted.' },
58
+ transition_type: { type: 'string', enum: ['fade', 'push', 'wipe', 'split', 'cut', 'dissolve', 'random', 'uncover', 'cover', 'pull', 'zoom', 'doors', 'window', 'plus', 'cube', 'rotor', 'pan', 'switch', 'ferris', 'pixelate', 'blinds', 'checker', 'circle', 'comb', 'flash', 'diamond', 'wedge', 'wheel', 'grid', 'newsflash', 'ripple', 'glitter'], description: 'Transition effect for this slide' },
59
+ transition_duration: { type: 'number', description: 'Transition duration in seconds (default 0.5)' },
60
+ transition_advance_after: { type: 'number', description: 'Auto-advance after this many seconds (omit for manual advance)' },
61
+ },
62
+ required: ['presentation_id'],
63
+ },
64
+ },
65
+ {
66
+ name: 'list_slides',
67
+ description: 'List all slides in a presentation with their numbers, titles, and notes.',
68
+ inputSchema: {
69
+ type: 'object',
70
+ properties: {
71
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
72
+ },
73
+ required: ['presentation_id'],
74
+ },
75
+ },
76
+ {
77
+ name: 'remove_slide',
78
+ description: 'Remove a slide from the presentation by slide number. Remaining slides are renumbered automatically.',
79
+ inputSchema: {
80
+ type: 'object',
81
+ properties: {
82
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
83
+ slide_number: { type: 'number', description: '1-based slide number to remove' },
84
+ },
85
+ required: ['presentation_id', 'slide_number'],
86
+ },
87
+ },
88
+ {
89
+ name: 'set_slide_background',
90
+ description: 'Set the background color or image of a specific slide.',
91
+ inputSchema: {
92
+ type: 'object',
93
+ properties: {
94
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
95
+ slide_number: { type: 'number', description: '1-based slide number from add_slide' },
96
+ color: { type: 'string', description: 'Fill color hex (e.g. "4472C4" or "FF0000")' },
97
+ },
98
+ required: ['presentation_id', 'slide_number'],
99
+ },
100
+ },
101
+ {
102
+ name: 'set_slide_transition',
103
+ description: 'Set or update the transition effect for a specific slide.',
104
+ inputSchema: {
105
+ type: 'object',
106
+ properties: {
107
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
108
+ slide_number: { type: 'number', description: '1-based slide number from add_slide' },
109
+ type: { type: 'string', enum: ['fade', 'push', 'wipe', 'split', 'cut', 'dissolve', 'random', 'uncover', 'cover', 'pull', 'zoom', 'doors', 'window', 'plus', 'cube', 'rotor', 'pan', 'switch', 'ferris', 'pixelate', 'blinds', 'checker', 'circle', 'comb', 'flash', 'diamond', 'wedge', 'wheel', 'grid', 'newsflash', 'ripple', 'glitter'], description: 'Transition effect type' },
110
+ duration: { type: 'number', description: 'Transition duration in seconds (default 0.5)' },
111
+ advance_after: { type: 'number', description: 'Auto-advance after this many seconds (omit for manual advance)' },
112
+ },
113
+ required: ['presentation_id', 'slide_number', 'type'],
114
+ },
115
+ },
116
+ {
117
+ name: 'add_text',
118
+ description: 'Add a text box to a slide. Supports rich text with formatting options.',
119
+ inputSchema: {
120
+ type: 'object',
121
+ properties: {
122
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
123
+ slide_number: { type: 'number', description: '1-based slide number from add_slide' },
124
+ text: { type: 'string', description: 'Text content' },
125
+ x: { type: 'number', description: 'X position in inches (default 0.5)' },
126
+ y: { type: 'number', description: 'Y position in inches' },
127
+ w: { type: 'number', description: 'Width in inches (default 9)' },
128
+ h: { type: 'number', description: 'Height in inches (default 1)' },
129
+ font_size: { type: 'number', description: 'Font size in points (default 24)' },
130
+ font_color: { type: 'string', description: 'Font color hex (e.g. "333333")' },
131
+ bold: { type: 'boolean', description: 'Bold text' },
132
+ italic: { type: 'boolean', description: 'Italic text' },
133
+ underline: { type: 'boolean', description: 'Underline text' },
134
+ align: { type: 'string', enum: ['left', 'center', 'right', 'justify'], description: 'Text horizontal alignment' },
135
+ valign: { type: 'string', enum: ['top', 'middle', 'bottom'], description: 'Text vertical alignment' },
136
+ font_name: { type: 'string', description: 'Font family name (default "Arial")' },
137
+ },
138
+ required: ['presentation_id', 'slide_number', 'text', 'y'],
139
+ },
140
+ },
141
+ {
142
+ name: 'add_hyperlink',
143
+ description: 'Add a clickable hyperlink text box to a slide.',
144
+ inputSchema: {
145
+ type: 'object',
146
+ properties: {
147
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
148
+ slide_number: { type: 'number', description: '1-based slide number from add_slide' },
149
+ text: { type: 'string', description: 'Display text for the hyperlink' },
150
+ url: { type: 'string', description: 'The URL to link to (e.g. https://example.com)' },
151
+ tooltip: { type: 'string', description: 'Tooltip text shown on hover' },
152
+ x: { type: 'number', description: 'X position in inches (default 0.5)' },
153
+ y: { type: 'number', description: 'Y position in inches' },
154
+ w: { type: 'number', description: 'Width in inches (default 4)' },
155
+ h: { type: 'number', description: 'Height in inches (default 0.5)' },
156
+ font_size: { type: 'number', description: 'Font size in points (default 14)' },
157
+ font_color: { type: 'string', description: 'Font color hex (default "0563C1")' },
158
+ font_name: { type: 'string', description: 'Font family name (default "Arial")' },
159
+ },
160
+ required: ['presentation_id', 'slide_number', 'text', 'url', 'y'],
161
+ },
162
+ },
163
+ {
164
+ name: 'add_image',
165
+ description: 'Add an image to a slide from a local file path or base64 data. For remote URLs, download the image first and provide the local path.',
166
+ inputSchema: {
167
+ type: 'object',
168
+ properties: {
169
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
170
+ slide_number: { type: 'number', description: '1-based slide number from add_slide' },
171
+ path: { type: 'string', description: 'Local file path to the image' },
172
+ data: { type: 'string', description: 'Base64-encoded image data (alternative to path)' },
173
+ x: { type: 'number', description: 'X position in inches (default 0.5)' },
174
+ y: { type: 'number', description: 'Y position in inches' },
175
+ w: { type: 'number', description: 'Width in inches' },
176
+ h: { type: 'number', description: 'Height in inches' },
177
+ },
178
+ required: ['presentation_id', 'slide_number', 'y'],
179
+ },
180
+ },
181
+ {
182
+ name: 'add_video',
183
+ description: 'Add a video to a slide from a local file path.',
184
+ inputSchema: {
185
+ type: 'object',
186
+ properties: {
187
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
188
+ slide_number: { type: 'number', description: '1-based slide number from add_slide' },
189
+ path: { type: 'string', description: 'Local file path to the video file (e.g. .mp4)' },
190
+ x: { type: 'number', description: 'X position in inches (default 0.5)' },
191
+ y: { type: 'number', description: 'Y position in inches' },
192
+ w: { type: 'number', description: 'Width in inches (default 6)' },
193
+ h: { type: 'number', description: 'Height in inches (default 4)' },
194
+ start_seconds: { type: 'number', description: 'Start time in seconds' },
195
+ end_seconds: { type: 'number', description: 'End time in seconds' },
196
+ },
197
+ required: ['presentation_id', 'slide_number', 'path', 'y'],
198
+ },
199
+ },
200
+ {
201
+ name: 'add_table',
202
+ description: 'Add a table to a slide with header row styling.',
203
+ inputSchema: {
204
+ type: 'object',
205
+ properties: {
206
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
207
+ slide_number: { type: 'number', description: '1-based slide number from add_slide' },
208
+ rows: {
209
+ type: 'array',
210
+ items: {
211
+ type: 'array',
212
+ items: { type: 'string' },
213
+ description: 'A row of cells',
214
+ },
215
+ description: '2D array of cell text. First row is treated as header if header_row=true.',
216
+ },
217
+ x: { type: 'number', description: 'X position in inches (default 0.5)' },
218
+ y: { type: 'number', description: 'Y position in inches' },
219
+ w: { type: 'number', description: 'Width in inches (default 9)' },
220
+ header_row: { type: 'boolean', description: 'Style first row as header (default true)' },
221
+ font_size: { type: 'number', description: 'Font size in points (default 14)' },
222
+ border_color: { type: 'string', description: 'Border color hex (default "CCCCCC")' },
223
+ header_bg: { type: 'string', description: 'Header background color hex (default "4472C4")' },
224
+ header_color: { type: 'string', description: 'Header text color hex (default "FFFFFF")' },
225
+ },
226
+ required: ['presentation_id', 'slide_number', 'rows', 'y'],
227
+ },
228
+ },
229
+ {
230
+ name: 'add_shape',
231
+ description: 'Add a shape (rectangle, ellipse, triangle, line, arrow, etc.) to a slide.',
232
+ inputSchema: {
233
+ type: 'object',
234
+ properties: {
235
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
236
+ slide_number: { type: 'number', description: '1-based slide number from add_slide' },
237
+ type: {
238
+ type: 'string',
239
+ enum: ['rect', 'ellipse', 'triangle', 'line', 'rightArrow', 'leftArrow', 'diamond', 'pentagon', 'hexagon', 'cloud'],
240
+ description: 'Shape type',
241
+ },
242
+ x: { type: 'number', description: 'X position in inches (default 0.5)' },
243
+ y: { type: 'number', description: 'Y position in inches' },
244
+ w: { type: 'number', description: 'Width in inches (default 2)' },
245
+ h: { type: 'number', description: 'Height in inches (default 2)' },
246
+ fill_color: { type: 'string', description: 'Fill color hex (e.g. "4472C4")' },
247
+ line_color: { type: 'string', description: 'Line/border color hex' },
248
+ line_width: { type: 'number', description: 'Line width in points' },
249
+ },
250
+ required: ['presentation_id', 'slide_number', 'type', 'y'],
251
+ },
252
+ },
253
+ {
254
+ name: 'add_chart',
255
+ description: 'Add a chart (bar, line, pie, column) to a slide.',
256
+ inputSchema: {
257
+ type: 'object',
258
+ properties: {
259
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
260
+ slide_number: { type: 'number', description: '1-based slide number from add_slide' },
261
+ type: { type: 'string', enum: ['bar', 'line', 'pie', 'column'], description: 'Chart type' },
262
+ labels: { type: 'array', items: { type: 'string' }, description: 'Category labels' },
263
+ values: { type: 'array', items: { type: 'number' }, description: 'Data values' },
264
+ series_name: { type: 'string', description: 'Series name for legend (default "Series 1")' },
265
+ x: { type: 'number', description: 'X position in inches (default 0.5)' },
266
+ y: { type: 'number', description: 'Y position in inches' },
267
+ w: { type: 'number', description: 'Width in inches (default 9)' },
268
+ h: { type: 'number', description: 'Height in inches (default 5)' },
269
+ show_legend: { type: 'boolean', description: 'Show legend (default true)' },
270
+ show_title: { type: 'boolean', description: 'Show chart title (default false)' },
271
+ chart_title: { type: 'string', description: 'Chart title text' },
272
+ },
273
+ required: ['presentation_id', 'slide_number', 'type', 'labels', 'values', 'y'],
274
+ },
275
+ },
276
+ {
277
+ name: 'add_bullet_points',
278
+ description: 'Add a bullet point list to a slide.',
279
+ inputSchema: {
280
+ type: 'object',
281
+ properties: {
282
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
283
+ slide_number: { type: 'number', description: '1-based slide number from add_slide' },
284
+ items: { type: 'array', items: { type: 'string' }, description: 'Bullet point items' },
285
+ x: { type: 'number', description: 'X position in inches (default 0.5)' },
286
+ y: { type: 'number', description: 'Y position in inches' },
287
+ w: { type: 'number', description: 'Width in inches (default 9)' },
288
+ h: { type: 'number', description: 'Height in inches (default 4)' },
289
+ font_size: { type: 'number', description: 'Font size in points (default 18)' },
290
+ font_color: { type: 'string', description: 'Font color hex (default "333333")' },
291
+ bullet_color: { type: 'string', description: 'Bullet point color hex' },
292
+ },
293
+ required: ['presentation_id', 'slide_number', 'items', 'y'],
294
+ },
295
+ },
296
+ {
297
+ name: 'add_notes',
298
+ description: 'Add or update speaker notes for a specific slide.',
299
+ inputSchema: {
300
+ type: 'object',
301
+ properties: {
302
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
303
+ slide_number: { type: 'number', description: '1-based slide number from add_slide' },
304
+ notes: { type: 'string', description: 'Speaker notes text content' },
305
+ },
306
+ required: ['presentation_id', 'slide_number', 'notes'],
307
+ },
308
+ },
309
+ {
310
+ name: 'add_slide_numbers',
311
+ description: 'Add slide number to the footer of each slide in the presentation.',
312
+ inputSchema: {
313
+ type: 'object',
314
+ properties: {
315
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
316
+ x: { type: 'number', description: 'X position in inches (default 8.5)' },
317
+ y: { type: 'number', description: 'Y position in inches (default 6.8)' },
318
+ font_size: { type: 'number', description: 'Font size in points (default 10)' },
319
+ font_color: { type: 'string', description: 'Font color hex (default "999999")' },
320
+ },
321
+ required: ['presentation_id'],
322
+ },
323
+ },
324
+ {
325
+ name: 'save_presentation',
326
+ description: 'Save the PowerPoint presentation to a .pptx file and return the file path.',
327
+ inputSchema: {
328
+ type: 'object',
329
+ properties: {
330
+ presentation_id: { type: 'string', description: 'ID from create_presentation' },
331
+ output_path: { type: 'string', description: 'Full file path (including .pptx). Defaults to presentation name in current directory.' },
332
+ },
333
+ required: ['presentation_id'],
334
+ },
335
+ },
336
+ ],
337
+ }));
338
+ function textContent(text) {
339
+ return { type: 'text', text };
340
+ }
341
+ function okResult(data) {
342
+ return { content: [textContent(JSON.stringify(data))] };
343
+ }
344
+ function textResult(message) {
345
+ return { content: [textContent(message)] };
346
+ }
347
+ function errorResult(message) {
348
+ return { content: [textContent(`Error: ${message}`)], isError: true };
349
+ }
350
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
351
+ const { name, arguments: args } = request.params;
352
+ try {
353
+ switch (name) {
354
+ case 'create_presentation':
355
+ return handleCreatePresentation(args ?? {});
356
+ case 'get_presentation_info':
357
+ return handleGetPresentationInfo(args ?? {});
358
+ case 'add_slide':
359
+ return handleAddSlide(args ?? {});
360
+ case 'list_slides':
361
+ return handleListSlides(args ?? {});
362
+ case 'remove_slide':
363
+ return handleRemoveSlide(args ?? {});
364
+ case 'set_slide_background':
365
+ return handleSetSlideBackground(args ?? {});
366
+ case 'set_slide_transition':
367
+ return handleSetSlideTransition(args ?? {});
368
+ case 'add_text':
369
+ return handleAddText(args ?? {});
370
+ case 'add_hyperlink':
371
+ return handleAddHyperlink(args ?? {});
372
+ case 'add_image':
373
+ return handleAddImage(args ?? {});
374
+ case 'add_video':
375
+ return handleAddVideo(args ?? {});
376
+ case 'add_table':
377
+ return handleAddTable(args ?? {});
378
+ case 'add_shape':
379
+ return handleAddShape(args ?? {});
380
+ case 'add_chart':
381
+ return handleAddChart(args ?? {});
382
+ case 'add_bullet_points':
383
+ return handleAddBulletPoints(args ?? {});
384
+ case 'add_notes':
385
+ return handleAddNotes(args ?? {});
386
+ case 'add_slide_numbers':
387
+ return handleAddSlideNumbers(args ?? {});
388
+ case 'save_presentation':
389
+ return handleSavePresentation(args ?? {});
390
+ default:
391
+ return errorResult(`Unknown tool: ${name}`);
392
+ }
393
+ }
394
+ catch (e) {
395
+ const msg = e instanceof Error ? e.message : String(e);
396
+ return errorResult(msg);
397
+ }
398
+ });
399
+ function getPresentation(id) {
400
+ const entry = presentations.get(id);
401
+ if (!entry)
402
+ throw new Error(`Presentation not found: ${id}`);
403
+ return entry;
404
+ }
405
+ function getSlide(presId, slideNumber) {
406
+ const entry = getPresentation(presId);
407
+ if (slideNumber < 1 || slideNumber > entry.slides.length) {
408
+ throw new Error(`Slide number ${slideNumber} not found. Presentation has ${entry.slides.length} slide(s).`);
409
+ }
410
+ const slides = entry.pres.slides ?? [];
411
+ return slides[slideNumber - 1];
412
+ }
413
+ function handleCreatePresentation(args) {
414
+ const schema = z.object({
415
+ title: z.string().optional(),
416
+ author: z.string().optional(),
417
+ subject: z.string().optional(),
418
+ description: z.string().optional(),
419
+ width: z.number().optional(),
420
+ height: z.number().optional(),
421
+ });
422
+ const { title, author, subject, description, width, height } = schema.parse(args);
423
+ const pres = new PptxGenJS();
424
+ if (title)
425
+ pres.title = title;
426
+ if (author)
427
+ pres.author = author;
428
+ if (subject)
429
+ pres.subject = subject;
430
+ if (description)
431
+ pres.description = description;
432
+ if (width && height) {
433
+ pres.defineLayout({ name: 'CUSTOM', width, height });
434
+ pres.layout = 'CUSTOM';
435
+ }
436
+ const id = crypto.randomUUID();
437
+ presentations.set(id, { pres, name: title ?? 'presentation', slides: [] });
438
+ return okResult({ presentation_id: id });
439
+ }
440
+ function handleGetPresentationInfo(args) {
441
+ const schema = z.object({ presentation_id: z.string() });
442
+ const { presentation_id } = schema.parse(args);
443
+ const entry = getPresentation(presentation_id);
444
+ return okResult({
445
+ title: entry.pres.title ?? '',
446
+ author: entry.pres.author ?? '',
447
+ subject: entry.pres.subject ?? '',
448
+ slide_count: entry.slides.length,
449
+ slides: entry.slides.map((s, i) => ({
450
+ number: i + 1,
451
+ title: s.title ?? '',
452
+ has_notes: !!s.notes,
453
+ })),
454
+ });
455
+ }
456
+ function handleAddSlide(args) {
457
+ const schema = z.object({
458
+ presentation_id: z.string(),
459
+ title: z.string().optional(),
460
+ notes: z.string().optional(),
461
+ slide_number: z.number().optional(),
462
+ transition_type: z.string().optional(),
463
+ transition_duration: z.number().optional(),
464
+ transition_advance_after: z.number().optional(),
465
+ });
466
+ const opts = schema.parse(args);
467
+ const entry = getPresentation(opts.presentation_id);
468
+ const slideOpts = {};
469
+ if (opts.transition_type) {
470
+ slideOpts.transition = { type: opts.transition_type };
471
+ if (opts.transition_duration)
472
+ slideOpts.transition.duration = opts.transition_duration;
473
+ if (opts.transition_advance_after)
474
+ slideOpts.transition.advanceAfterTime = opts.transition_advance_after;
475
+ }
476
+ let slide;
477
+ if (opts.slide_number !== undefined) {
478
+ slide = entry.pres.addSlide(opts.slide_number);
479
+ }
480
+ else {
481
+ slide = entry.pres.addSlide(slideOpts);
482
+ }
483
+ const slideInfo = { title: opts.title, notes: opts.notes };
484
+ if (opts.slide_number !== undefined) {
485
+ entry.slides.splice(opts.slide_number - 1, 0, slideInfo);
486
+ }
487
+ else {
488
+ entry.slides.push(slideInfo);
489
+ }
490
+ if (opts.title) {
491
+ slide.addText(opts.title, {
492
+ x: 0.5,
493
+ y: 0.3,
494
+ w: 9,
495
+ h: 0.8,
496
+ fontSize: 32,
497
+ fontFace: 'Arial',
498
+ bold: true,
499
+ color: '333333',
500
+ align: 'left',
501
+ });
502
+ }
503
+ if (opts.notes) {
504
+ slide.addNotes(opts.notes);
505
+ }
506
+ return okResult({ slide_number: entry.slides.length });
507
+ }
508
+ function handleListSlides(args) {
509
+ const schema = z.object({ presentation_id: z.string() });
510
+ const { presentation_id } = schema.parse(args);
511
+ const entry = getPresentation(presentation_id);
512
+ return okResult({
513
+ slide_count: entry.slides.length,
514
+ slides: entry.slides.map((s, i) => ({
515
+ number: i + 1,
516
+ title: s.title ?? '',
517
+ notes: s.notes ?? '',
518
+ })),
519
+ });
520
+ }
521
+ function handleRemoveSlide(args) {
522
+ const schema = z.object({
523
+ presentation_id: z.string(),
524
+ slide_number: z.number(),
525
+ });
526
+ const { presentation_id, slide_number } = schema.parse(args);
527
+ const entry = getPresentation(presentation_id);
528
+ if (slide_number < 1 || slide_number > entry.slides.length) {
529
+ throw new Error(`Slide number ${slide_number} not found. Presentation has ${entry.slides.length} slide(s).`);
530
+ }
531
+ const slides = entry.pres.slides ?? [];
532
+ slides.splice(slide_number - 1, 1);
533
+ entry.slides.splice(slide_number - 1, 1);
534
+ return okResult({ removed_slide: slide_number, remaining_slides: entry.slides.length });
535
+ }
536
+ function handleSetSlideBackground(args) {
537
+ const schema = z.object({
538
+ presentation_id: z.string(),
539
+ slide_number: z.number(),
540
+ color: z.string().optional(),
541
+ });
542
+ const { presentation_id, slide_number, color } = schema.parse(args);
543
+ const slide = getSlide(presentation_id, slide_number);
544
+ if (color) {
545
+ slide.background = { fill: color };
546
+ }
547
+ return textResult('Background set');
548
+ }
549
+ function handleSetSlideTransition(args) {
550
+ const schema = z.object({
551
+ presentation_id: z.string(),
552
+ slide_number: z.number(),
553
+ type: z.string(),
554
+ duration: z.number().optional(),
555
+ advance_after: z.number().optional(),
556
+ });
557
+ const opts = schema.parse(args);
558
+ const slide = getSlide(opts.presentation_id, opts.slide_number);
559
+ const transition = { type: opts.type };
560
+ if (opts.duration)
561
+ transition.duration = opts.duration;
562
+ if (opts.advance_after)
563
+ transition.advanceAfterTime = opts.advance_after;
564
+ slide.transition = transition;
565
+ return textResult('Transition set');
566
+ }
567
+ function handleAddText(args) {
568
+ const schema = z.object({
569
+ presentation_id: z.string(),
570
+ slide_number: z.number(),
571
+ text: z.string(),
572
+ x: z.number().optional().default(0.5),
573
+ y: z.number(),
574
+ w: z.number().optional().default(9),
575
+ h: z.number().optional().default(1),
576
+ font_size: z.number().optional().default(24),
577
+ font_color: z.string().optional(),
578
+ bold: z.boolean().optional(),
579
+ italic: z.boolean().optional(),
580
+ underline: z.boolean().optional(),
581
+ align: z.enum(['left', 'center', 'right', 'justify']).optional().default('left'),
582
+ valign: z.enum(['top', 'middle', 'bottom']).optional().default('top'),
583
+ font_name: z.string().optional(),
584
+ });
585
+ const opts = schema.parse(args);
586
+ const slide = getSlide(opts.presentation_id, opts.slide_number);
587
+ const textOpts = {
588
+ x: opts.x, y: opts.y, w: opts.w, h: opts.h,
589
+ fontSize: opts.font_size, align: opts.align, valign: opts.valign,
590
+ };
591
+ if (opts.font_color)
592
+ textOpts.color = opts.font_color;
593
+ if (opts.bold)
594
+ textOpts.bold = true;
595
+ if (opts.italic)
596
+ textOpts.italic = true;
597
+ if (opts.underline)
598
+ textOpts.underline = true;
599
+ if (opts.font_name)
600
+ textOpts.fontFace = opts.font_name;
601
+ slide.addText(opts.text, textOpts);
602
+ return textResult('Text added');
603
+ }
604
+ function handleAddHyperlink(args) {
605
+ const schema = z.object({
606
+ presentation_id: z.string(),
607
+ slide_number: z.number(),
608
+ text: z.string(),
609
+ url: z.string(),
610
+ tooltip: z.string().optional(),
611
+ x: z.number().optional().default(0.5),
612
+ y: z.number(),
613
+ w: z.number().optional().default(4),
614
+ h: z.number().optional().default(0.5),
615
+ font_size: z.number().optional().default(14),
616
+ font_color: z.string().optional().default('0563C1'),
617
+ font_name: z.string().optional(),
618
+ });
619
+ const opts = schema.parse(args);
620
+ const slide = getSlide(opts.presentation_id, opts.slide_number);
621
+ const textOpts = {
622
+ x: opts.x, y: opts.y, w: opts.w, h: opts.h,
623
+ fontSize: opts.font_size, fontFace: opts.font_name ?? 'Arial',
624
+ color: opts.font_color, underline: true,
625
+ hyperlink: { url: opts.url, tooltip: opts.tooltip ?? opts.url },
626
+ };
627
+ slide.addText(opts.text, textOpts);
628
+ return textResult('Hyperlink added');
629
+ }
630
+ function handleAddImage(args) {
631
+ const schema = z.object({
632
+ presentation_id: z.string(),
633
+ slide_number: z.number(),
634
+ path: z.string().optional(),
635
+ data: z.string().optional(),
636
+ x: z.number().optional().default(0.5),
637
+ y: z.number(),
638
+ w: z.number().optional(),
639
+ h: z.number().optional(),
640
+ });
641
+ const opts = schema.parse(args);
642
+ const slide = getSlide(opts.presentation_id, opts.slide_number);
643
+ if (!opts.path && !opts.data) {
644
+ throw new Error('Either path or data must be provided for image');
645
+ }
646
+ const imgOpts = { x: opts.x, y: opts.y };
647
+ if (opts.w)
648
+ imgOpts.w = opts.w;
649
+ if (opts.h)
650
+ imgOpts.h = opts.h;
651
+ if (opts.path)
652
+ imgOpts.path = opts.path;
653
+ if (opts.data)
654
+ imgOpts.data = opts.data;
655
+ slide.addImage(imgOpts);
656
+ return textResult('Image added');
657
+ }
658
+ function handleAddVideo(args) {
659
+ const schema = z.object({
660
+ presentation_id: z.string(),
661
+ slide_number: z.number(),
662
+ path: z.string(),
663
+ x: z.number().optional().default(0.5),
664
+ y: z.number(),
665
+ w: z.number().optional().default(6),
666
+ h: z.number().optional().default(4),
667
+ start_seconds: z.number().optional(),
668
+ end_seconds: z.number().optional(),
669
+ });
670
+ const opts = schema.parse(args);
671
+ const slide = getSlide(opts.presentation_id, opts.slide_number);
672
+ if (!fs.existsSync(opts.path)) {
673
+ throw new Error(`Video file not found: ${opts.path}`);
674
+ }
675
+ const mediaOpts = {
676
+ type: 'video', path: opts.path, x: opts.x, y: opts.y,
677
+ w: opts.w, h: opts.h,
678
+ };
679
+ if (opts.start_seconds)
680
+ mediaOpts.startTime = opts.start_seconds;
681
+ if (opts.end_seconds)
682
+ mediaOpts.endTime = opts.end_seconds;
683
+ slide.addMedia(mediaOpts);
684
+ return textResult('Video added');
685
+ }
686
+ function handleAddTable(args) {
687
+ const schema = z.object({
688
+ presentation_id: z.string(),
689
+ slide_number: z.number(),
690
+ rows: z.array(z.array(z.string())),
691
+ x: z.number().optional().default(0.5),
692
+ y: z.number(),
693
+ w: z.number().optional().default(9),
694
+ header_row: z.boolean().optional().default(true),
695
+ font_size: z.number().optional().default(14),
696
+ border_color: z.string().optional().default('CCCCCC'),
697
+ header_bg: z.string().optional().default('4472C4'),
698
+ header_color: z.string().optional().default('FFFFFF'),
699
+ });
700
+ const opts = schema.parse(args);
701
+ const slide = getSlide(opts.presentation_id, opts.slide_number);
702
+ const headerOpts = {
703
+ fill: { color: opts.header_bg },
704
+ color: opts.header_color,
705
+ bold: true,
706
+ fontSize: opts.font_size,
707
+ fontFace: 'Arial',
708
+ align: 'center',
709
+ valign: 'middle',
710
+ border: { type: 'solid', color: opts.border_color, pt: 1 },
711
+ };
712
+ const cellOpts = {
713
+ fontSize: opts.font_size,
714
+ fontFace: 'Arial',
715
+ color: '333333',
716
+ border: { type: 'solid', color: opts.border_color, pt: 0.5 },
717
+ valign: 'middle',
718
+ margin: [4, 6, 4, 6],
719
+ };
720
+ const tableRows = opts.rows.map((row, idx) => {
721
+ const isHeader = opts.header_row && idx === 0;
722
+ return row.map(cell => ({
723
+ text: cell,
724
+ options: isHeader ? headerOpts : cellOpts,
725
+ }));
726
+ });
727
+ slide.addTable(tableRows, { x: opts.x, y: opts.y, w: opts.w, margin: 0 });
728
+ return textResult('Table added');
729
+ }
730
+ function handleAddShape(args) {
731
+ const schema = z.object({
732
+ presentation_id: z.string(),
733
+ slide_number: z.number(),
734
+ type: z.enum(['rect', 'ellipse', 'triangle', 'line', 'rightArrow', 'leftArrow', 'diamond', 'pentagon', 'hexagon', 'cloud']),
735
+ x: z.number().optional().default(0.5),
736
+ y: z.number(),
737
+ w: z.number().optional().default(2),
738
+ h: z.number().optional().default(2),
739
+ fill_color: z.string().optional(),
740
+ line_color: z.string().optional(),
741
+ line_width: z.number().optional(),
742
+ });
743
+ const opts = schema.parse(args);
744
+ const slide = getSlide(opts.presentation_id, opts.slide_number);
745
+ const shapeOpts = { x: opts.x, y: opts.y, w: opts.w, h: opts.h };
746
+ if (opts.fill_color)
747
+ shapeOpts.fill = { color: opts.fill_color };
748
+ if (opts.line_color) {
749
+ shapeOpts.line = { ...(shapeOpts.line ?? {}), color: opts.line_color };
750
+ }
751
+ if (opts.line_width) {
752
+ shapeOpts.line = { ...(shapeOpts.line ?? {}), width: opts.line_width };
753
+ }
754
+ slide.addShape(opts.type, shapeOpts);
755
+ return textResult('Shape added');
756
+ }
757
+ function handleAddChart(args) {
758
+ const schema = z.object({
759
+ presentation_id: z.string(),
760
+ slide_number: z.number(),
761
+ type: z.enum(['bar', 'line', 'pie', 'column']),
762
+ labels: z.array(z.string()),
763
+ values: z.array(z.number()),
764
+ series_name: z.string().optional().default('Series 1'),
765
+ x: z.number().optional().default(0.5),
766
+ y: z.number(),
767
+ w: z.number().optional().default(9),
768
+ h: z.number().optional().default(5),
769
+ show_legend: z.boolean().optional().default(true),
770
+ show_title: z.boolean().optional().default(false),
771
+ chart_title: z.string().optional(),
772
+ });
773
+ const opts = schema.parse(args);
774
+ const slide = getSlide(opts.presentation_id, opts.slide_number);
775
+ const chartData = [{ name: opts.series_name, labels: opts.labels, values: opts.values }];
776
+ const chartOpts = {
777
+ x: opts.x, y: opts.y, w: opts.w, h: opts.h,
778
+ showLegend: opts.show_legend, showTitle: opts.show_title,
779
+ };
780
+ if (opts.chart_title)
781
+ chartOpts.chartTitle = opts.chart_title;
782
+ slide.addChart(opts.type, chartData, chartOpts);
783
+ return textResult('Chart added');
784
+ }
785
+ function handleAddBulletPoints(args) {
786
+ const schema = z.object({
787
+ presentation_id: z.string(),
788
+ slide_number: z.number(),
789
+ items: z.array(z.string()),
790
+ x: z.number().optional().default(0.5),
791
+ y: z.number(),
792
+ w: z.number().optional().default(9),
793
+ h: z.number().optional().default(4),
794
+ font_size: z.number().optional().default(18),
795
+ font_color: z.string().optional().default('333333'),
796
+ bullet_color: z.string().optional(),
797
+ });
798
+ const opts = schema.parse(args);
799
+ const slide = getSlide(opts.presentation_id, opts.slide_number);
800
+ const textObjs = opts.items.map(item => ({
801
+ text: item,
802
+ options: {
803
+ fontSize: opts.font_size, fontFace: 'Arial', color: opts.font_color,
804
+ bulletColor: opts.bullet_color, bulletType: 'bullet', paraSpaceAfter: 8,
805
+ },
806
+ }));
807
+ slide.addText(textObjs, {
808
+ x: opts.x, y: opts.y, w: opts.w, h: opts.h,
809
+ valign: 'top', lineSpacingMultiple: 1.2,
810
+ });
811
+ return textResult('Bullet points added');
812
+ }
813
+ function handleAddNotes(args) {
814
+ const schema = z.object({
815
+ presentation_id: z.string(),
816
+ slide_number: z.number(),
817
+ notes: z.string(),
818
+ });
819
+ const { presentation_id, slide_number, notes } = schema.parse(args);
820
+ const entry = getPresentation(presentation_id);
821
+ const slide = getSlide(presentation_id, slide_number);
822
+ slide.addNotes(notes);
823
+ entry.slides[slide_number - 1].notes = notes;
824
+ return textResult('Speaker notes added');
825
+ }
826
+ function handleAddSlideNumbers(args) {
827
+ const schema = z.object({
828
+ presentation_id: z.string(),
829
+ x: z.number().optional().default(8.5),
830
+ y: z.number().optional().default(6.8),
831
+ font_size: z.number().optional().default(10),
832
+ font_color: z.string().optional().default('999999'),
833
+ });
834
+ const opts = schema.parse(args);
835
+ const entry = getPresentation(opts.presentation_id);
836
+ const slides = entry.pres.slides ?? [];
837
+ slides.forEach((slide, idx) => {
838
+ slide.addText(String(idx + 1), {
839
+ x: opts.x, y: opts.y, w: 1, h: 0.4,
840
+ fontSize: opts.font_size, color: opts.font_color,
841
+ fontFace: 'Arial', align: 'right',
842
+ });
843
+ });
844
+ return textResult(`Slide numbers added to ${slides.length} slides`);
845
+ }
846
+ function handleSavePresentation(args) {
847
+ const schema = z.object({
848
+ presentation_id: z.string(),
849
+ output_path: z.string().optional(),
850
+ });
851
+ const { presentation_id, output_path } = schema.parse(args);
852
+ const entry = getPresentation(presentation_id);
853
+ const safeName = entry.name.replace(/[^a-zA-Z0-9_-]/g, '_');
854
+ const filePath = output_path ?? path.resolve(process.cwd(), `${safeName}.pptx`);
855
+ const dir = path.dirname(filePath);
856
+ if (!fs.existsSync(dir)) {
857
+ fs.mkdirSync(dir, { recursive: true });
858
+ }
859
+ return entry.pres.writeFile({ fileName: filePath }).then(() => okResult({ path: filePath }));
860
+ }
861
+ async function main() {
862
+ const transport = new StdioServerTransport();
863
+ await server.connect(transport);
864
+ }
865
+ main().catch(console.error);
866
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "presentations-mcp",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for creating PowerPoint presentations programmatically. Provides tools to create, edit, and save .pptx files via the Model Context Protocol.",
5
+ "type": "module",
6
+ "bin": {
7
+ "presentations-mcp": "dist/index.js"
8
+ },
9
+ "main": "dist/index.js",
10
+ "files": [
11
+ "dist/"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "start": "node dist/index.js",
16
+ "dev": "tsx src/index.ts",
17
+ "prepublishOnly": "npm run build"
18
+ },
19
+ "keywords": [
20
+ "mcp",
21
+ "model-context-protocol",
22
+ "pptx",
23
+ "powerpoint",
24
+ "presentation",
25
+ "slides",
26
+ "pptxgenjs",
27
+ "ai"
28
+ ],
29
+ "author": "",
30
+ "license": "MIT",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "git+https://github.com/anomalyco/presentations-mcp.git"
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "engines": {
39
+ "node": ">=18"
40
+ },
41
+ "dependencies": {
42
+ "@modelcontextprotocol/sdk": "^1.29.0",
43
+ "pptxgenjs": "^4.0.1",
44
+ "zod": "^3.24.0"
45
+ },
46
+ "devDependencies": {
47
+ "@types/node": "^22.15.0",
48
+ "tsx": "^4.19.0",
49
+ "typescript": "^5.8.0"
50
+ }
51
+ }