Skip to main content
Glama
BamButz

nextcloud-collectives-mcp

by BamButz
README.md
# nextcloud-collectives-mcp

Ein MCP-Server (Model Context Protocol) für den Zugriff auf die [Nextcloud Collectives](https://github.com/nextcloud/collectives) App. Damit können MCP-Clients (z.B. Claude Code) Collectives (Team-Wikis), deren Seiten und Tags auflisten, lesen und bearbeiten.

## Voraussetzungen

- Node.js 22+
- Eine Nextcloud-Instanz mit installierter und aktivierter Collectives-App
- Ein App-Passwort für den Nextcloud-Benutzer

## App-Passwort erzeugen

1. In Nextcloud einloggen → **Einstellungen** → **Sicherheit**
2. Unter "Geräte & Sitzungen" ein neues App-Passwort erzeugen (beliebiger Name, z.B. `nextcloud-collectives-mcp`)
3. Das generierte Passwort notieren (wird nur einmal angezeigt)

## Installation & Nutzung

### Methode A: Direkt über `npx` ausführen (Empfohlen)

Es ist kein manuelles Klonen oder Bauen nötig. Der MCP-Server kann direkt über `npx` von GitHub gestartet werden. Fügen Sie dazu einfach den folgenden Eintrag in Ihrer MCP-Client-Konfiguration (z.B. `claude_desktop_config.json` oder per `claude mcp add`) hinzu:

```json
{
  "mcpServers": {
    "nextcloud-collectives": {
      "command": "npx",
      "args": ["-y", "github:BamButz/nextcloud-collectives-mcp"],
      "env": {
        "NEXTCLOUD_BASE_URL": "https://cloud.example.com",
        "NEXTCLOUD_USERNAME": "alice",
        "NEXTCLOUD_APP_PASSWORD": "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx"
      }
    }
  }
}
```

*Hinweis: Beim Start lädt `npx` das Repository herunter und baut es automatisch über das `prepare`-Skript im Hintergrund.*

### Methode B: Manuelle lokale Installation (z.B. für Entwicklung)

1. Repository klonen und in den Ordner wechseln.
2. Abhängigkeiten installieren und bauen:
   ```bash
   npm install
   npm run build
   ```
3. In der MCP-Server-Konfiguration eintragen:
   ```json
   {
     "mcpServers": {
       "nextcloud-collectives-local": {
         "command": "node",
         "args": ["/pfad/zu/nextcloud-collectives-mcp/dist/index.js"],
         "env": {
           "NEXTCLOUD_BASE_URL": "https://cloud.example.com",
           "NEXTCLOUD_USERNAME": "alice",
           "NEXTCLOUD_APP_PASSWORD": "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx"
         }
       }
     }
   }
   ```

## Verfügbare Tools

**Collectives**
- `list_collectives` — alle sichtbaren Collectives auflisten
- `create_collective` — neues Collective anlegen
- `delete_collective` — Collective in den Papierkorb verschieben

**Seiten**
- `list_pages` — vollständigen Seitenbaum eines Collectives auflisten (nur Metadaten)
- `get_page` — Metadaten und Markdown-Inhalt einer Seite abrufen
- `create_page` — neue Seite unter einer übergeordneten Seite anlegen
- `update_page_content` — Markdown-Inhalt einer Seite ersetzen
- `rename_page` — Seite umbenennen
- `move_page` — Seite zu einer neuen übergeordneten Seite verschieben
- `delete_page` — Seite in den Papierkorb verschieben

**Tags**
- `list_tags` — alle Tags eines Collectives auflisten
- `create_tag` — neuen Tag anlegen
- `add_tag_to_page` — Tag an eine Seite anhängen
- `remove_tag_from_page` — Tag von einer Seite entfernen

## Entwicklung

```bash
npm test          # Tests einmalig ausführen
npm run test:watch
npm run coverage   # Tests + Code-Coverage-Bericht (Text + HTML unter coverage/index.html)
npm run typecheck
npm run dev        # Server direkt mit tsx starten (liest Env-Vars aus der Shell)
```

## Implementierungshinweis

Dieses Projekt wurde vollständig mithilfe von Künstlicher Intelligenz (**Gemini 3.5 (Flash)**) von Google DeepMind im Rahmen eines agentischen Coding-Workflows implementiert und getestet.