@mcpcn/markdown-converter-mcp 1.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.
Files changed (65) hide show
  1. package/.eslintrc.json +17 -0
  2. package/.prettierrc.json +8 -0
  3. package/README.md +214 -0
  4. package/dist/config/word.d.ts +67 -0
  5. package/dist/config/word.d.ts.map +1 -0
  6. package/dist/config/word.js +86 -0
  7. package/dist/config/word.js.map +1 -0
  8. package/dist/core/BaseConverter.d.ts +104 -0
  9. package/dist/core/BaseConverter.d.ts.map +1 -0
  10. package/dist/core/BaseConverter.js +203 -0
  11. package/dist/core/BaseConverter.js.map +1 -0
  12. package/dist/core/BrowserPool.d.ts +25 -0
  13. package/dist/core/BrowserPool.d.ts.map +1 -0
  14. package/dist/core/BrowserPool.js +152 -0
  15. package/dist/core/BrowserPool.js.map +1 -0
  16. package/dist/core/CacheManager.d.ts +26 -0
  17. package/dist/core/CacheManager.d.ts.map +1 -0
  18. package/dist/core/CacheManager.js +74 -0
  19. package/dist/core/CacheManager.js.map +1 -0
  20. package/dist/core/EnhancedConverter.d.ts +78 -0
  21. package/dist/core/EnhancedConverter.d.ts.map +1 -0
  22. package/dist/core/EnhancedConverter.js +227 -0
  23. package/dist/core/EnhancedConverter.js.map +1 -0
  24. package/dist/core/MarkdownRenderer.d.ts +19 -0
  25. package/dist/core/MarkdownRenderer.d.ts.map +1 -0
  26. package/dist/core/MarkdownRenderer.js +160 -0
  27. package/dist/core/MarkdownRenderer.js.map +1 -0
  28. package/dist/core/PDFConverter.d.ts +81 -0
  29. package/dist/core/PDFConverter.d.ts.map +1 -0
  30. package/dist/core/PDFConverter.js +284 -0
  31. package/dist/core/PDFConverter.js.map +1 -0
  32. package/dist/core/PDFGenerator.d.ts +32 -0
  33. package/dist/core/PDFGenerator.d.ts.map +1 -0
  34. package/dist/core/PDFGenerator.js +352 -0
  35. package/dist/core/PDFGenerator.js.map +1 -0
  36. package/dist/core/TemplateManager.d.ts +16 -0
  37. package/dist/core/TemplateManager.d.ts.map +1 -0
  38. package/dist/core/TemplateManager.js +321 -0
  39. package/dist/core/TemplateManager.js.map +1 -0
  40. package/dist/core/WordConverter.d.ts +43 -0
  41. package/dist/core/WordConverter.d.ts.map +1 -0
  42. package/dist/core/WordConverter.js +398 -0
  43. package/dist/core/WordConverter.js.map +1 -0
  44. package/dist/index.d.ts +28 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +334 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/types/index.d.ts +69 -0
  49. package/dist/types/index.d.ts.map +1 -0
  50. package/dist/types/index.js +2 -0
  51. package/dist/types/index.js.map +1 -0
  52. package/package.json +66 -0
  53. package/src/config/word.ts +164 -0
  54. package/src/core/BaseConverter.ts +275 -0
  55. package/src/core/BrowserPool.ts +176 -0
  56. package/src/core/CacheManager.ts +88 -0
  57. package/src/core/MarkdownRenderer.ts +211 -0
  58. package/src/core/PDFConverter.ts +374 -0
  59. package/src/core/PDFGenerator.ts +428 -0
  60. package/src/core/TemplateManager.ts +331 -0
  61. package/src/core/WordConverter.ts +470 -0
  62. package/src/index.ts +419 -0
  63. package/src/types/index.ts +75 -0
  64. package/src/types/remarkable.d.ts +8 -0
  65. package/tsconfig.json +23 -0
