convert_docx_to_html_with_images
Convert DOCX files to HTML with images embedded as base64 data URIs for web-friendly document display.
Instructions
Convert a DOCX file to HTML with embedded images as base64 data URIs
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Absolute path to the DOCX file to convert |
Implementation Reference
- src/index.ts:72-121 (handler)The main handler function for the 'convert_docx_to_html_with_images' tool. It uses mammoth to convert DOCX to HTML, embedding images as base64 data URIs, formats the output as markdown with the HTML code block, and handles errors.async ({ filePath }) => { try { const absolutePath = path.resolve(filePath); await fs.access(absolutePath); const result = await mammoth.convertToHtml( { path: absolutePath }, { convertImage: mammoth.images.imgElement(async (image: any) => { const buffer = await image.read(); const base64 = buffer.toString('base64'); const contentType = image.contentType || 'image/png'; return { src: `data:${contentType};base64,${base64}`, }; }), } ); let output = `# Conversion Result (with images)\n\n`; output += `**File**: ${absolutePath}\n\n`; output += `## HTML Output:\n\n\`\`\`html\n${result.value}\n\`\`\`\n\n`; if (result.messages.length > 0) { output += `## Messages:\n\n`; result.messages.forEach((msg: any) => { output += `- ${msg.type}: ${msg.message}\n`; }); } return { content: [ { type: 'text', text: output, }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error converting DOCX file: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } }
- src/index.ts:66-71 (schema)Input schema and description for the tool registration.{ description: 'Convert a DOCX file to HTML with embedded images as base64 data URIs', inputSchema: { filePath: z.string().describe('Absolute path to the DOCX file to convert'), }, },
- src/index.ts:64-122 (registration)Registration of the 'convert_docx_to_html_with_images' tool on the MCP server, including schema and handler function.server.registerTool( 'convert_docx_to_html_with_images', { description: 'Convert a DOCX file to HTML with embedded images as base64 data URIs', inputSchema: { filePath: z.string().describe('Absolute path to the DOCX file to convert'), }, }, async ({ filePath }) => { try { const absolutePath = path.resolve(filePath); await fs.access(absolutePath); const result = await mammoth.convertToHtml( { path: absolutePath }, { convertImage: mammoth.images.imgElement(async (image: any) => { const buffer = await image.read(); const base64 = buffer.toString('base64'); const contentType = image.contentType || 'image/png'; return { src: `data:${contentType};base64,${base64}`, }; }), } ); let output = `# Conversion Result (with images)\n\n`; output += `**File**: ${absolutePath}\n\n`; output += `## HTML Output:\n\n\`\`\`html\n${result.value}\n\`\`\`\n\n`; if (result.messages.length > 0) { output += `## Messages:\n\n`; result.messages.forEach((msg: any) => { output += `- ${msg.type}: ${msg.message}\n`; }); } return { content: [ { type: 'text', text: output, }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error converting DOCX file: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } } );