semvec/pypi-packages huggingface dataset:
iflow-mcp_danielkennedy1_pdf-tools-mcp 0.3.0
Add your description here
Requires Python: >=3.12

# PDF Tools MCP

[![smithery badge](https://smithery.ai/badge/@danielkennedy1/pdf-tools-mcp)](https://smithery.ai/server/@danielkennedy1/pdf-tools-mcp)

A comprehensive set of PDF manipulation tools built with the Model Context Protocol (MCP) framework.

## Features

### Local PDF Operations
- **Display**: Render PDF pages as images
- **Merge**: Combine multiple pages into a single long page
- **Metadata**: Extract document metadata
- **Text**: Extract text blocks and detailed text information
- **Snippets**: Create freeform or full-width snippets from PDF pages
- **Fuse**: Combine pages from multiple documents into a single document

### Remote PDF Operations
- **Display**: Render remote PDF pages as images
- **Download**: Fetch PDFs from URLs to local storage

## Installation

### Installing via Smithery

To install PDF Tools for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@danielkennedy1/pdf-tools-mcp):

```bash
npx -y @smithery/cli install @danielkennedy1/pdf-tools-mcp --client claude
```

### Manual Installation
```bash
# Clone the repository
git clone https://github.com/yourusername/pdf-tools-mcp.git
cd pdf-tools-mcp

# Install dependencies
uv pip install -e .
```

## Usage

Start the MCP server:

```bash
python -m src.main
```

The server provides PDF manipulation endpoints through the MCP protocol.

## Development

- Python 3.12+ required
- Uses the MCP framework for tool registration
- PDF documents are stored with UUID4 filenames for security

```bash
# Update dependencies
uv pip install -e . --upgrade

# Commit changes (uses conventional commit format)
cz commit
```

## Dependencies

- [MCP Framework](https://github.com/modelcontextprotocol/python-sdk)
- [PyMuPDF](https://github.com/pymupdf/PyMuPDF)
- aiohttp/aiofiles for async operations
- python-magic-bin for file type detection

## License

MIT. See [LICENSE](LICENSE).
rpyc-import-bridge 0.2.0
import proxying for rpyc
Requires Python: >=3.11

# rpyc import bridge

import modules over rpyc.

this is a terrible hack and nobody should use it.

## client

```py
from rpyc_import_bridge import ImportBridge

bridge = ImportBridge(rpyc_connection)

# imports now work naturally
from numpy import array
from mymodule.things import Function
```

by default, the bridge only intercepts modules that are missing locally.
pass module names to force remote even if a local copy exists:

```py
bridge = ImportBridge(rpyc_connection, "mypackage1", "mypackage2")
```

## server

```py
class Service(rpyc.Service):
    def exposed_import_module(self, module_name):
        import importlib
        return importlib.import_module(module_name)
```

## testing

```sh
uv run python ./test/server/test_server.py
uv run python ./test/client/test_suite.py
```