Ga naar hoofdinhoud

Integrations

AI-ready integrations: one MCP surface for every linked app

Open Register's integration registry gives AI agents (MCP) access to Nextcloud apps that ship no MCP tools of their own.

Most Nextcloud apps — Deck, Forms, Maps, Cospend, Polls, TimeManager, Collectives, Photos, Bookmarks — have no native MCP surface. To an AI agent they are invisible: the agent cannot see them, query them, or write to them. The integration registry changes that. By linking those apps through Open Register as leaves, the agent can discover, read, link, and create in them through a single Open Register MCP tool:

Apps that were MCP-invisible become MCP-addressable for free.

The tool is openregister.integrations (provided by IntegrationsToolProvider, openregister#1853). It exposes five actions:

ActionWhat it does
list-integrationsEnumerate every integration registered on this instance (id, label, group, enabled, requiredApp, storageStrategy). The agent's discovery entry-point.
listList the linked things one integration exposes for a given object.
getFetch one linked thing by id.
linkAttach an existing upstream thing to an object.
createCreate a new upstream thing and link it (where the integration's storage strategy supports writes).

An agent calls list-integrations once to learn what is wired, then list/get/link/create against any leaf — so a single tool reaches Deck cards, Maps locations, Cospend bills, Forms responses, and 20+ more, without each of those apps needing its own MCP server. Read the full agent walkthrough in AI-agent / MCP setup.

The same registered set is also advertised on the OCS capability surface under openregister.integrations (with per-leaf requiredApp, available, storageStrategy, and surfaces), so non-MCP clients discover the registry the same way.

This is the headline

Adding a leaf is the cheapest way to make a previously MCP-silent Nextcloud app addressable by an AI agent. You write one provider; you get MCP discovery, query, link, and create for free.

What is a leaf

Every "linked thing" on an Open Register object is a leaf. Meetings, contacts, files, wiki pages, kanban cards, chat threads — each is a leaf: a vertical slice that links a Nextcloud app or external service to Open Register objects, with the same provider contract on the backend and the same registry surface on the frontend (a sidebar tab + a dashboard widget). Plus a separate set of integrations for LLMs and automation engines.

Leaf integrations

Open Register ships 18 leaves plus the 5 always-available built-ins (24 advertised providers in total). Every leaf surfaces as a sidebar tab on linked objects, a dashboard widget in four surfaces, and an admin row with health status. See Leaf integration system for the architecture and Pluggable integration registry for the full ADR-019 contract.

Start here:

  • Maturity tiers — Tier 0 → Tier 4, what each tier delivers, and why Tier 4 is the MCP-enablement capstone.
  • Leaf status — per-leaf table: tier, link table, picker, create, and MCP-addressable status for all 24 leaves.
  • Setup guides — per-tier guides: using an integration, external connections, and the AI-agent / MCP path.

All 24 integration leaves rendered as tabs on an Open Register object's Integrations view

Always-available built-ins

  • Files — files attached to an object (magic-column).
  • Notes — free-form notes (link-table). Documented under the pluggable integration registry.
  • Tags — system tags (link-table).
  • Tasks — to-dos (link-table).
  • Audit trail — every change on the object (query-time).

NC-native leaves

GroupLeaf
CoreShares
CommsCalendar · Contacts · Email · Talk
DocsBookmarks · Collectives · Maps · Photos
WorkflowActivity · Analytics · Cospend · Deck · Flow · Forms · Polls · Time tracker

External leaves (OpenConnector-routed)

  • xWiki — link xWiki pages with breadcrumb + text preview.
  • OpenProject — link OpenProject work packages.

OpenRegister's own push events

OpenRegister itself emits notify_custom events on every object lifecycle change so consumers can subscribe and refresh without polling.

  • OpenRegister Push Eventsor-object-{uuid} and or-collection-{register}-{schema} event reference, fan-out semantics, batch mode, subscription examples.

LLM hosting platforms

Services that host and run large language models locally.

  • Ollama — simple native API for running LLMs.
  • Hugging Face — TGI / vLLM with an OpenAI-compatible API.

LLM models

Specific models you can plug in.

  • Mistral — high-performance 7B model.
  • Dolphin — document parsing and OCR.

Entity extraction

  • Presidio — Microsoft's PII detector.

Automation platforms

Integration Architecture

The following diagram shows how all integrations work together in OpenRegister:

Integration Flow

1. Text Extraction Pipeline

2. Chat & RAG Pipeline

3. Automation Pipeline

Integration Comparison

LLM Hosting Platforms

PlatformAPI TypeSetup DifficultyPerformanceBest For
OllamaNative⭐⭐⭐⭐⭐ Easy⚡⚡⚡ GoodDevelopment, simple setup
TGIOpenAI-Compatible⭐⭐⭐ Medium⚡⚡ FastProduction, optimized
vLLMOpenAI-Compatible⭐⭐⭐ Medium⚡⚡⚡ Very FastHigh throughput

LLM Models

ModelSizeUse CaseHosting
Mistral 7B7BChat, RAG, general purposeOllama, TGI, vLLM
Dolphin0.3BDocument parsing, OCRCustom container

Entity Extraction

ServiceAccuracyLanguagesBest For
Presidio90-95%50+GDPR compliance, production
MITIE75-85%LimitedFast local processing
LLM-based92-98%AllHighest accuracy

Automation Platforms

PlatformLanguageUse CaseBest For
n8nVisual/JSWorkflow automationNon-developers
WindmillPython/TS/Go/BashScript executionDevelopers
Custom WebhooksAnyCustom integrationsFull control

Quick Start Guide

For AI Chat & RAG

  1. Choose LLM Hosting: Start with Ollama for easiest setup
  2. Pull Model: Download Mistral or Llama 3.2
  3. Configure: Set up in OpenRegister Settings → LLM Configuration
  4. Enable RAG: Vectorize your objects and files

For Document Processing

  1. Deploy Dolphin: Start Dolphin container for OCR
  2. Configure: Set Dolphin as extraction method
  3. Process Files: Upload documents for automatic processing

For GDPR Compliance

  1. Start Presidio: Presidio is included in docker-compose
  2. Configure: Enable entity extraction in settings
  3. Monitor: Track PII in GDPR register

For Automation

  1. Choose Platform: n8n for workflows or Windmill for scripts
  2. Set Up Webhooks: Register webhook endpoints
  3. Create Workflows: Build automation for your use cases

Integration Requirements

Minimum Requirements

  • CPU: 4+ cores recommended
  • RAM: 16GB minimum (32GB recommended for larger models)
  • Storage: 50GB+ for models and data
  • GPU: Optional but recommended (8GB+ VRAM for LLMs)

Docker Requirements

  • Docker 20.10+
  • Docker Compose 2.0+
  • NVIDIA Docker runtime (for GPU support)

Configuration Overview

LLM Configuration

# docker-compose.yml
services:
ollama:
image: ollama/ollama:latest
# ... configuration

tgi-mistral:
image: ghcr.io/huggingface/text-generation-inference:latest
# ... configuration

Entity Extraction Configuration

services:
presidio-analyzer:
image: mcr.microsoft.com/presidio-analyzer:latest
# ... configuration

Document Processing Configuration

services:
dolphin-vlm:
build: ./docker/dolphin
# ... configuration

Best Practices

1. Start Simple

Begin with Ollama for LLM hosting - it's the easiest to set up and configure.

2. Use GPU When Available

GPU acceleration provides 10-100x performance improvement for LLMs and document processing.

3. Choose Right Model Size

  • Development: Use smaller models (3B-7B) for faster iteration
  • Production: Use larger models (7B-13B) for better quality

4. Monitor Resource Usage

Keep an eye on:

  • Memory usage (models can be memory-intensive)
  • GPU utilization
  • API response times

5. Implement Fallbacks

Always have fallback options:

  • LLPhant for text extraction if Dolphin unavailable
  • MITIE for entity extraction if Presidio unavailable
  • Database search if vector search unavailable

Troubleshooting

Common Issues

  1. Container Communication: Always use container names, not localhost
  2. Model Not Found: Ensure model names include version tags
  3. Out of Memory: Reduce model size or increase available RAM
  4. Slow Performance: Enable GPU acceleration

Getting Help

  • Check individual integration documentation
  • Review Development Guides
  • Open GitHub issues for bugs
  • Check Docker logs for errors

Next Steps