Skip to main content
Glama

PDF Reader MCP Server

by sylphxltd
techContext.md3.85 kB
<!-- Version: 1.10 | Last Updated: 2025-04-06 | Updated By: Sylph --> # Tech Context: PDF Reader MCP Server ## 1. Core Technologies - **Runtime:** Node.js (>= 18.0.0 recommended) - **Language:** TypeScript (Compiled to JavaScript for execution) - **Package Manager:** pnpm (Switched from npm to align with guidelines) - **Linter:** ESLint (with TypeScript support, including **strict type-aware rules**) - **Formatter:** Prettier - **Testing:** Vitest (with **~95% coverage achieved**) - **Git Hooks:** Husky, lint-staged, commitlint - **Dependency Update:** Dependabot ## 2. Key Libraries/Dependencies - **`@modelcontextprotocol/sdk`:** The official SDK for implementing MCP servers and clients. - **`glob`:** Library for matching files using glob patterns. - **`pdfjs-dist`:** Mozilla's PDF rendering and parsing library. - **`zod`:** Library for schema declaration and validation. - **`zod-to-json-schema`:** Utility to convert Zod schemas to JSON schemas. - **Dev Dependencies (Key):** - **`typescript`:** TypeScript compiler (`tsc`). - **`@types/node`:** TypeScript type definitions for Node.js. - **`@types/glob`:** TypeScript type definitions for `glob`. - **`vitest`:** Test runner framework. - **`@vitest/coverage-v8`:** Coverage provider for Vitest. - **`eslint`:** Core ESLint library. - **`typescript-eslint`:** Tools for ESLint + TypeScript integration. - **`prettier`:** Code formatter. - **`eslint-config-prettier`:** Turns off ESLint rules that conflict with Prettier. - **`husky`:** Git hooks manager. - **`lint-staged`:** Run linters on staged files. - **`@commitlint/cli` & `@commitlint/config-conventional`:** Commit message linting. - **`standard-version`:** Release automation tool. - **`typedoc` & `typedoc-plugin-markdown`:** API documentation generation. - **`vitepress` & `vue`:** Documentation website framework. ## 3. Development Setup - **Source Code:** Located in the `src` directory. - **Testing Code:** Located in the `test` directory. - **Main File:** `src/index.ts`. - **Configuration:** - `tsconfig.json`: TypeScript compiler options (**strictest settings enabled**, includes recommended options like `declaration` and `sourceMap`). - `vitest.config.ts`: Vitest test runner configuration (**100% coverage thresholds set**, ~95% achieved). - `eslint.config.js`: ESLint flat configuration (integrates Prettier, enables **strict type-aware linting** and **additional guideline rules**). - `.prettierrc.cjs`: Prettier formatting rules. - `.gitignore`: Specifies intentionally untracked files (`node_modules/`, `build/`, `coverage/`, etc.). - `.github/workflows/ci.yml`: GitHub Actions workflow (validation, publishing, release, **fixed Action versions**, **Coveralls**). - `.github/dependabot.yml`: Automated dependency update configuration. - `package.json`: Project metadata, dependencies, and npm scripts (includes `start`, `typecheck`, `prepare`, `benchmark`, `release`, `clean`, `docs:api`, `prepublishOnly`, etc.). - `commitlint.config.cjs`: Commitlint configuration. - `.husky/`: Directory containing Git hook scripts. - **Build Output:** Compiled JavaScript in the `build` directory. - **Execution:** Run via `node build/index.js` or `npm start`. ## 4. Technical Constraints & Considerations - **Node.js Environment:** Relies on Node.js runtime (>=18.0.0) and built-in modules. - **Permissions:** Server process permissions affect filesystem operations. - **Cross-Platform Compatibility:** Filesystem behaviors might differ. Code uses Node.js `path` module to mitigate. - **Error Handling:** Relies on Node.js error codes and McpError. - **Security Model:** Relies on `resolvePath` for path validation within `PROJECT_ROOT`. - **Project Root Determination:** `PROJECT_ROOT` is the server's `process.cwd()`. The launching process must set this correctly.

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