Skip to main content
Glama

PDF Reader MCP Server

by sylphxltd
readPdf.bench.ts4.41 kB
import { describe, bench, vi as _vi } from 'vitest'; // Prefix unused import import { handleReadPdfFunc } from '../../src/handlers/readPdf'; // Adjust path as needed import path from 'node:path'; import fs from 'node:fs/promises'; // Mock the project root - Vitest runs from the project root by default const PROJECT_ROOT = process.cwd(); const SAMPLE_PDF_PATH = 'test/fixtures/sample.pdf'; // Relative path to test PDF // Pre-check if the sample PDF exists to avoid errors during benchmark setup let pdfExists = false; try { await fs.access(path.resolve(PROJECT_ROOT, SAMPLE_PDF_PATH)); pdfExists = true; } catch (error: unknown) { // Explicitly type error as unknown // Check if error is an instance of Error before accessing message const message = error instanceof Error ? error.message : String(error); console.warn( `Warning: Sample PDF not found at ${SAMPLE_PDF_PATH}. Benchmarks requiring it will be skipped. Details: ${message}` ); } describe('read_pdf Handler Benchmarks', () => { // Benchmark getting only metadata and page count bench( 'Get Metadata & Page Count', async () => { if (!pdfExists) return; // Skip if PDF doesn't exist try { await handleReadPdfFunc({ sources: [{ path: SAMPLE_PDF_PATH }], include_metadata: true, include_page_count: true, include_full_text: false, }); } catch (error: unknown) { // Explicitly type error as unknown console.warn( `Benchmark 'Get Metadata & Page Count' failed: ${error instanceof Error ? error.message : String(error)}` ); } }, { time: 1000 } ); // Run for 1 second // Benchmark getting full text bench( 'Get Full Text', async () => { if (!pdfExists) return; try { await handleReadPdfFunc({ sources: [{ path: SAMPLE_PDF_PATH }], include_metadata: false, include_page_count: false, include_full_text: true, }); } catch (error: unknown) { // Explicitly type error as unknown console.warn( `Benchmark 'Get Full Text' failed: ${error instanceof Error ? error.message : String(error)}` ); } }, { time: 1000 } ); // Benchmark getting specific pages (e.g., page 1) bench( 'Get Specific Page (Page 1)', async () => { if (!pdfExists) return; try { await handleReadPdfFunc({ sources: [{ path: SAMPLE_PDF_PATH, pages: [1] }], include_metadata: false, include_page_count: false, include_full_text: false, // Should be ignored when pages is set }); } catch (error: unknown) { // Explicitly type error as unknown console.warn( `Benchmark 'Get Specific Page (Page 1)' failed: ${error instanceof Error ? error.message : String(error)}` ); } }, { time: 1000 } ); // Benchmark getting multiple specific pages (e.g., pages 1 & 2) bench( 'Get Specific Pages (Pages 1 & 2)', async () => { if (!pdfExists) return; // Assuming sample.pdf has at least 2 pages try { await handleReadPdfFunc({ sources: [{ path: SAMPLE_PDF_PATH, pages: [1, 2] }], include_metadata: false, include_page_count: false, }); } catch (error: unknown) { // Explicitly type error as unknown console.warn( `Benchmark 'Get Specific Pages (Pages 1 & 2)' failed: ${error instanceof Error ? error.message : String(error)}` ); } }, { time: 1000 } ); // Benchmark handling a non-existent file (error path) bench( 'Handle Non-Existent File', async () => { try { await handleReadPdfFunc({ sources: [{ path: 'non/existent/file.pdf' }], include_metadata: true, include_page_count: true, }); } catch (error: unknown) { // Explicitly type error as unknown // Expecting an error here, but log if something unexpected happens during the benchmark itself console.warn( `Benchmark 'Handle Non-Existent File' unexpectedly failed internally: ${error instanceof Error ? error.message : String(error)}` ); } }, { time: 1000 } ); // Add more benchmarks as needed (e.g., larger PDFs, URL sources if feasible in benchmark) });

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/sylphxltd/pdf-reader-mcp'

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