Skip to main content
Glama
devskido

Playwright MCP Server

by devskido

playwright_save_as_pdf

Convert web pages to PDF files with customizable formatting options including page size, margins, and background graphics.

Instructions

Save the current page as a PDF file

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
outputPathYesDirectory path where PDF will be saved
filenameNoName of the PDF file (default: page.pdf)
formatNoPage format (e.g. 'A4', 'Letter')
printBackgroundNoWhether to print background graphics
marginNoPage margins

Implementation Reference

  • Implementation of the SaveAsPdfTool class containing the execute method that saves the current Playwright page as a PDF file using page.pdf() with configurable options.
    export class SaveAsPdfTool extends BrowserToolBase {
      /**
       * Execute the save as PDF tool
       */
      async execute(args: any, context: ToolContext): Promise<ToolResponse> {
        return this.safeExecute(context, async (page) => {
          const filename = args.filename || 'page.pdf';
          const options = {
            path: path.resolve(args.outputPath || '.', filename),
            format: args.format || 'A4',
            printBackground: args.printBackground !== false,
            margin: args.margin || {
              top: '1cm',
              right: '1cm',
              bottom: '1cm',
              left: '1cm'
            }
          };
    
          await page.pdf(options);
          return createSuccessResponse(`Saved page as PDF: ${options.path}`);
        });
      }
    } 
  • Tool schema definition including name, description, and input validation schema for the playwright_save_as_pdf tool.
    {
      name: "playwright_save_as_pdf",
      description: "Save the current page as a PDF file",
      inputSchema: {
        type: "object",
        properties: {
          outputPath: { type: "string", description: "Directory path where PDF will be saved" },
          filename: { type: "string", description: "Name of the PDF file (default: page.pdf)" },
          format: { type: "string", description: "Page format (e.g. 'A4', 'Letter')" },
          printBackground: { type: "boolean", description: "Whether to print background graphics" },
          margin: {
            type: "object",
            description: "Page margins",
            properties: {
              top: { type: "string" },
              right: { type: "string" },
              bottom: { type: "string" },
              left: { type: "string" }
            }
          }
        },
        required: ["outputPath"],
      },
    },
  • Registration in the handleToolCall switch statement that routes calls to the SaveAsPdfTool's execute method.
    case "playwright_save_as_pdf":
      return await saveAsPdfTool.execute(args, context);
  • Instantiation of the SaveAsPdfTool instance during tool initialization.
    if (!saveAsPdfTool) saveAsPdfTool = new SaveAsPdfTool(server);
  • Import of the SaveAsPdfTool class.
    import { SaveAsPdfTool } from './tools/browser/output.js';

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/devskido/customed-playwright'

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