diff --git a/README.md b/README.md index 50c1bfd..c13968f 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ http://127.0.0.1:8000/mcp - **90+ MCP Tools** - Comprehensive API coverage across 8 Nextcloud apps - **MCP Resources** - Structured data URIs for browsing Nextcloud data -- **Semantic Search (Experimental)** - Optional vector-powered search for Notes (requires Qdrant + Ollama) +- **Semantic Search (Experimental)** - Optional vector-powered search for Notes, Files, News items, and Deck cards (requires Qdrant + Ollama) - **Document Processing** - OCR and text extraction from PDFs, DOCX, images with progress notifications - **Flexible Deployment** - Docker, Kubernetes (Helm), VM, or local installation - **Production-Ready Auth** - Basic Auth with app passwords (recommended) or OAuth2/OIDC (experimental) @@ -81,7 +81,7 @@ http://127.0.0.1:8000/mcp | **Cookbook** | 13 | Recipe management, URL import (schema.org) | | **Tables** | 5 | Row operations on Nextcloud Tables | | **Sharing** | 10+ | Create and manage shares | -| **Semantic Search** | 2+ | Vector search for Notes (experimental, opt-in, requires infrastructure) | +| **Semantic Search** | 2+ | Vector search for Notes, Files, News items, and Deck cards (experimental, opt-in, requires infrastructure) | Want to see another Nextcloud app supported? [Open an issue](https://github.com/cbcoutinho/nextcloud-mcp-server/issues) or contribute a pull request! @@ -145,7 +145,7 @@ This enables natural language queries and helps discover related content across ### Features - **[App Documentation](docs/)** - Notes, Calendar, Contacts, WebDAV, Deck, Cookbook, Tables - **[Document Processing](docs/configuration.md#document-processing)** - OCR and text extraction setup -- **[Semantic Search Architecture](docs/semantic-search-architecture.md)** - Experimental vector search (Notes only, opt-in) +- **[Semantic Search Architecture](docs/semantic-search-architecture.md)** - Experimental vector search (Notes, Files, News items, Deck cards; opt-in) - **[Vector Sync UI Guide](docs/user-guide/vector-sync-ui.md)** - Browser interface for semantic search visualization and testing ### Advanced Topics diff --git a/docs/semantic-search-architecture.md b/docs/semantic-search-architecture.md index c8e663a..065c697 100644 --- a/docs/semantic-search-architecture.md +++ b/docs/semantic-search-architecture.md @@ -5,7 +5,7 @@ This document explains the architecture of the semantic search feature in the Ne > [!IMPORTANT] > **Status: Experimental** > - Disabled by default (`VECTOR_SYNC_ENABLED=false`) -> - Currently supports **Notes app only** (multi-app architecture ready, additional apps planned) +> - Currently supports **Notes, Files (PDFs), News items, and Deck cards** > - Requires additional infrastructure (Qdrant vector database + Ollama embedding service) > - RAG answer generation requires MCP client sampling support @@ -39,9 +39,9 @@ Semantic search enables: ### Current Support -- **Supported Apps**: Notes (fully implemented) -- **Planned Apps**: Calendar events, Calendar tasks, Deck cards, Files (with text extraction), Contacts -- **Architecture**: Multi-app plugin system ready, awaiting implementation +- **Supported Apps**: Notes, Files (PDFs with text extraction), News items, Deck cards +- **Planned Apps**: Calendar events, Calendar tasks, Contacts +- **Architecture**: Multi-app plugin system ready for additional apps ## System Components diff --git a/nextcloud_mcp_server/auth/static/vector-viz.js b/nextcloud_mcp_server/auth/static/vector-viz.js index 945a726..1fcde27 100644 --- a/nextcloud_mcp_server/auth/static/vector-viz.js +++ b/nextcloud_mcp_server/auth/static/vector-viz.js @@ -201,7 +201,12 @@ function vizApp() { return `${baseUrl}/apps/calendar`; case 'contact': return `${baseUrl}/apps/contacts`; - case 'deck': + case 'deck_card': + // URL pattern: /apps/deck/board/:boardId/card/:cardId + if (result.metadata && result.metadata.board_id) { + return `${baseUrl}/apps/deck/board/${result.metadata.board_id}/card/${result.id}`; + } + // Fallback if board_id not available return `${baseUrl}/apps/deck`; case 'news_item': return `${baseUrl}/apps/news/item/${result.id}`; diff --git a/nextcloud_mcp_server/auth/templates/vector_viz.html b/nextcloud_mcp_server/auth/templates/vector_viz.html index 7e3747c..f74bf12 100644 --- a/nextcloud_mcp_server/auth/templates/vector_viz.html +++ b/nextcloud_mcp_server/auth/templates/vector_viz.html @@ -65,8 +65,8 @@ Contacts