pptx-viewer-mcp 1.3.2 → 2.0.1

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/CHANGELOG.md CHANGED
@@ -4,6 +4,28 @@ All notable changes to this project are documented here.
4
4
  This file is generated from [Conventional Commits](https://www.conventionalcommits.org)
5
5
  by [git-cliff](https://git-cliff.org); do not edit it by hand.
6
6
 
7
+ ## [2.0.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-viewer-mcp@2.0.0) - 2026-07-23
8
+
9
+ ### Documentation
10
+
11
+ - Friendly 2.0.0 changelog for root and packages (by @ChristopherVR) ([f56564d](https://github.com/ChristopherVR/pptx-viewer/commit/f56564de0dea3f3aa6f0bdf5ad5ed1bf6e9d4823))
12
+
13
+ ## 2.0.0
14
+
15
+ V2 tidies the MCP server's public API. (The exact version and date are set
16
+ when the release is tagged.)
17
+
18
+ ### Breaking changes and migration
19
+
20
+ - The deprecated `runMutatingTool` re-export is removed. Call `runMcpTool`
21
+ instead; it is a pure rename with no behavioural difference.
22
+
23
+ ## [1.3.2](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-viewer-mcp@1.3.2) - 2026-07-18
24
+
25
+ ### Documentation
26
+
27
+ - Correct and expand the per-package npm readmes (by @ChristopherVR) ([46f7c57](https://github.com/ChristopherVR/pptx-viewer/commit/46f7c573701a19e91c507d41ebdc956c64699c38))
28
+
7
29
  ## [1.3.1](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-viewer-mcp@1.3.1) - 2026-07-17
8
30
 
9
31
  ### Dependencies
package/dist/index.d.ts CHANGED
@@ -476,10 +476,25 @@ interface ConvertToMarkdownParams {
476
476
  semanticMode?: boolean;
477
477
  sourceName?: string;
478
478
  /**
479
- * Root directory under which `outputDir` must resolve. Defaults to
479
+ * Root directory under which `outputDir` must resolve. Only meaningful when
480
+ * {@link ConvertToMarkdownParams.scopeOutputDir} is supplied. Defaults to
480
481
  * `process.env.PPTX_TOOLS_ROOT` if set, else `process.cwd()`.
481
482
  */
482
483
  rootDir?: string;
484
+ /**
485
+ * Optional host-supplied guard that resolves `outputDir` under `rootDir` and
486
+ * rejects traversal escapes.
487
+ *
488
+ * Confining an output directory is a filesystem concern that only exists on
489
+ * the server, and it needs `node:path` to do correctly. This module is also
490
+ * reached from the browser (the in-viewer AI assistant calls this tool for
491
+ * the markdown string, with no filesystem, so `outputDir` is just a prefix
492
+ * for image links), and a `node:path` import here (even a lazy one behind a
493
+ * runtime check) puts a Node builtin into every bundler's module graph and
494
+ * makes browser builds warn. So the MCP server injects
495
+ * {@link resolveScopedDir} instead and browsers simply omit it.
496
+ */
497
+ scopeOutputDir?: (outputDir: string, rootDir?: string) => string;
483
498
  }
484
499
  interface ConvertToMarkdownResult {
485
500
  markdown: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/execution.ts","../src/tools/slide-tools.ts","../src/tools/helpers.ts","../src/tools/element-tools.ts","../src/tools/table-tools.ts","../src/tools/style-tools.ts","../src/tools/content-tools.ts","../src/tools/conversion-tools.ts","../src/tools/theme-tools.ts","../src/tools/chart-tools.ts","../src/tools/smartart-tools.ts","../src/tools/merge-tools.ts","../src/tools/template-tools.ts","../src/tools/metadata-tools.ts","../src/tools/section-tools.ts","../src/tools/export-tools.ts","../src/tools/hyperlink-tools.ts","../src/tools/geometry-tools.ts","../src/tools/lock-tools.ts","../src/tools/validation-tools.ts","../src/tools/presentation-tools.ts","../src/tools/layout-tools.ts"],"mappings":";;;;;;;UAOiB;;EAEhB,UAAU;;EAEV,gBAAgB,iBAAiB,QAAQ;;EAEzC,gBAAgB,iBAAiB,QAAQ;;;;;;UAOzB,WAAW;;EAE3B,UAAU;;EAEV,QAAQ;;EAER;;;;;;UAWgB;;EAEhB,QAAQ;IAAqB,MAAM;;;EAEnC,SAAS;IACR,QAAQ,MAAM,KAAM,OAAO,YAAY,kBAAkB;IACzD,UAAU,MAAM,MAAO,QAAQ;;;EAGhC,YAAY;;;;;;;UAQI;EAChB,SAAS,eAAe,QAAQ;EAChC,UAAU,cAAc,MAAM,aAAa;;;;;;UAO3B;EAChB,eACC,kBACA,OAAO,YACP;IAAW;IAAoB;;EAEhC,SAAS,mBAAmB;;;;;UAMZ;;EAEhB,YAAY;;EAEZ,gBAAgB;;EAEhB,SAAS;;EAET;;;;;;;;;iBCvEqB,iBACrB,kBACA,SAAS,mBACP;EAAU,UAAU;EAAU,UAAU;;;;;iBA0BrB,iBACrB,kBACA,UAAU,YACV,UAAU,YACV,SAAS,mBACP;EAAU;EAAsB;;;;;;iBAgDb,uBAAuB,GAC5C,kBACA,SAAS,kBACT,SAAS,KAAK,gBAAgB,WAAW,KAAK,QAAQ,WAAW,MAC/D,QAAQ;EAAM;EAAuB;;;;UCxFvB;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;;iBAGK,SACf,KAAK,aACL;EAAU;IACR,WAAW;UAuBG;EAChB;EACA;;UAGgB;EAChB;EACA;;iBAGe,SAAS,KAAK,aAAa,QAAQ,iBAAiB,WAAW;UA2B9D;EAChB;;UAGgB;EAChB;EACA;;iBAGe,aACf,KAAK,aACL,QAAQ,qBACN,WAAW;UA4BG;EAChB;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;;UA2BC;EAChB;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN;EAAa;EAAuB;;UA4BtB;EAChB;EACA;EACA;EACA;EACA;EACA;;iBAGe,sBACf,KAAK,aACL,QAAQ,8BACN;EAAa;;UA8BC;EAChB;EACA;EACA;EACA;EACA;EACA;;iBAGe,mBACf,KAAK,aACL,QAAQ,2BACN;EAAa;EAAoB;;UAmCnB;EAChB;EACA;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;EAAqB;;;;iBChSrB;iBAIA;;iBAKA,gBAAgB,IAAI,gBAAc;;iBAwGlC,iBAAiB,OAAO;;iBA0BxB,mBAAmB,oBAAoB;;;UC9HtC;EAChB;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;;iBAGe,WACf,KAAK,aACL,QAAQ,mBACN,WAAW;UAmKG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;;UA8GC;EAChB;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN;EAAa;;UA0BC;EAChB;EACA;EAEA;EACA;EAEA;EACA;;iBAGe,gBACf,KAAK,aACL,QAAQ,wBACN;EAAa;;UA6GC;EAChB;EACA;EACA;EACA;EACA;;UAGgB;EAChB;;iBAGe,aACf,KAAK,aACL,QAAQ,qBACN,WAAW;UAuCG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,oBACf,KAAK,aACL,QAAQ,4BACN;EAAa;;UAsDC;EAChB;EACA;;UAGgB;EAChB;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN,WAAW;UAyDG;EAChB;EACA;;UAGgB;EAChB;;iBAGe,gBACf,KAAK,aACL,QAAQ,wBACN,WAAW;UAqCG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,oBACf,KAAK,aACL,QAAQ,4BACN;EAAa;;;;UC7vBC;EAChB;EACA;EACA,OAAO;IAAQ;IAAa;IAAa;;;iBAG1B,iBACf,KAAK,aACL,QAAQ,yBACN;EAAa;;UA6CC;EAChB;EACA;EACA;EACA;EACA;EACA;;iBAGe,qBACf,KAAK,aACL,QAAQ,6BACN;EAAa;EAAkB;;;;UCjEjB;EAChB;EACA;EAEA;EACA,WAAW;EACX,oBAAoB;IAAQ;IAAe;IAAkB;;EAC7D;EACA;EACA;EAEA;EACA;EACA,aAAa;EACb;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,mBACf,KAAK,aACL,QAAQ,2BACN;EAAa;;UA6HC;EAChB;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;EACA;EACA;EACA,QAAQ;;iBAGO,sBAAsB,KAAK,cAAc,WAAW;;;UCnJnD;EAChB;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA,SAAS;;iBAGM,SAAS,KAAK,aAAa,QAAQ,iBAAiB,WAAW;UA2G9D;EAChB;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;;iBAGe,YACf,KAAK,aACL,QAAQ,oBACN,WAAW;UAiGG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA,WAAW;EACX;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN,WAAW;;;UClTG;EAChB;EACA;EACA;EACA;IAAe;IAAgB;;EAC/B;EACA;EACA;;;;;EAKA;;UAgBgB;EAChB;EACA;EACA;EACA;;iBAGqB,kBACrB,KAAK,aACL,QAAQ,0BACN,QAAQ,WAAW;;;UCjCL;EAChB;EACA,cAAc;EACd,aAAa;EACb;;iBAGe,aAAa,KAAK,cAAc,WAAW;UAgB1C;EAChB;;UAGgB;EAChB;EACA,aAAa;;iBAGE,iBACf,KAAK,aACL,QAAQ,yBACN,WAAW;UA8BG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,kBACf,KAAK,aACL,QAAQ,0BACN;EAAa,aAAa;;UAsCZ;EAChB;EACA;;iBAGe,iBACf,KAAK,aACL,QAAQ,yBACN;EAAa,YAAY;;;;UCpHX;EAChB;EACA;EACA;EACA;EACA;EACA;IAAW;IAAgB;;EAC3B;IACC;IACA;IACA;I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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/execution.ts","../src/tools/slide-tools.ts","../src/tools/helpers.ts","../src/tools/element-tools.ts","../src/tools/table-tools.ts","../src/tools/style-tools.ts","../src/tools/content-tools.ts","../src/tools/conversion-tools.ts","../src/tools/theme-tools.ts","../src/tools/chart-tools.ts","../src/tools/smartart-tools.ts","../src/tools/merge-tools.ts","../src/tools/template-tools.ts","../src/tools/metadata-tools.ts","../src/tools/section-tools.ts","../src/tools/export-tools.ts","../src/tools/hyperlink-tools.ts","../src/tools/geometry-tools.ts","../src/tools/lock-tools.ts","../src/tools/validation-tools.ts","../src/tools/presentation-tools.ts","../src/tools/layout-tools.ts"],"mappings":";;;;;;;UAOiB;;EAEhB,UAAU;;EAEV,gBAAgB,iBAAiB,QAAQ;;EAEzC,gBAAgB,iBAAiB,QAAQ;;;;;;UAOzB,WAAW;;EAE3B,UAAU;;EAEV,QAAQ;;EAER;;;;;;UAWgB;;EAEhB,QAAQ;IAAqB,MAAM;;;EAEnC,SAAS;IACR,QAAQ,MAAM,KAAM,OAAO,YAAY,kBAAkB;IACzD,UAAU,MAAM,MAAO,QAAQ;;;EAGhC,YAAY;;;;;;;UAQI;EAChB,SAAS,eAAe,QAAQ;EAChC,UAAU,cAAc,MAAM,aAAa;;;;;;UAO3B;EAChB,eACC,kBACA,OAAO,YACP;IAAW;IAAoB;;EAEhC,SAAS,mBAAmB;;;;;UAMZ;;EAEhB,YAAY;;EAEZ,gBAAgB;;EAEhB,SAAS;;EAET;;;;;;;;;iBCvEqB,iBACrB,kBACA,SAAS,mBACP;EAAU,UAAU;EAAU,UAAU;;;;;iBA0BrB,iBACrB,kBACA,UAAU,YACV,UAAU,YACV,SAAS,mBACP;EAAU;EAAsB;;;;;;iBAgDb,uBAAuB,GAC5C,kBACA,SAAS,kBACT,SAAS,KAAK,gBAAgB,WAAW,KAAK,QAAQ,WAAW,MAC/D,QAAQ;EAAM;EAAuB;;;;UCxFvB;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;;iBAGK,SACf,KAAK,aACL;EAAU;IACR,WAAW;UAuBG;EAChB;EACA;;UAGgB;EAChB;EACA;;iBAGe,SAAS,KAAK,aAAa,QAAQ,iBAAiB,WAAW;UA2B9D;EAChB;;UAGgB;EAChB;EACA;;iBAGe,aACf,KAAK,aACL,QAAQ,qBACN,WAAW;UA4BG;EAChB;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;;UA2BC;EAChB;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN;EAAa;EAAuB;;UA4BtB;EAChB;EACA;EACA;EACA;EACA;EACA;;iBAGe,sBACf,KAAK,aACL,QAAQ,8BACN;EAAa;;UA8BC;EAChB;EACA;EACA;EACA;EACA;EACA;;iBAGe,mBACf,KAAK,aACL,QAAQ,2BACN;EAAa;EAAoB;;UAmCnB;EAChB;EACA;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;EAAqB;;;;iBChSrB;iBAIA;;iBAKA,gBAAgB,IAAI,gBAAc;;iBAwGlC,iBAAiB,OAAO;;iBA0BxB,mBAAmB,oBAAoB;;;UC9HtC;EAChB;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;;iBAGe,WACf,KAAK,aACL,QAAQ,mBACN,WAAW;UAmKG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;;UA8GC;EAChB;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN;EAAa;;UA0BC;EAChB;EACA;EAEA;EACA;EAEA;EACA;;iBAGe,gBACf,KAAK,aACL,QAAQ,wBACN;EAAa;;UA6GC;EAChB;EACA;EACA;EACA;EACA;;UAGgB;EAChB;;iBAGe,aACf,KAAK,aACL,QAAQ,qBACN,WAAW;UAuCG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,oBACf,KAAK,aACL,QAAQ,4BACN;EAAa;;UAsDC;EAChB;EACA;;UAGgB;EAChB;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN,WAAW;UAyDG;EAChB;EACA;;UAGgB;EAChB;;iBAGe,gBACf,KAAK,aACL,QAAQ,wBACN,WAAW;UAqCG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,oBACf,KAAK,aACL,QAAQ,4BACN;EAAa;;;;UC7vBC;EAChB;EACA;EACA,OAAO;IAAQ;IAAa;IAAa;;;iBAG1B,iBACf,KAAK,aACL,QAAQ,yBACN;EAAa;;UA6CC;EAChB;EACA;EACA;EACA;EACA;EACA;;iBAGe,qBACf,KAAK,aACL,QAAQ,6BACN;EAAa;EAAkB;;;;UCjEjB;EAChB;EACA;EAEA;EACA,WAAW;EACX,oBAAoB;IAAQ;IAAe;IAAkB;;EAC7D;EACA;EACA;EAEA;EACA;EACA,aAAa;EACb;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,mBACf,KAAK,aACL,QAAQ,2BACN;EAAa;;UA6HC;EAChB;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;EACA;EACA;EACA,QAAQ;;iBAGO,sBAAsB,KAAK,cAAc,WAAW;;;UCnJnD;EAChB;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA,SAAS;;iBAGM,SAAS,KAAK,aAAa,QAAQ,iBAAiB,WAAW;UA2G9D;EAChB;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;;iBAGe,YACf,KAAK,aACL,QAAQ,oBACN,WAAW;UAiGG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA,WAAW;EACX;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN,WAAW;;;UCpTG;EAChB;EACA;EACA;EACA;IAAe;IAAgB;;EAC/B;EACA;EACA;;;;;;EAMA;;;;;;;;;;;;;;EAcA,kBAAkB,mBAAmB;;UAGrB;EAChB;EACA;EACA;EACA;;iBAGqB,kBACrB,KAAK,aACL,QAAQ,0BACN,QAAQ,WAAW;;;UCjCL;EAChB;EACA,cAAc;EACd,aAAa;EACb;;iBAGe,aAAa,KAAK,cAAc,WAAW;UAgB1C;EAChB;;UAGgB;EAChB;EACA,aAAa;;iBAGE,iBACf,KAAK,aACL,QAAQ,yBACN,WAAW;UA8BG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,kBACf,KAAK,aACL,QAAQ,0BACN;EAAa,aAAa;;UAsCZ;EAChB;EACA;;iBAGe,iBACf,KAAK,aACL,QAAQ,yBACN;EAAa,YAAY;;;;UCpHX;EAChB;EACA;EACA;EACA;EACA;EACA;IA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"}
package/dist/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var pptxViewerCore = require('pptx-viewer-core');
4
- var path = require('path');
5
4
 
6
5
  // src/execution.ts
7
6
  var PPTX_MIME_TYPE = "application/vnd.openxmlformats-officedocument.presentationml.presentation";
@@ -1557,17 +1556,6 @@ function manageComments(ctx, params) {
1557
1556
  }
1558
1557
  }
1559
1558
  }
1560
- function scopeOutputDir(outputDir, rootDir) {
1561
- const root = path.resolve(rootDir ?? process.env["PPTX_TOOLS_ROOT"] ?? process.cwd());
1562
- const resolved = path.isAbsolute(outputDir) ? path.resolve(outputDir) : path.resolve(root, outputDir);
1563
- const rootWithSep = root.endsWith(path.sep) ? root : root + path.sep;
1564
- if (resolved !== root && !resolved.startsWith(rootWithSep)) {
1565
- throw new Error(
1566
- `convertToMarkdown: outputDir "${outputDir}" resolves outside the allowed root "${root}"`
1567
- );
1568
- }
1569
- return resolved;
1570
- }
1571
1559
  async function convertToMarkdown(ctx, params) {
1572
1560
  const options = {
1573
1561
  mediaFolderName: params.mediaFolderName ?? "media",
@@ -1577,7 +1565,8 @@ async function convertToMarkdown(ctx, params) {
1577
1565
  semanticMode: params.semanticMode === true,
1578
1566
  sourceName: params.sourceName ?? "unknown"
1579
1567
  };
1580
- const safeOutputDir = scopeOutputDir(params.outputDir ?? ".", params.rootDir);
1568
+ const outputDir = params.outputDir ?? ".";
1569
+ const safeOutputDir = params.scopeOutputDir ? params.scopeOutputDir(outputDir, params.rootDir) : outputDir;
1581
1570
  const converter = new pptxViewerCore.PptxMarkdownConverter(safeOutputDir, options);
1582
1571
  const markdown = await converter.convert(ctx.pptxData);
1583
1572
  return {
package/dist/index.mjs CHANGED
@@ -1,6 +1,5 @@
1
1
  import { PptxHandler, hasTextProperties, PptxMarkdownConverter, ThemePresets, getThemePreset, setChartType, setChartTitle, setChartGrouping, setChartLegend, setChartDataLabels, setChartAxis, setChartCategories, addChartSeries, removeChartSeries, updateChartSeriesValues, ChartBuilder, decomposeSmartArt, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode, updateSmartArtNodeText, removeSmartArtNode, addSmartArtNode, mergePresentation, diffPresentations, findPlaceholders, applyTemplate, getSectionForSlide, moveSlidesToSection, reorderSections, removeSection, addSection, SvgExporter, replaceWithCustomGeometry, replaceShapeGeometry, setElementLocked, validatePptx, repairPptx, findLayoutByName, findLayoutByType } from 'pptx-viewer-core';
2
2
  export { PptxHandler } from 'pptx-viewer-core';
3
- import { resolve, isAbsolute, sep } from 'path';
4
3
 
5
4
  // src/execution.ts
6
5
  var PPTX_MIME_TYPE = "application/vnd.openxmlformats-officedocument.presentationml.presentation";
@@ -1556,17 +1555,6 @@ function manageComments(ctx, params) {
1556
1555
  }
1557
1556
  }
1558
1557
  }
1559
- function scopeOutputDir(outputDir, rootDir) {
1560
- const root = resolve(rootDir ?? process.env["PPTX_TOOLS_ROOT"] ?? process.cwd());
1561
- const resolved = isAbsolute(outputDir) ? resolve(outputDir) : resolve(root, outputDir);
1562
- const rootWithSep = root.endsWith(sep) ? root : root + sep;
1563
- if (resolved !== root && !resolved.startsWith(rootWithSep)) {
1564
- throw new Error(
1565
- `convertToMarkdown: outputDir "${outputDir}" resolves outside the allowed root "${root}"`
1566
- );
1567
- }
1568
- return resolved;
1569
- }
1570
1558
  async function convertToMarkdown(ctx, params) {
1571
1559
  const options = {
1572
1560
  mediaFolderName: params.mediaFolderName ?? "media",
@@ -1576,7 +1564,8 @@ async function convertToMarkdown(ctx, params) {
1576
1564
  semanticMode: params.semanticMode === true,
1577
1565
  sourceName: params.sourceName ?? "unknown"
1578
1566
  };
1579
- const safeOutputDir = scopeOutputDir(params.outputDir ?? ".", params.rootDir);
1567
+ const outputDir = params.outputDir ?? ".";
1568
+ const safeOutputDir = params.scopeOutputDir ? params.scopeOutputDir(outputDir, params.rootDir) : outputDir;
1580
1569
  const converter = new PptxMarkdownConverter(safeOutputDir, options);
1581
1570
  const markdown = await converter.convert(ctx.pptxData);
1582
1571
  return {
package/dist/mcp/index.js CHANGED
@@ -5,8 +5,8 @@ var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
5
5
  var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
6
6
  var zod = require('zod');
7
7
  var pptxViewerCore = require('pptx-viewer-core');
8
- var path = require('path');
9
8
  var promises = require('fs/promises');
9
+ var path = require('path');
10
10
 
11
11
  var GetSlideSchema = zod.z.object({
12
12
  filePath: zod.z.string().describe("Path to the PPTX file"),
@@ -1044,17 +1044,6 @@ function manageComments(ctx, params) {
1044
1044
  }
1045
1045
  }
1046
1046
  }
1047
- function scopeOutputDir(outputDir, rootDir) {
1048
- const root = path.resolve(rootDir ?? process.env["PPTX_TOOLS_ROOT"] ?? process.cwd());
1049
- const resolved = path.isAbsolute(outputDir) ? path.resolve(outputDir) : path.resolve(root, outputDir);
1050
- const rootWithSep = root.endsWith(path.sep) ? root : root + path.sep;
1051
- if (resolved !== root && !resolved.startsWith(rootWithSep)) {
1052
- throw new Error(
1053
- `convertToMarkdown: outputDir "${outputDir}" resolves outside the allowed root "${root}"`
1054
- );
1055
- }
1056
- return resolved;
1057
- }
1058
1047
  async function convertToMarkdown(ctx, params) {
1059
1048
  const options = {
1060
1049
  mediaFolderName: params.mediaFolderName ?? "media",
@@ -1064,7 +1053,8 @@ async function convertToMarkdown(ctx, params) {
1064
1053
  semanticMode: params.semanticMode === true,
1065
1054
  sourceName: params.sourceName ?? "unknown"
1066
1055
  };
1067
- const safeOutputDir = scopeOutputDir(params.outputDir ?? ".", params.rootDir);
1056
+ const outputDir = params.outputDir ?? ".";
1057
+ const safeOutputDir = params.scopeOutputDir ? params.scopeOutputDir(outputDir, params.rootDir) : outputDir;
1068
1058
  const converter = new pptxViewerCore.PptxMarkdownConverter(safeOutputDir, options);
1069
1059
  const markdown = await converter.convert(ctx.pptxData);
1070
1060
  return {
@@ -2979,16 +2969,23 @@ async function executeToolWithContext(filePath, execCtx, toolFn) {
2979
2969
 
2980
2970
  // src/mcp/handlers.ts
2981
2971
  var ALLOWED_EXTENSIONS = /* @__PURE__ */ new Set([".pptx", ".ppt"]);
2982
- function resolveScopedFilePath(filePath, rootDir) {
2983
- if (typeof filePath !== "string" || filePath.length === 0) {
2984
- throw new Error("MCP tool: filePath must be a non-empty string");
2972
+ function resolveScopedDir(dir, rootDir) {
2973
+ if (typeof dir !== "string" || dir.length === 0) {
2974
+ throw new Error("MCP tool: path must be a non-empty string");
2985
2975
  }
2986
- const root = path.resolve(process.env["PPTX_TOOLS_ROOT"] ?? process.cwd());
2987
- const resolved = path.isAbsolute(filePath) ? path.resolve(filePath) : path.resolve(root, filePath);
2976
+ const root = path.resolve(rootDir ?? process.env["PPTX_TOOLS_ROOT"] ?? process.cwd());
2977
+ const resolved = path.isAbsolute(dir) ? path.resolve(dir) : path.resolve(root, dir);
2988
2978
  const rootWithSep = root.endsWith(path.sep) ? root : root + path.sep;
2989
2979
  if (resolved !== root && !resolved.startsWith(rootWithSep)) {
2990
- throw new Error(`MCP tool: filePath "${filePath}" resolves outside the allowed root "${root}"`);
2980
+ throw new Error(`MCP tool: path "${dir}" resolves outside the allowed root "${root}"`);
2991
2981
  }
2982
+ return resolved;
2983
+ }
2984
+ function resolveScopedFilePath(filePath, rootDir) {
2985
+ if (typeof filePath !== "string" || filePath.length === 0) {
2986
+ throw new Error("MCP tool: filePath must be a non-empty string");
2987
+ }
2988
+ const resolved = resolveScopedDir(filePath, rootDir);
2992
2989
  const lower = resolved.toLowerCase();
2993
2990
  let isAllowed = false;
2994
2991
  for (const ext of ALLOWED_EXTENSIONS) {
@@ -3014,7 +3011,7 @@ function createMcpContext(_options) {
3014
3011
  return { filesystem: nodeFs };
3015
3012
  }
3016
3013
  async function runMcpTool(filePath, fn, options) {
3017
- const safePath = resolveScopedFilePath(filePath);
3014
+ const safePath = resolveScopedFilePath(filePath, options?.rootDir);
3018
3015
  const ctx = createMcpContext();
3019
3016
  return executeToolWithContext(safePath, ctx, fn);
3020
3017
  }
@@ -3053,10 +3050,7 @@ function createServer() {
3053
3050
  inputSchema: AddSlideSchema.shape
3054
3051
  },
3055
3052
  async (params) => {
3056
- const result = await runMcpTool(
3057
- params.filePath,
3058
- (ctx) => addSlide(ctx, params)
3059
- );
3053
+ const result = await runMcpTool(params.filePath, (ctx) => addSlide(ctx, params));
3060
3054
  return {
3061
3055
  content: [
3062
3056
  {
@@ -3475,10 +3469,7 @@ function createServer() {
3475
3469
  inputSchema: FindTextSchema.shape
3476
3470
  },
3477
3471
  async (params) => {
3478
- const result = await runMcpTool(
3479
- params.filePath,
3480
- (ctx) => findText(ctx, params)
3481
- );
3472
+ const result = await runMcpTool(params.filePath, (ctx) => findText(ctx, params));
3482
3473
  return {
3483
3474
  content: [
3484
3475
  {
@@ -3540,7 +3531,7 @@ function createServer() {
3540
3531
  async (params) => {
3541
3532
  const result = await runMcpTool(
3542
3533
  params.filePath,
3543
- (ctx) => convertToMarkdown(ctx, params)
3534
+ (ctx) => convertToMarkdown(ctx, { ...params, scopeOutputDir: resolveScopedDir })
3544
3535
  );
3545
3536
  return {
3546
3537
  content: [
@@ -3724,10 +3715,7 @@ function createServer() {
3724
3715
  inputSchema: GetMetadataSchema.shape
3725
3716
  },
3726
3717
  async (params) => {
3727
- const result = await runMcpTool(
3728
- params.filePath,
3729
- (ctx) => getMetadata(ctx)
3730
- );
3718
+ const result = await runMcpTool(params.filePath, (ctx) => getMetadata(ctx));
3731
3719
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
3732
3720
  }
3733
3721
  );
@@ -3,8 +3,8 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
3
3
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
4
  import { z } from 'zod';
5
5
  import { validatePptx, repairPptx, PptxHandler, hasTextProperties, PptxMarkdownConverter, ThemePresets, getThemePreset, setChartType, setChartTitle, setChartGrouping, setChartLegend, setChartDataLabels, setChartAxis, setChartCategories, addChartSeries, removeChartSeries, updateChartSeriesValues, ChartBuilder, decomposeSmartArt, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode, updateSmartArtNodeText, removeSmartArtNode, addSmartArtNode, findPlaceholders, applyTemplate, getSectionForSlide, moveSlidesToSection, reorderSections, removeSection, addSection, SvgExporter, replaceWithCustomGeometry, replaceShapeGeometry, setElementLocked, findLayoutByName, findLayoutByType } from 'pptx-viewer-core';
6
- import { resolve, isAbsolute, sep } from 'path';
7
6
  import { writeFile, readFile } from 'fs/promises';
7
+ import { resolve, isAbsolute, sep } from 'path';
8
8
 
9
9
  var GetSlideSchema = z.object({
10
10
  filePath: z.string().describe("Path to the PPTX file"),
@@ -1042,17 +1042,6 @@ function manageComments(ctx, params) {
1042
1042
  }
1043
1043
  }
1044
1044
  }
1045
- function scopeOutputDir(outputDir, rootDir) {
1046
- const root = resolve(rootDir ?? process.env["PPTX_TOOLS_ROOT"] ?? process.cwd());
1047
- const resolved = isAbsolute(outputDir) ? resolve(outputDir) : resolve(root, outputDir);
1048
- const rootWithSep = root.endsWith(sep) ? root : root + sep;
1049
- if (resolved !== root && !resolved.startsWith(rootWithSep)) {
1050
- throw new Error(
1051
- `convertToMarkdown: outputDir "${outputDir}" resolves outside the allowed root "${root}"`
1052
- );
1053
- }
1054
- return resolved;
1055
- }
1056
1045
  async function convertToMarkdown(ctx, params) {
1057
1046
  const options = {
1058
1047
  mediaFolderName: params.mediaFolderName ?? "media",
@@ -1062,7 +1051,8 @@ async function convertToMarkdown(ctx, params) {
1062
1051
  semanticMode: params.semanticMode === true,
1063
1052
  sourceName: params.sourceName ?? "unknown"
1064
1053
  };
1065
- const safeOutputDir = scopeOutputDir(params.outputDir ?? ".", params.rootDir);
1054
+ const outputDir = params.outputDir ?? ".";
1055
+ const safeOutputDir = params.scopeOutputDir ? params.scopeOutputDir(outputDir, params.rootDir) : outputDir;
1066
1056
  const converter = new PptxMarkdownConverter(safeOutputDir, options);
1067
1057
  const markdown = await converter.convert(ctx.pptxData);
1068
1058
  return {
@@ -2977,16 +2967,23 @@ async function executeToolWithContext(filePath, execCtx, toolFn) {
2977
2967
 
2978
2968
  // src/mcp/handlers.ts
2979
2969
  var ALLOWED_EXTENSIONS = /* @__PURE__ */ new Set([".pptx", ".ppt"]);
2980
- function resolveScopedFilePath(filePath, rootDir) {
2981
- if (typeof filePath !== "string" || filePath.length === 0) {
2982
- throw new Error("MCP tool: filePath must be a non-empty string");
2970
+ function resolveScopedDir(dir, rootDir) {
2971
+ if (typeof dir !== "string" || dir.length === 0) {
2972
+ throw new Error("MCP tool: path must be a non-empty string");
2983
2973
  }
2984
- const root = resolve(process.env["PPTX_TOOLS_ROOT"] ?? process.cwd());
2985
- const resolved = isAbsolute(filePath) ? resolve(filePath) : resolve(root, filePath);
2974
+ const root = resolve(rootDir ?? process.env["PPTX_TOOLS_ROOT"] ?? process.cwd());
2975
+ const resolved = isAbsolute(dir) ? resolve(dir) : resolve(root, dir);
2986
2976
  const rootWithSep = root.endsWith(sep) ? root : root + sep;
2987
2977
  if (resolved !== root && !resolved.startsWith(rootWithSep)) {
2988
- throw new Error(`MCP tool: filePath "${filePath}" resolves outside the allowed root "${root}"`);
2978
+ throw new Error(`MCP tool: path "${dir}" resolves outside the allowed root "${root}"`);
2989
2979
  }
2980
+ return resolved;
2981
+ }
2982
+ function resolveScopedFilePath(filePath, rootDir) {
2983
+ if (typeof filePath !== "string" || filePath.length === 0) {
2984
+ throw new Error("MCP tool: filePath must be a non-empty string");
2985
+ }
2986
+ const resolved = resolveScopedDir(filePath, rootDir);
2990
2987
  const lower = resolved.toLowerCase();
2991
2988
  let isAllowed = false;
2992
2989
  for (const ext of ALLOWED_EXTENSIONS) {
@@ -3012,7 +3009,7 @@ function createMcpContext(_options) {
3012
3009
  return { filesystem: nodeFs };
3013
3010
  }
3014
3011
  async function runMcpTool(filePath, fn, options) {
3015
- const safePath = resolveScopedFilePath(filePath);
3012
+ const safePath = resolveScopedFilePath(filePath, options?.rootDir);
3016
3013
  const ctx = createMcpContext();
3017
3014
  return executeToolWithContext(safePath, ctx, fn);
3018
3015
  }
@@ -3051,10 +3048,7 @@ function createServer() {
3051
3048
  inputSchema: AddSlideSchema.shape
3052
3049
  },
3053
3050
  async (params) => {
3054
- const result = await runMcpTool(
3055
- params.filePath,
3056
- (ctx) => addSlide(ctx, params)
3057
- );
3051
+ const result = await runMcpTool(params.filePath, (ctx) => addSlide(ctx, params));
3058
3052
  return {
3059
3053
  content: [
3060
3054
  {
@@ -3473,10 +3467,7 @@ function createServer() {
3473
3467
  inputSchema: FindTextSchema.shape
3474
3468
  },
3475
3469
  async (params) => {
3476
- const result = await runMcpTool(
3477
- params.filePath,
3478
- (ctx) => findText(ctx, params)
3479
- );
3470
+ const result = await runMcpTool(params.filePath, (ctx) => findText(ctx, params));
3480
3471
  return {
3481
3472
  content: [
3482
3473
  {
@@ -3538,7 +3529,7 @@ function createServer() {
3538
3529
  async (params) => {
3539
3530
  const result = await runMcpTool(
3540
3531
  params.filePath,
3541
- (ctx) => convertToMarkdown(ctx, params)
3532
+ (ctx) => convertToMarkdown(ctx, { ...params, scopeOutputDir: resolveScopedDir })
3542
3533
  );
3543
3534
  return {
3544
3535
  content: [
@@ -3722,10 +3713,7 @@ function createServer() {
3722
3713
  inputSchema: GetMetadataSchema.shape
3723
3714
  },
3724
3715
  async (params) => {
3725
- const result = await runMcpTool(
3726
- params.filePath,
3727
- (ctx) => getMetadata(ctx)
3728
- );
3716
+ const result = await runMcpTool(params.filePath, (ctx) => getMetadata(ctx));
3729
3717
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
3730
3718
  }
3731
3719
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pptx-viewer-mcp",
3
- "version": "1.3.2",
3
+ "version": "2.0.1",
4
4
  "description": "PowerPoint PPTX tools and MCP server: manipulate, convert, and collaborate on .pptx files from AI agents.",
5
5
  "keywords": [
6
6
  "ai",
@@ -72,11 +72,11 @@
72
72
  "@modelcontextprotocol/sdk": "^1.29.0",
73
73
  "fast-xml-parser": "^5.10.1",
74
74
  "jszip": "^3.10.1",
75
- "pptx-viewer-core": "^1.1.0",
75
+ "pptx-viewer-core": "^2.0.0",
76
76
  "zod": "^4.4.3"
77
77
  },
78
78
  "devDependencies": {
79
- "tsdown": "^0.22.9",
79
+ "tsdown": "^0.22.14",
80
80
  "tsup": "^8.5.1",
81
81
  "typescript": "^7.0.2",
82
82
  "vitest": "^4.1.10",