@sylphlab/tools-pdf
Version:
Core logic for MCP PDF tools (text extraction, etc.)
80 lines (58 loc) • 3.31 kB
Markdown
[](https://www.npmjs.com/package/@sylphlab/tools-pdf)
**Core logic for extracting text and potentially other content from PDF documents.**
This package provides the underlying logic and tool definitions for processing PDF files, primarily focusing on text extraction. It leverages the `mupdf` library for efficient parsing and is designed using `@sylphlab/tools-core`. This package serves as the foundation for `@sylphlab/tools-pdf-mcp`.
Extracting information from PDF documents is a common requirement for data processing pipelines, RAG systems, and AI agents. This package offers standardized tools for accessing PDF content, defined using `@sylphlab/tools-core` for consistency and reusability across different platforms.
* `getTextTool` (or similar): Extracts text content from PDF files.
* Can extract text from the entire document.
* Can extract text from specific pages or page ranges.
* Can optionally retrieve PDF metadata (author, title, etc.).
* Can optionally retrieve the total page count.
* *(Potential Future Tools):*
* Conversion to Markdown or other formats.
* Image extraction.
## Key Features
* **Text Extraction:** Provides flexible options for retrieving text content.
* **Metadata & Page Count:** Allows fetching document properties.
* **Efficient Parsing:** Uses the `mupdf` library, known for its performance and accuracy.
* **Standardized Definition:** Uses the `SylphTool` structure from `@sylphlab/tools-core`.
## Installation
This package is primarily intended for internal use within the `mcp` monorepo, serving as a dependency for `@sylphlab/tools-pdf-mcp` and potentially other packages needing direct PDF processing logic.
```bash
# From the root of the monorepo
pnpm add @sylphlab/tools-pdf --filter <your-package-name>
```
## Usage (Conceptual)
The tool definitions are typically consumed by adapters or MCP server implementations.
```typescript
import { getTextTool } from '@sylphlab/tools-pdf';
import { adaptToolToMcp } from '@sylphlab/tools-adaptor-mcp'; // Example adapter
// Example: Using the tool definition directly
async function runGetText() {
const input = {
items: [
{ filePath: './path/to/document.pdf', pages: [1, 3] } // Extract pages 1 and 3
],
includeMetadata: true
};
// Validate input against getTextTool.inputSchema...
const output = await getTextTool.handler(input);
// Validate output against getTextTool.outputSchema...
if (output.results && output.results[0]?.success) {
console.log('Metadata:', output.results[0].data.metadata);
console.log('Page 1 Text:', output.results[0].data.page_texts.find(p => p.page === 1)?.text);
console.log('Page 3 Text:', output.results[0].data.page_texts.find(p => p.page === 3)?.text);
}
}
// Example: Adapting for MCP
const mcpPdfTool = adaptToolToMcp(getTextTool);
// This adapted definition would then be used to create the MCP server.
```
* `@sylphlab/tools-core`: Provides `defineTool` and core types.
* `zod`: For input/output schema definition and validation.
* `mupdf`: The core library used for parsing PDF documents.
---
Developed by Sylph Lab.