Skip to main content
Glama
cablate

Simple Document Processing MCP Server

html_formatter

Format and beautify HTML code by taking an input file path and saving the structured output to a specified directory.

Instructions

Format and beautify HTML code

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
inputPathYesPath to the input HTML file
outputDirYesDirectory where formatted HTML should be saved

Implementation Reference

  • The core handler function that implements the html_formatter tool logic: reads input HTML, parses with JSDOM, serializes (beautifies), generates unique filename, and saves to output directory.
    export async function formatHtml(inputPath: string, outputDir: string) {
      try {
        console.error(`Starting HTML formatting...`);
        console.error(`Input file: ${inputPath}`);
        console.error(`Output directory: ${outputDir}`);
    
        // 確保輸出目錄存在
        try {
          await fs.access(outputDir);
          console.error(`Output directory exists: ${outputDir}`);
        } catch {
          console.error(`Creating output directory: ${outputDir}`);
          await fs.mkdir(outputDir, { recursive: true });
          console.error(`Created output directory: ${outputDir}`);
        }
    
        const uniqueId = generateUniqueId();
        const htmlContent = await fs.readFile(inputPath, "utf-8");
        const dom = new JSDOM(htmlContent);
        const { document } = dom.window;
    
        // 格式化 HTML
        const formattedHtml = dom.serialize();
        const outputPath = path.join(outputDir, `formatted_${uniqueId}.html`);
        await fs.writeFile(outputPath, formattedHtml);
        console.error(`Written formatted HTML to ${outputPath}`);
    
        return {
          success: true,
          data: `Successfully formatted HTML: ${outputPath}`,
        };
      } catch (error) {
        console.error(`Error in formatHtml:`, error);
        return {
          success: false,
          error: error instanceof Error ? error.message : "Unknown error",
        };
      }
    }
  • The Tool object defining the schema, name, and description for the html_formatter tool.
    export const HTML_FORMAT_TOOL: Tool = {
      name: "html_formatter",
      description: "Format and beautify HTML code",
      inputSchema: {
        type: "object",
        properties: {
          inputPath: {
            type: "string",
            description: "Path to the input HTML file",
          },
          outputDir: {
            type: "string",
            description: "Directory where formatted HTML should be saved",
          },
        },
        required: ["inputPath", "outputDir"],
      },
    };
  • src/index.ts:222-238 (registration)
    Registration and dispatch logic in the main CallToolRequestSchema handler: matches tool name and invokes the formatHtml function.
    if (name === "html_formatter") {
      const { inputPath, outputDir } = args as {
        inputPath: string;
        outputDir: string;
      };
      const result = await formatHtml(inputPath, outputDir);
      if (!result.success) {
        return {
          content: [{ type: "text", text: `Error: ${result.error}` }],
          isError: true,
        };
      }
      return {
        content: [{ type: "text", text: fileOperationResponse(result.data) }],
        isError: false,
      };
    }
  • The tools array export that registers HTML_FORMAT_TOOL for the ListToolsRequestSchema.
    export const tools = [DOCUMENT_READER_TOOL, PDF_MERGE_TOOL, PDF_SPLIT_TOOL, DOCX_TO_PDF_TOOL, DOCX_TO_HTML_TOOL, HTML_CLEAN_TOOL, HTML_TO_TEXT_TOOL, HTML_TO_MARKDOWN_TOOL, HTML_EXTRACT_RESOURCES_TOOL, HTML_FORMAT_TOOL, TEXT_DIFF_TOOL, TEXT_SPLIT_TOOL, TEXT_FORMAT_TOOL, TEXT_ENCODING_CONVERT_TOOL, EXCEL_READ_TOOL, FORMAT_CONVERTER_TOOL];
  • Helper function generateUniqueId used in formatHtml to create unique output filenames.
    function generateUniqueId(): string {
      return randomBytes(9).toString("hex");
    }

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/cablate/mcp-doc-forge'

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