@@ -0,0 +1,398 @@
1
+ /**
2
+ * Word转换器
3
+ * 基于md-to-word-mcp项目的成功实现,继承BaseConverter
4
+ */
5
+ import { writeFile } from 'fs/promises';
6
+ import { createRequire } from 'module';
7
+ const require = createRequire(import.meta.url);
8
+ const docx = require('docx');
9
+ const { Document, Paragraph, TextRun, Packer, AlignmentType, BorderStyle, Footer, PageNumber, PageOrientation } = docx;
10
+ import { BaseConverter } from './BaseConverter.js';
11
+ import { defaultWordStyleConfig, codeBlockThemes } from '../config/word.js';
12
+ export class WordConverter extends BaseConverter {
13
+ styleConfig;
14
+ codeBlockTheme;
15
+ constructor(options = {}) {
16
+ super(options);
17
+ // 合并样式配置
18
+ this.styleConfig = { ...defaultWordStyleConfig, ...options.styleConfig };
19
+ // 设置代码块主题
20
+ if (typeof options.codeBlockTheme === 'string') {
21
+ this.codeBlockTheme = codeBlockThemes[options.codeBlockTheme] || codeBlockThemes.default;
22
+ }
23
+ else if (options.codeBlockTheme) {
24
+ this.codeBlockTheme = options.codeBlockTheme;
25
+ }
26
+ else {
27
+ this.codeBlockTheme = codeBlockThemes.default;
28
+ }
29
+ }
30
+ /**
31
+ * 转换Markdown为Word文档
32
+ */
33
+ async convert(markdownContent, outputPath, options = {}) {
34
+ const startTime = Date.now();
35
+ try {
36
+ // 检查缓存
37
+ const cacheKey = this.generateCacheKey(markdownContent, options);
38
+ const cachedResult = await this.loadFromCache(cacheKey, 'docx');
39
+ if (cachedResult) {
40
+ this.reportProgress({
41
+ stage: 'complete',
42
+ progress: 100,
43
+ message: '使用缓存结果'
44
+ }, options.progress);
45
+ await this.ensureOutputDir(outputPath);
46
+ await writeFile(outputPath, cachedResult);
47
+ const fileSize = await this.getFileSize(outputPath);
48
+ return {
49
+ success: true,
50
+ filePath: outputPath,
51
+ fileSize,
52
+ stats: {
53
+ processingTime: Date.now() - startTime,
54
+ headings: 0,
55
+ codeBlocks: 0,
56
+ paragraphs: 0,
57
+ tables: 0,
58
+ fileSize
59
+ }
60
+ };
61
+ }
62
+ this.reportProgress({
63
+ stage: 'parsing',
64
+ progress: 10,
65
+ message: '解析Markdown内容'
66
+ }, options.progress);
67
+ // 解析内容并获取统计信息
68
+ const { content, stats: parseStats } = this.parseMarkdown(markdownContent);
69
+ this.reportProgress({
70
+ stage: 'converting',
71
+ progress: 30,
72
+ message: '转换为Word文档'
73
+ }, options.progress);
74
+ // 转换为Word文档
75
+ const docChildren = this.processMarkdownToWord(content);
76
+ const doc = this.createDocument(docChildren, options);
77
+ this.reportProgress({
78
+ stage: 'saving',
79
+ progress: 80,
80
+ message: '生成Word文件'
81
+ }, options.progress);
82
+ // 生成文件
83
+ const buffer = await Packer.toBuffer(doc);
84
+ // 保存文件
85
+ await this.ensureOutputDir(outputPath);
86
+ await writeFile(outputPath, buffer);
87
+ // 保存到缓存
88
+ await this.saveToCache(cacheKey, 'docx', buffer);
89
+ const fileSize = await this.getFileSize(outputPath);
90
+ const processingTime = Date.now() - startTime;
91
+ this.reportProgress({
92
+ stage: 'complete',
93
+ progress: 100,
94
+ message: `转换完成: ${this.formatFileSize(fileSize)}`
95
+ }, options.progress);
96
+ return {
97
+ success: true,
98
+ filePath: outputPath,
99
+ fileSize,
100
+ stats: {
101
+ processingTime,
102
+ headings: parseStats.headings || 0,
103
+ codeBlocks: parseStats.codeBlocks || 0,
104
+ paragraphs: parseStats.paragraphs || 0,
105
+ tables: parseStats.tables || 0,
106
+ fileSize
107
+ }
108
+ };
109
+ }
110
+ catch (error) {
111
+ console.error('Word转换失败:', error);
112
+ return {
113
+ success: false,
114
+ error: error instanceof Error ? error.message : String(error)
115
+ };
116
+ }
117
+ }
118
+ /**
119
+ * 处理Markdown内容转换为Word段落
120
+ */
121
+ processMarkdownToWord(markdownContent) {
122
+ const lines = markdownContent.split('\n');
123
+ const docChildren = [];
124
+ let inCodeBlock = false;
125
+ let codeBlockContent = '';
126
+ let codeBlockLanguage = '';
127
+ for (let i = 0; i < lines.length; i++) {
128
+ const line = lines[i];
129
+ const trimmedLine = line.trim();
130
+ // 处理代码块开始/结束
131
+ if (trimmedLine.startsWith('```')) {
132
+ if (!inCodeBlock) {
133
+ // 代码块开始
134
+ inCodeBlock = true;
135
+ codeBlockLanguage = trimmedLine.substring(3).trim();
136
+ codeBlockContent = '';
137
+ }
138
+ else {
139
+ // 代码块结束
140
+ inCodeBlock = false;
141
+ // 创建优化的代码块
142
+ const codeBlockParagraphs = this.createOptimizedCodeBlock(codeBlockContent, codeBlockLanguage);
143
+ docChildren.push(...codeBlockParagraphs);
144
+ // 在代码块后添加分隔段落
145
+ docChildren.push(new Paragraph({ text: '' }));
146
+ codeBlockContent = '';
147
+ codeBlockLanguage = '';
148
+ }
149
+ continue;
150
+ }
151
+ if (inCodeBlock) {
152
+ // 收集代码块内容
153
+ codeBlockContent += (codeBlockContent ? '\n' : '') + line;
154
+ continue;
155
+ }
156
+ // 处理标题
157
+ if (trimmedLine.startsWith('#')) {
158
+ const match = trimmedLine.match(/^#+/);
159
+ if (match) {
160
+ const level = match[0].length;
161
+ const headingText = trimmedLine.substring(level).trim();
162
+ if (level >= 1 && level <= 6) {
163
+ docChildren.push(this.createHeading(headingText, level));
164
+ continue;
165
+ }
166
+ }
167
+ }
168
+ // 处理普通段落
169
+ if (trimmedLine) {
170
+ docChildren.push(this.createParagraph(trimmedLine));
171
+ }
172
+ else {
173
+ // 空行
174
+ docChildren.push(new Paragraph({ text: '' }));
175
+ }
176
+ }
177
+ return docChildren;
178
+ }
179
+ /**
180
+ * 创建优化的代码块 - 基于成功的实现
181
+ */
182
+ createOptimizedCodeBlock(code, language) {
183
+ const lines = code.split('\n');
184
+ const paragraphs = [];
185
+ // 如果有语言标识,添加语言标签段落
186
+ if (language && this.codeBlockTheme.showLanguage) {
187
+ paragraphs.push(new Paragraph({
188
+ children: [
189
+ new TextRun({
190
+ text: `语言: ${language}`,
191
+ font: this.codeBlockTheme.fontFamily,
192
+ size: this.codeBlockTheme.fontSize - 4, // 稍微小一点
193
+ bold: true,
194
+ color: '666666',
195
+ shading: { fill: 'E8E8E8' }
196
+ })
197
+ ],
198
+ spacing: { before: this.styleConfig.spacing.codeBlock / 2, after: 60 },
199
+ shading: { fill: 'E8E8E8' },
200
+ border: {
201
+ top: { style: BorderStyle.SINGLE, size: 1, color: this.codeBlockTheme.border },
202
+ bottom: { style: BorderStyle.SINGLE, size: 1, color: this.codeBlockTheme.border },
203
+ left: { style: BorderStyle.SINGLE, size: 1, color: this.codeBlockTheme.border },
204
+ right: { style: BorderStyle.SINGLE, size: 1, color: this.codeBlockTheme.border },
205
+ },
206
+ indent: { left: this.styleConfig.margins.codeBlock.left }
207
+ }));
208
+ }
209
+ // 为每一行代码创建单独的段落 - 这是关键的成功因素
210
+ lines.forEach((line, index) => {
211
+ // 处理空行
212
+ const displayText = line.trim() === '' ? ' ' : line;
213
+ // 保持原有的缩进
214
+ const leadingSpaces = line.match(/^(\s*)/)?.[1] || '';
215
+ const indentLevel = leadingSpaces.length * 50; // 每个空格50单位缩进
216
+ paragraphs.push(new Paragraph({
217
+ children: [
218
+ new TextRun({
219
+ text: displayText,
220
+ font: this.codeBlockTheme.fontFamily,
221
+ size: this.codeBlockTheme.fontSize,
222
+ color: this.codeBlockTheme.textColor
223
+ })
224
+ ],
225
+ spacing: {
226
+ line: this.styleConfig.spacing.line, // 固定行高
227
+ lineRule: 'exact'
228
+ },
229
+ shading: { fill: this.codeBlockTheme.background },
230
+ border: {
231
+ left: { style: BorderStyle.SINGLE, size: 1, color: this.codeBlockTheme.border },
232
+ right: { style: BorderStyle.SINGLE, size: 1, color: this.codeBlockTheme.border },
233
+ ...(index === 0 && !this.codeBlockTheme.showLanguage ?
234
+ { top: { style: BorderStyle.SINGLE, size: 1, color: this.codeBlockTheme.border } } : {}),
235
+ ...(index === lines.length - 1 ?
236
+ { bottom: { style: BorderStyle.SINGLE, size: 1, color: this.codeBlockTheme.border } } : {})
237
+ },
238
+ indent: {
239
+ left: this.styleConfig.margins.codeBlock.left + indentLevel
240
+ }
241
+ }));
242
+ });
243
+ return paragraphs;
244
+ }
245
+ /**
246
+ * 创建标题段落
247
+ */
248
+ createHeading(text, level) {
249
+ let fontSize;
250
+ switch (level) {
251
+ case 1:
252
+ fontSize = this.styleConfig.fontSizes.heading1;
253
+ break;
254
+ case 2:
255
+ fontSize = this.styleConfig.fontSizes.heading2;
256
+ break;
257
+ case 3:
258
+ fontSize = this.styleConfig.fontSizes.heading3;
259
+ break;
260
+ case 4:
261
+ fontSize = this.styleConfig.fontSizes.heading4;
262
+ break;
263
+ case 5:
264
+ fontSize = this.styleConfig.fontSizes.heading5;
265
+ break;
266
+ default:
267
+ fontSize = this.styleConfig.fontSizes.heading5;
268
+ break;
269
+ }
270
+ return new Paragraph({
271
+ children: [
272
+ new TextRun({
273
+ text: text,
274
+ font: this.styleConfig.fonts.heading,
275
+ size: fontSize,
276
+ bold: true,
277
+ color: this.styleConfig.colors.heading
278
+ })
279
+ ],
280
+ heading: `Heading${Math.min(level, 6)}`,
281
+ spacing: {
282
+ before: this.styleConfig.spacing.heading,
283
+ after: this.styleConfig.spacing.paragraph
284
+ },
285
+ alignment: level === 1 ? AlignmentType.CENTER : AlignmentType.LEFT
286
+ });
287
+ }
288
+ /**
289
+ * 创建普通段落
290
+ */
291
+ createParagraph(text) {
292
+ // 清理和标准化文本 - 修复乱码问题
293
+ const cleanedText = this.cleanText(text);
294
+ // 处理内联代码和其他Markdown语法
295
+ const children = this.processInlineMarkdown(cleanedText);
296
+ return new Paragraph({
297
+ children,
298
+ spacing: { after: this.styleConfig.spacing.paragraph }
299
+ });
300
+ }
301
+ /**
302
+ * 处理行内Markdown语法
303
+ */
304
+ processInlineMarkdown(text) {
305
+ const runs = [];
306
+ const codeRegex = /`([^`]+)`/g;
307
+ let lastIndex = 0;
308
+ let match;
309
+ // 处理内联代码
310
+ while ((match = codeRegex.exec(text)) !== null) {
311
+ // 添加代码前的普通文本
312
+ if (match.index > lastIndex) {
313
+ const normalText = text.substring(lastIndex, match.index);
314
+ if (normalText.trim()) {
315
+ runs.push(new TextRun({
316
+ text: normalText,
317
+ font: this.styleConfig.fonts.default,
318
+ size: this.styleConfig.fontSizes.paragraph,
319
+ color: this.styleConfig.colors.text
320
+ }));
321
+ }
322
+ }
323
+ // 添加代码文本
324
+ runs.push(new TextRun({
325
+ text: match[1],
326
+ font: this.styleConfig.fonts.code,
327
+ size: this.styleConfig.fontSizes.code,
328
+ color: this.styleConfig.colors.code,
329
+ shading: { fill: this.styleConfig.colors.codeBackground },
330
+ border: {
331
+ style: BorderStyle.SINGLE,
332
+ size: 1,
333
+ color: this.styleConfig.colors.codeBorder
334
+ }
335
+ }));
336
+ lastIndex = codeRegex.lastIndex;
337
+ }
338
+ // 添加剩余的普通文本
339
+ if (lastIndex < text.length) {
340
+ const remainingText = text.substring(lastIndex);
341
+ if (remainingText.trim()) {
342
+ runs.push(new TextRun({
343
+ text: remainingText,
344
+ font: this.styleConfig.fonts.default,
345
+ size: this.styleConfig.fontSizes.paragraph,
346
+ color: this.styleConfig.colors.text
347
+ }));
348
+ }
349
+ }
350
+ // 如果没有找到任何特殊格式,返回普通文本
351
+ if (runs.length === 0) {
352
+ runs.push(new TextRun({
353
+ text: text,
354
+ font: this.styleConfig.fonts.default,
355
+ size: this.styleConfig.fontSizes.paragraph,
356
+ color: this.styleConfig.colors.text
357
+ }));
358
+ }
359
+ return runs;
360
+ }
361
+ /**
362
+ * 创建Word文档
363
+ */
364
+ createDocument(children, options) {
365
+ const docOptions = {
366
+ sections: [{
367
+ properties: {
368
+ page: {
369
+ margin: this.styleConfig.margins.page,
370
+ size: {
371
+ orientation: PageOrientation.PORTRAIT,
372
+ },
373
+ },
374
+ },
375
+ children,
376
+ }],
377
+ };
378
+ // 添加页脚(页码)
379
+ if (options.addFooter !== false) {
380
+ docOptions.sections[0].footers = {
381
+ default: new Footer({
382
+ children: [
383
+ new Paragraph({
384
+ alignment: AlignmentType.CENTER,
385
+ children: [
386
+ new TextRun({
387
+ children: [PageNumber.CURRENT],
388
+ }),
389
+ ],
390
+ }),
391
+ ],
392
+ }),
393
+ };
394
+ }
395
+ return new Document(docOptions);
396
+ }
397
+ }
398
+ //# sourceMappingURL=WordConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WordConverter.js","sourceRoot":"","sources":["../../src/core/WordConverter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * 统一的Markdown转换MCP服务器
4
+ * 支持PDF和Word格式转换,具有优化的代码块显示
5
+ */
6
+ export declare class MarkdownConverterMCPServer {
7
+ private server;
8
+ private pdfConverter;
9
+ private wordConverter;
10
+ private isShuttingDown;
11
+ private requestsInProgress;
12
+ constructor();
13
+ private setupToolHandlers;
14
+ /**
15
+ * 处理PDF转换
16
+ */
17
+ private handlePDFConversion;
18
+ /**
19
+ * 处理Word转换
20
+ */
21
+ private handleWordConversion;
22
+ private generateRequestId;
23
+ private isFilePath;
24
+ private setupErrorHandling;
25
+ private setupGracefulShutdown;
26
+ run(): Promise<void>;
27
+ }
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAyBH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,kBAAkB,CAAqB;;IAsC/C,OAAO,CAAC,iBAAiB;IA2IzB;;OAEG;YACW,mBAAmB;IAyEjC;;OAEG;YACW,oBAAoB;IAiElC,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,qBAAqB;IAuBhB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAYlC"}