Skip to main content
Glama
choipureum

MCP File Contents Reader

by choipureum
README.md


# MCP File Contents Reader

A Model Context Protocol (MCP) server for reading and analyzing various file formats including <b>PDF, Excel, Word, and PowerPoint documents</b>.

## Features

- **Multi-format Support**: Read PDF, Excel (.xlsx, .xls), Word (.docx, .doc), and PowerPoint (.pptx, .ppt) files
- **Content Analysis**: Extract and analyze file contents with structured information extraction
- **Document Search**: Search for specific content across multiple documents
- **File Upload**: Support for temporary file upload and processing
- **MCP Integration**: Full Model Context Protocol compliance

## Installation

### Using uvx (Recommended)

```bash
uvx mcp-file-contents-reader
```

### Using pip

```bash
pip install mcp-file-contents-reader
```

### From Source

```bash
git clone https://github.com/choipureum/mcp-file-contents-reader.git
cd mcp-file-contents-reader
pip install -e .
```

## Usage

### MCP Configuration

Add the following to your `mcp.json` configuration file:

```json
{
  "mcpServers": {
    "file-reader": {
      "command": "uvx",
      "args": ["mcp-file-contents-reader"]
    }
  }
}
```

Or if installed via pip:

```json
{
  "mcpServers": {
    "file-reader": {
      "command": "mcp-file-contents-reader"
    }
  }
}
```

### Available Tools

#### 1. `read_file`

Read Excel, PDF, PPT, Word files and return content as text.

**Parameters:**

- `file_path` (required): Path to the file to read
- `sheet_name` (optional): Sheet name for Excel files
- `page_range` (optional): Page range for PDF files (e.g., '1-5' or '1,3,5')

#### 2. `search_documents`

Search for specific content in Documents directory and analyze files.

**Parameters:**

- `keywords` (required): Keywords to search for in file content
- `search_path` (optional): Directory path to search (default: ~/Documents)
- `file_types` (optional): File types to search (default: ["pdf", "docx", "xlsx", "pptx", "doc", "xls", "ppt"])

#### 3. `analyze_file_content`

Analyze specific file content in detail and extract structured information.

**Parameters:**

- `file_path` (required): Path to the file to analyze
- `extract_patterns` (optional): Specific patterns or information types to extract

#### 4. `upload_file`

Upload and temporarily store Base64 encoded file data.

**Parameters:**

- `file_data` (required): Base64 encoded file data
- `filename` (required): Filename with extension

#### 5. `read_uploaded_file`

Read uploaded file and return content.

**Parameters:**

- `file_id` (required): ID of the uploaded file

#### 6. `list_uploaded_files`

Return list of uploaded files.

#### 7. `delete_uploaded_file`

Delete uploaded file.

**Parameters:**

- `file_id` (required): ID of the file to delete

#### 8. `get_file_info`

Return basic information about a file.

**Parameters:**

- `file_path` (required): Path to the file to get information about

#### 9. `list_supported_formats`

Return list of supported file formats.

## Supported File Formats

- **Excel**: .xlsx, .xls
- **PDF**: .pdf
- **PowerPoint**: .pptx, .ppt
- **Word**: .docx, .doc

## Example Usage

### Search for donation receipts

```json
{
  "tool": "search_documents",
  "arguments": {
    "keywords": ["donation", "receipt", "charity", "fund"],
    "search_path": "/Users/username/Documents",
    "file_types": ["pdf", "docx", "xlsx"]
  }
}
```

### Analyze a specific file

```json
{
  "tool": "analyze_file_content",
  "arguments": {
    "file_path": "/Users/username/Documents/receipt.pdf",
    "extract_patterns": ["donor", "amount", "organization", "date"]
  }
}
```

## Development

### Setup Development Environment

```bash
git clone https://github.com/choipureum/mcp-file-contents-reader.git
cd mcp-file-contents-reader
pip install -e ".[dev]"
```

### Running Tests

```bash
pytest
```

### Code Formatting

```bash
black mcp_file_reader/
```

### Type Checking

```bash
mypy mcp_file_reader/
```

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests for your changes
5. Run the test suite
6. Submit a pull request

## License

This project is licensed under the MIT License - see the LICENSE file for details.

## Changelog

### 1.0.0

- Initial release
- Support for PDF, Excel, Word, and PowerPoint files
- MCP server implementation
- Document search and analysis capabilities