Chris Coutinho
|
a36038422b
|
feat: Add text processing background worker for telling client about progress
|
2025-10-25 19:52:45 +02:00 |
|
Chris Coutinho
|
2147fc1696
|
refactor: Transform document parsing into pluggable processor architecture
Refactors PR #190's hardcoded Unstructured.io integration into a flexible,
extensible plugin system supporting multiple text extraction engines.
- **`DocumentProcessor` ABC**: Abstract interface for all processors
- **`ProcessorRegistry`**: Central registry for discovery and routing
- **`ProcessingResult`**: Standardized output format across processors
- **`UnstructuredProcessor`**: Refactored from `UnstructuredClient`
- **`TesseractProcessor`**: Local OCR for images (lightweight alternative)
- **`CustomHTTPProcessor`**: Generic wrapper for custom HTTP APIs
- New `get_document_processor_config()` returns structured config
- Supports enabling/disabling individual processors
- Per-processor configuration via environment variables
- **Breaking Change**: `ENABLE_UNSTRUCTURED_PARSING` replaced with:
- `ENABLE_DOCUMENT_PROCESSING=true/false` (master switch)
- `ENABLE_UNSTRUCTURED=true/false` (per-processor)
- `ENABLE_TESSERACT=true/false`
- `ENABLE_CUSTOM_PROCESSOR=true/false`
- `parse_document()` now uses `ProcessorRegistry`
- Auto-selects appropriate processor based on MIME type
- Processor priority system (Unstructured=10, Tesseract=5, Custom=1)
- `initialize_document_processors()` registers processors at startup
- Integrated into both BasicAuth and OAuth lifespans
- Graceful degradation if processors fail to initialize
```env
ENABLE_DOCUMENT_PROCESSING=false
ENABLE_UNSTRUCTURED=false
UNSTRUCTURED_API_URL=http://unstructured:8000
UNSTRUCTURED_STRATEGY=auto # auto|fast|hi_res
UNSTRUCTURED_LANGUAGES=eng,deu
ENABLE_TESSERACT=false
TESSERACT_LANG=eng
ENABLE_CUSTOM_PROCESSOR=false
CUSTOM_PROCESSOR_URL=http://localhost:9000/process
CUSTOM_PROCESSOR_TYPES=application/pdf,image/jpeg
```
- **Removed**: `tests/test_unstructured_config.py` (legacy tests)
- **Added**: `tests/unit/test_document_processor_config.py`
- 7 unit tests for new config system
- Tests individual and multi-processor configurations
- **Added**:
- `nextcloud_mcp_server/document_processors/__init__.py`
- `nextcloud_mcp_server/document_processors/base.py`
- `nextcloud_mcp_server/document_processors/registry.py`
- `nextcloud_mcp_server/document_processors/unstructured.py`
- `nextcloud_mcp_server/document_processors/tesseract.py`
- `nextcloud_mcp_server/document_processors/custom_http.py`
- `tests/unit/test_document_processor_config.py`
- **Modified**:
- `nextcloud_mcp_server/config.py` - New plugin config system
- `nextcloud_mcp_server/app.py` - Processor initialization
- `nextcloud_mcp_server/utils/document_parser.py` - Uses registry
- `nextcloud_mcp_server/server/webdav.py` - Import updates
- `env.sample` - New configuration format
- `docker-compose.yml` - (profile changes from previous work)
- **Removed**:
- `nextcloud_mcp_server/client/unstructured_client.py` - Replaced by UnstructuredProcessor
- `tests/test_unstructured_config.py` - Replaced with new tests
✅ **Extensible**: Add processors without modifying core code
✅ **Testable**: Mock processors for unit tests
✅ **Configurable**: Enable only needed processors
✅ **Flexible**: Choose fast (Tesseract) vs accurate (Unstructured)
✅ **Opt-in**: Disabled by default, no mandatory dependencies
Users upgrading from PR #190 need to update environment variables:
```bash
ENABLE_UNSTRUCTURED_PARSING=true
ENABLE_DOCUMENT_PROCESSING=true
ENABLE_UNSTRUCTURED=true
```
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-25 19:28:35 +02:00 |
|
yuisheaven
|
f0e5333e43
|
Merge branch 'master' into feature/introduce_files_parsing_with_unstructured_service_for_webdav_files_retrieval
|
2025-10-25 17:23:38 +02:00 |
|
Chris Coutinho
|
81ca799410
|
fix: Update webdav models for proper serialization
|
2025-10-24 06:01:02 +02:00 |
|
Chris Coutinho
|
d452684535
|
feat: Split read/write scopes into app:read/write scopes
|
2025-10-24 04:38:49 +02:00 |
|
yuisheaven
|
29df645d53
|
Merge branch 'master' into feature/introduce_files_parsing_with_unstructured_service_for_webdav_files_retrieval
|
2025-10-23 21:30:09 +02:00 |
|
Chris Coutinho
|
c069d78f80
|
feat: Initialize JWT-scoped tools
|
2025-10-22 06:21:16 +02:00 |
|
yuisheaven
|
64649c902d
|
Merge branch 'master' into feature/introduce_files_parsing_with_unstructured_service_for_webdav_files_retrieval
|
2025-10-21 20:37:00 +02:00 |
|
Chris Coutinho
|
6158a890af
|
feat(webdav): Add search and list favorite response tools
|
2025-10-18 22:02:26 +02:00 |
|
Chris Coutinho
|
4d7e4b9a4b
|
feat(server): Experimental support for OAuth2/OIDC authentication
|
2025-10-14 01:22:15 +02:00 |
|
yuisheaven
|
3ff6346c03
|
ran ruff format via uv
|
2025-10-05 02:16:42 +02:00 |
|
yuisheaven
|
76dce41ed9
|
added first versoin of the new document_parser utility and added it to the webdav file retrieval logic
|
2025-10-04 04:28:24 +02:00 |
|
Pedro Ruiz
|
5d4902a73e
|
feat: Add WebDAV resource copy functionality
|
2025-09-10 22:15:16 +02:00 |
|
Pedro Ruiz
|
b55b9640c6
|
feat: Add WebDAV resource move/rename functionality
|
2025-09-10 22:12:17 +02:00 |
|
Chris Coutinho
|
ef1fb9e9aa
|
fix(server): Replace ErrorResponses with standard McpErrors
|
2025-08-31 20:58:12 +02:00 |
|
Chris Coutinho
|
8956945e9d
|
chore: sort imports
|
2025-08-01 12:21:32 +02:00 |
|
Chris Coutinho
|
1e19061ee0
|
chore: Move tools into separate modules
|
2025-07-27 14:11:02 +02:00 |
|