Skip to main content
Glama

Markdownify MCP Server - UTF-8 Enhanced

by JDJR2024

docx-to-markdown

Convert DOCX files to Markdown format using the Markdownify MCP Server. Ideal for transforming Word documents into structured, UTF-8 enhanced Markdown content.

Instructions

Convert a DOCX file to markdown

Input Schema

NameRequiredDescriptionDefault
filepathYesAbsolute path of the DOCX file to convert

Input Schema (JSON Schema)

{ "properties": { "filepath": { "description": "Absolute path of the DOCX file to convert", "type": "string" } }, "required": [ "filepath" ], "type": "object" }

Implementation Reference

  • Handler logic in the tool call dispatcher for file-based converters including "docx-to-markdown". Validates filepath and calls Markdownify.toMarkdown
    case tools.PDFToMarkdownTool.name: case tools.ImageToMarkdownTool.name: case tools.AudioToMarkdownTool.name: case tools.DocxToMarkdownTool.name: case tools.XlsxToMarkdownTool.name: case tools.PptxToMarkdownTool.name: if (!validatedArgs.filepath) { throw new Error("File path is required for this tool"); } result = await Markdownify.toMarkdown({ filePath: validatedArgs.filepath, projectRoot: validatedArgs.projectRoot, uvPath: validatedArgs.uvPath || process.env.UV_PATH, }); break;
  • Tool schema definition for "docx-to-markdown", specifying input as filepath
    export const DocxToMarkdownTool = ToolSchema.parse({ name: "docx-to-markdown", description: "Convert a DOCX file to markdown", inputSchema: { type: "object", properties: { filepath: { type: "string", description: "Absolute path of the DOCX file to convert", }, }, required: ["filepath"], }, });
  • src/server.ts:31-35 (registration)
    Tool registration via ListToolsRequestHandler returning all tools from tools.ts export (includes docx-to-markdown)
    server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: Object.values(tools), }; });
  • Core helper function Markdownify.toMarkdown that performs the file (DOCX) to markdown conversion using markitdown executable in a virtual environment
    static async toMarkdown({ filePath, url, projectRoot = path.resolve(__dirname, ".."), uvPath = "~/.local/bin/uv", }: { filePath?: string; url?: string; projectRoot?: string; uvPath?: string; }): Promise<MarkdownResult> { try { let inputPath: string; let isTemporary = false; if (url) { const response = await fetch(url); const content = await response.text(); inputPath = await this.saveToTempFile(content); isTemporary = true; } else if (filePath) { inputPath = filePath; } else { throw new Error("Either filePath or url must be provided"); } const text = await this._markitdown(inputPath, projectRoot, uvPath); const outputPath = await this.saveToTempFile(text); if (isTemporary) { fs.unlinkSync(inputPath); } return { path: outputPath, text }; } catch (e: unknown) { if (e instanceof Error) { throw new Error(`Error processing to Markdown: ${e.message}`); } else { throw new Error("Error processing to Markdown: Unknown error occurred"); } } }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JDJR2024/markdownify-mcp-utf8'

If you have feedback or need assistance with the MCP directory API, please join our Discord server