@documonster/mcp 0.12.0 → 0.13.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 CHANGED
@@ -108,6 +108,16 @@ because the subsetting embedder cannot use CFF outlines: that rules out macOS
108
108
  PingFang and Hiragino, and the official Noto Sans CJK `.otf`/`.otc` releases, so
109
109
  reach for Noto Sans SC's `.ttf` build instead.
110
110
 
111
+ **A conversion fails rather than writing a PDF with boxes in it.** If any
112
+ character has no glyph in any available font, `doc_convert` and `doc_write`
113
+ refuse and say which Unicode blocks are missing. That is deliberate: a PDF is
114
+ terminal here — this server cannot read its own PDF output back structurally, and
115
+ the result text asks you to verify by opening the file — so a boxed page reported
116
+ as a success is a defect found later, if at all. Latin, Greek, Cyrillic and the
117
+ symbol blocks are drawn from built-in outlines and never trigger it; CJK, and any
118
+ script this library has no glyphs for, needs `--pdf-font`. Pass
119
+ `allowMissingGlyphs: true` on the call to accept the boxes on purpose.
120
+
111
121
  ## Security
112
122
 
113
123
  An MCP server hands a model the ability to name files, so the boundaries are
@@ -1 +1 @@
1
- {"version":3,"file":"doc-convert.d.ts","sourceRoot":"","sources":["../../src/tools/doc-convert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsEH,eAAO,MAAM,cAAc,wCAyFzB,CAAC"}
1
+ {"version":3,"file":"doc-convert.d.ts","sourceRoot":"","sources":["../../src/tools/doc-convert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsEH,eAAO,MAAM,cAAc,wCAgGzB,CAAC"}
@@ -86,7 +86,11 @@ export const docConvertTool = defineTool({
86
86
  overwrite: z
87
87
  .boolean()
88
88
  .optional()
89
- .describe("Replace the destination if it exists. Defaults to false.")
89
+ .describe("Replace the destination if it exists. Defaults to false."),
90
+ allowMissingGlyphs: z
91
+ .boolean()
92
+ .optional()
93
+ .describe("→pdf only: write the PDF even if some characters have no glyph and will draw as boxes. Off by default — the conversion fails instead, because this server cannot read its own PDF output back to notice.")
90
94
  },
91
95
  annotations: {
92
96
  readOnlyHint: false,
@@ -122,6 +126,7 @@ export const docConvertTool = defineTool({
122
126
  note = await convert(fromFormat, toFormat, source, temporary, {
123
127
  ...args,
124
128
  renderDiagrams: args.diagrams ?? config.groups.has("diagram"),
129
+ allowMissingGlyphs: args.allowMissingGlyphs === true,
125
130
  config
126
131
  });
127
132
  });
@@ -161,7 +166,10 @@ async function convert(from, to, source, target, args) {
161
166
  }
162
167
  case "pdf": {
163
168
  const fonts = pdfFontOptions(args.config);
164
- await writeFileAtomic(target, await Pdf.fromDocx(doc, fonts.options));
169
+ const bytes = await Pdf.fromDocx(doc, fonts.options);
170
+ // Checked before the bytes reach the filesystem, so a refusal leaves nothing behind.
171
+ fonts.assertDrawable(args.allowMissingGlyphs);
172
+ await writeFileAtomic(target, bytes);
165
173
  return ["- paginated by the Word layout engine, so page breaks are real", ...fonts.notes()];
166
174
  }
167
175
  case "odt": {
@@ -186,7 +194,9 @@ async function convert(from, to, source, target, args) {
186
194
  }
187
195
  if (to === "pdf") {
188
196
  const fonts = pdfFontOptions(args.config);
189
- await writeFileAtomic(target, await Pdf.fromDocx(doc, fonts.options));
197
+ const bytes = await Pdf.fromDocx(doc, fonts.options);
198
+ fonts.assertDrawable(args.allowMissingGlyphs);
199
+ await writeFileAtomic(target, bytes);
190
200
  return ["- rendered via the Word layout engine", ...fonts.notes()];
191
201
  }
192
202
  throw unreachable(from, to);
@@ -207,7 +217,9 @@ async function convert(from, to, source, target, args) {
207
217
  }
208
218
  if (to === "pdf") {
209
219
  const fonts = pdfFontOptions(args.config);
210
- await writeFileAtomic(target, await Pdf.fromDocx(doc, fonts.options));
220
+ const bytes = await Pdf.fromDocx(doc, fonts.options);
221
+ fonts.assertDrawable(args.allowMissingGlyphs);
222
+ await writeFileAtomic(target, bytes);
211
223
  return [
212
224
  "- rendered via Word layout, so pagination is real",
213
225
  ...prepared.notes,
@@ -243,7 +255,12 @@ async function convert(from, to, source, target, args) {
243
255
  if (to === "pdf") {
244
256
  // Inject the calculation engine so stale cached values are not printed.
245
257
  const fonts = pdfFontOptions(args.config);
246
- await writeFileAtomic(target, await Pdf.fromExcel(wb, { ...fonts.options, recalculate: calculateFormulas }));
258
+ const bytes = await Pdf.fromExcel(wb, {
259
+ ...fonts.options,
260
+ recalculate: calculateFormulas
261
+ });
262
+ fonts.assertDrawable(args.allowMissingGlyphs);
263
+ await writeFileAtomic(target, bytes);
247
264
  return [
248
265
  `- all ${Workbook.getWorksheets(wb).length} sheet(s) rendered, honouring each sheet's print setup`,
249
266
  "- formulas recalculated before rendering",
@@ -1 +1 @@
1
- {"version":3,"file":"doc-convert.js","sourceRoot":"","sources":["../../src/tools/doc-convert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doc-convert.js","sourceRoot":"","sources":["../../src/tools/doc-convert.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doc-write.d.ts","sourceRoot":"","sources":["../../src/tools/doc-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkBH,eAAO,MAAM,YAAY,wCAwGvB,CAAC"}
1
+ {"version":3,"file":"doc-write.d.ts","sourceRoot":"","sources":["../../src/tools/doc-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkBH,eAAO,MAAM,YAAY,wCAkHvB,CAAC"}
@@ -38,6 +38,10 @@ export const docWriteTool = defineTool({
38
38
  .boolean()
39
39
  .optional()
40
40
  .describe("Render ```mermaid fences as embedded diagrams. Defaults to true when the diagram tool group is enabled; set false to keep them as code blocks."),
41
+ allowMissingGlyphs: z
42
+ .boolean()
43
+ .optional()
44
+ .describe("pdf only: write the PDF even if some characters have no glyph and will draw as boxes. Off by default — the write fails instead."),
41
45
  overwrite: z
42
46
  .boolean()
43
47
  .optional()
@@ -76,14 +80,18 @@ export const docWriteTool = defineTool({
76
80
  }).catch((cause) => {
77
81
  throw toolError.invalidInput(`the Markdown could not be converted: ${cause instanceof Error ? cause.message : String(cause)}`, "Check for an unclosed code fence or a malformed table.", { cause });
78
82
  });
79
- const fonts = pdfFontOptions(config);
83
+ let fonts;
80
84
  let size;
81
85
  if (format === "docx") {
82
86
  await writeWithPolicy(target, args.overwrite === true, temporary => Io.writeFile(doc, temporary));
83
87
  size = (await stat(target)).size;
84
88
  }
85
89
  else {
90
+ // Built here rather than above the branch: a DOCX write has no use for a PDF font,
91
+ // and loading one meant a `--pdf-font` deleted after startup broke a Word write.
92
+ fonts = pdfFontOptions(config);
86
93
  const bytes = await Pdf.fromDocx(doc, fonts.options);
94
+ fonts.assertDrawable(args.allowMissingGlyphs === true);
87
95
  await writeWithPolicy(target, args.overwrite === true, temporary => writeFile(temporary, bytes));
88
96
  size = bytes.byteLength;
89
97
  }
@@ -93,7 +101,7 @@ export const docWriteTool = defineTool({
93
101
  ? "- rendered through the Word layout engine, so pagination and line breaking are real"
94
102
  : "- Markdown structure preserved as Word styles",
95
103
  ...prepared.notes,
96
- ...fonts.notes(),
104
+ ...(fonts?.notes() ?? []),
97
105
  "",
98
106
  "Read the returned @output path with doc_read to verify before reporting success."
99
107
  ].join("\n"));
@@ -1 +1 @@
1
- {"version":3,"file":"doc-write.js","sourceRoot":"","sources":["../../src/tools/doc-write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doc-write.js","sourceRoot":"","sources":["../../src/tools/doc-write.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,8 @@ export declare function pdfFontOptions(config: {
33
33
  };
34
34
  /** Lines to append to the tool result, most serious first. */
35
35
  notes(): string[];
36
+ /** Refuse to write a PDF with boxes in it. See {@link FontWarningCollector.assertDrawable}. */
37
+ assertDrawable(allow: boolean): void;
36
38
  };
37
39
  /** A collector to hand to `onWarning`, plus the notes it accumulated. */
38
40
  export interface FontWarningCollector {
@@ -44,6 +46,27 @@ export interface FontWarningCollector {
44
46
  * Empty when nothing was raised, so a caller can splat it unconditionally.
45
47
  */
46
48
  notes(): string[];
49
+ /**
50
+ * The writer's own reports of characters that will draw as boxes.
51
+ *
52
+ * Empty when the page is sound, which is what {@link assertDrawable} turns into a
53
+ * refusal.
54
+ */
55
+ missingGlyphs(): string[];
56
+ /**
57
+ * Refuse to hand back a PDF with boxes in it.
58
+ *
59
+ * A PDF is terminal here — this server cannot read its own PDF output structurally, and
60
+ * the result text asks the caller to verify by opening the file — so a boxed page
61
+ * reported as a success is a defect the caller finds after the fact, if at all. That is
62
+ * how a document of Chinese prose came back with every ideograph blank and nobody was
63
+ * told (issue #218). Failing closed makes the one outcome nobody wants impossible to
64
+ * reach by accident, and `allowMissingGlyphs` is how a caller who has decided the boxes
65
+ * are acceptable says so on purpose.
66
+ *
67
+ * @throws {McpToolError} When any character will render as `.notdef`.
68
+ */
69
+ assertDrawable(allow: boolean): void;
47
70
  }
48
71
  export declare function collectFontWarnings(): FontWarningCollector;
49
72
  //# sourceMappingURL=pdf-fonts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-fonts.d.ts","sourceRoot":"","sources":["../../src/tools/pdf-fonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IACrE,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;QAC/B,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KAC/C,CAAC;IACF,8DAA8D;IAC9D,KAAK,IAAI,MAAM,EAAE,CAAC;CACnB,CAUA;AAmCD,yEAAyE;AACzE,MAAM,WAAW,oBAAoB;IACnC,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C;;;;OAIG;IACH,KAAK,IAAI,MAAM,EAAE,CAAC;CACnB;AAYD,wBAAgB,mBAAmB,IAAI,oBAAoB,CAoB1D"}
1
+ {"version":3,"file":"pdf-fonts.d.ts","sourceRoot":"","sources":["../../src/tools/pdf-fonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IACrE,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;QAC/B,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KAC/C,CAAC;IACF,8DAA8D;IAC9D,KAAK,IAAI,MAAM,EAAE,CAAC;IAClB,+FAA+F;IAC/F,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACtC,CAWA;AAmCD,yEAAyE;AACzE,MAAM,WAAW,oBAAoB;IACnC,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C;;;;OAIG;IACH,KAAK,IAAI,MAAM,EAAE,CAAC;IAClB;;;;;OAKG;IACH,aAAa,IAAI,MAAM,EAAE,CAAC;IAC1B;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACtC;AAoBD,wBAAgB,mBAAmB,IAAI,oBAAoB,CAiC1D"}
@@ -32,7 +32,8 @@ export function pdfFontOptions(config) {
32
32
  ...(fonts === undefined ? {} : { fonts }),
33
33
  onWarning: collector.onWarning
34
34
  },
35
- notes: collector.notes
35
+ notes: collector.notes,
36
+ assertDrawable: collector.assertDrawable
36
37
  };
37
38
  }
38
39
  /**
@@ -64,20 +65,38 @@ function loadFont(fontPath) {
64
65
  }
65
66
  const fontCache = new Map();
66
67
  /**
67
- * The substring the library uses for characters that will visibly render as
68
- * `.notdef` boxes.
68
+ * The substring the library uses for a character that will visibly render as a box.
69
69
  *
70
- * Matched rather than re-derived: the condition is decided inside the font
71
- * manager, and a second rule here would drift from it. Kept as a constant so the
72
- * coupling is visible at the one place that depends on the wording.
70
+ * `.notdef` is the discriminator because it appears in both of the writer's wordings —
71
+ * "no glyph in any available font and will render as `.notdef` boxes" on the fallback
72
+ * path, and "not covered by the configured PDF font families and will render with the
73
+ * `.notdef` glyph" when the caller supplied a font that does not reach far enough — and in
74
+ * neither of the ones that are merely notes. Matching only the first meant the failure that
75
+ * follows configuring `--pdf-font`, which is the option's whole point, was filed as an
76
+ * aside.
77
+ *
78
+ * Matched rather than re-derived: the condition is decided inside the font manager, and a
79
+ * second rule here would drift from it. `pdf-fonts.contract.test.ts` runs real exports
80
+ * down both paths and asserts the wording still contains it, so a reword in the library
81
+ * fails a test here instead of quietly turning the check off.
73
82
  */
74
- const TOFU_MARKER = "no glyph in any available font";
83
+ const TOFU_MARKER = ".notdef";
75
84
  export function collectFontWarnings() {
76
85
  const messages = [];
86
+ const missing = () => messages.filter(message => message.includes(TOFU_MARKER));
77
87
  return {
78
88
  onWarning: message => {
79
89
  messages.push(message);
80
90
  },
91
+ missingGlyphs: missing,
92
+ assertDrawable: allow => {
93
+ const boxes = missing();
94
+ if (allow || boxes.length === 0) {
95
+ return;
96
+ }
97
+ throw toolError.unsupported(`the PDF was not written: ${boxes.join(" ")}`, "Point the server at a font that covers these characters with --pdf-font, or pass " +
98
+ "allowMissingGlyphs: true to accept a page with boxes on it.");
99
+ },
81
100
  notes: () => {
82
101
  if (messages.length === 0) {
83
102
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-fonts.js","sourceRoot":"","sources":["../../src/tools/pdf-fonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,MAAqC;IASlE,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClF,OAAO;QACL,OAAO,EAAE;YACP,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACzC,SAAS,EAAE,SAAS,CAAC,SAAS;SAC/B;QACD,KAAK,EAAE,SAAS,CAAC,KAAK;KACvB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,QAAgB;IAChC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAiB,CAAC;IACtB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,CAAC,WAAW,CACzB,0DAA0D,QAAQ,EAAE,EACpE,+DAA+D,EAC/D,EAAE,KAAK,EAAE,CACV,CAAC;IACJ,CAAC;IACD,4EAA4E;IAC5E,8EAA8E;IAC9E,yDAAyD;IACzD,MAAM,MAAM,GAAkB,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;IAC9D,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;AAcnD;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,gCAAgC,CAAC;AAErD,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,EAAE;YACnB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;YACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;YACxE,OAAO;gBACL,uEAAuE;gBACvE,sEAAsE;gBACtE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,wBAAwB,OAAO,EAAE,CAAC;gBACzD,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,OAAO,EAAE,CAAC;aAC7C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"pdf-fonts.js","sourceRoot":"","sources":["../../src/tools/pdf-fonts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@documonster/mcp",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "description": "Model Context Protocol server for documonster — lets AI assistants read, write and convert Excel, Word, PDF, CSV and ZIP documents.",
5
5
  "keywords": [
6
6
  "ai",
@@ -50,7 +50,7 @@
50
50
  "dependencies": {
51
51
  "@modelcontextprotocol/sdk": "^1.30.0",
52
52
  "zod": "^4.4.3",
53
- "documonster": "0.12.0"
53
+ "documonster": "0.13.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@types/node": "^26.2.0",