linkwarden-mcp
linkwarden-mcp
Ein Model Context Protocol-Server für Linkwarden, den selbst gehosteten Lesezeichen-Manager, der eine permanente Kopie jeder gespeicherten Seite aufbewahrt.
Er ermöglicht einem MCP-Client – Claude Code, Claude Desktop, Codex – eine Lesezeichen-Sammlung zu durchsuchen, sie in Sammlungen und Tags zu organisieren und den gespeicherten Artikeltext einer archivierten Seite zu lesen, sodass ein archivierter Link zusammengefasst oder zitiert werden kann, ohne die Live-Seite erneut abrufen zu müssen.
📖 Vollständige Dokumentation unter linkwarden-mcp.ni-c.de

Hinweis: Die veröffentlichte API-Referenz von Linkwarden ist unvollständig. Dieser Server wurde anhand der Routen in
apps/web/pages/api/v1/**und der Anforderungsschemata inpackages/lib/schemaValidation.tsvon linkwarden/linkwarden entwickelt, verifiziert gegen v2.16.0 vom 17.08.2026. Diese beiden Dateien sind die maßgebliche Quelle für jedes hier enthaltene Werkzeug.
Voraussetzungen
Node.js ≥ 22
Eine laufende Linkwarden-Instanz
Ein Zugriffstoken, erstellt unter Einstellungen → Zugriffstoken
Linkwarden hat keine bereichsspezifischen Token: Ein Token trägt die vollständigen Berechtigungen des Kontos, das es erstellt hat. Erstellen Sie ein dediziertes Konto mit Zugriff nur auf die Sammlungen, die dieser Server sehen soll, anstatt ihm ein Admin-Token zu übergeben.
Related MCP server: linkwarden-mcp
Konfiguration
Variable | Erforderlich | Beschreibung |
| ja | Basis-URL, z. B. |
| ja | Zugriffstoken aus Einstellungen → Zugriffstoken |
| nein |
|
| nein |
|
Verwenden Sie
https://. Über einfaches http wird das Token unverschlüsselt übertragen; der Server gibt eine Warnung aus, es sei denn, der Host ist lokal. Für ein selbstsigniertes Zertifikat bevorzugen Sie eine ordnungsgemäße interne CA gegenüberLINKWARDEN_INSECURE_TLS.
Das Token wird aus der Prozessumgebung entfernt, sobald es gelesen wurde, sodass es für
Kindprozesse oder in /proc/<pid>/environ nicht sichtbar ist.
Ohne Anmeldedaten startet der Server trotzdem und listet seine Werkzeuge auf, sodass Registrierungen und Inspektoren ihn untersuchen können; jeder Aufruf schlägt dann mit Einrichtungsanweisungen fehl, anstatt die API zu erreichen.
Installation
Claude Code
claude mcp add linkwarden -e LINKWARDEN_URL=https://links.example.net -e LINKWARDEN_TOKEN=… -- npx -y linkwarden-mcpClaude Desktop
{
"mcpServers": {
"linkwarden": {
"command": "npx",
"args": ["-y", "linkwarden-mcp"],
"env": {
"LINKWARDEN_URL": "https://links.example.net",
"LINKWARDEN_TOKEN": "…"
}
}
}
}Codex
[mcp_servers.linkwarden]
command = "npx"
args = ["-y", "linkwarden-mcp"]
env = { LINKWARDEN_URL = "https://links.example.net", LINKWARDEN_TOKEN = "…" }Aus dem Quellcode
npm install && npm run build
LINKWARDEN_URL=https://links.example.net LINKWARDEN_TOKEN=… node dist/index.jsDocker
docker build -t linkwarden-mcp .
docker run --rm -i \
-e LINKWARDEN_URL=https://links.example.net \
-e LINKWARDEN_TOKEN=… \
linkwarden-mcpWerkzeuge
Lesen
Werkzeug | Beschreibung |
| Lesezeichen suchen oder auflisten. Unterstützt Linkwardens Feld-Filter ( |
| Ein Lesezeichen mit seinen Tags, der Sammlung und den vorhandenen archivierten Formaten. |
| Der gespeicherte Artikeltext einer archivierten Seite, für lange Artikel aufgeteilt. |
| Alle Sammlungen mit Link-Anzahlen; Verschachtelung über |
| Eine Sammlung mit ihren mitgliedspezifischen Berechtigungen. |
| Tags mit Link-Anzahlen und ihren tag-spezifischen Archiveinstellungen. |
| Ein einzelnes Tag. |
| Kürzlich hinzugefügte sowie angeheftete Links, wie Linkwardens Dashboard sie anzeigt. |
| Die RSS-Feeds, die dieses Konto abonniert hat. |
| Welchem Konto das Token gehört und dessen Archivierungs-Standardeinstellungen. Guter Konnektivitäts-Check. |
| Warteschlange für Archivierung und Suchindex. Nur für Administratorkonten – alle anderen erhalten HTTP 403. |
Schreiben
Wird bei LINKWARDEN_READ_ONLY=true überhaupt nicht registriert. Mit 🔒 gekennzeichnete Werkzeuge erfordern einen Bestätigungs-Token.
Werkzeug | Beschreibung |
| Ein Lesezeichen speichern, optional mit Tags und einer Sammlung (bei Bedarf erstellt). |
| Titel, Beschreibung, Tags oder Sammlung ändern. 🔒 nur bei URL-Änderung. |
| Einen Link für dieses Konto anheften oder lösen. |
| Ein Lesezeichen und seine archivierten Kopien löschen. |
| Eine Tag-Liste und/oder Sammlung auf viele Links anwenden. |
| Viele Lesezeichen auf einmal löschen. |
| Die vorhandenen Archive verwerfen und die Seite erneut archivieren. |
| Die Archive mehrerer Links löschen, die Lesezeichen behalten. |
| Eine Sammlung erstellen, optional verschachtelt. |
| Eine Sammlung umbenennen, neu zuordnen oder veröffentlichen. 🔒 nur bei Veröffentlichung. |
| Eine Sammlung löschen – wirkt sich auf ihre Links und Unter-Sammlungen aus. |
| Tags erstellen oder deren Archiveinstellungen ändern (Upsert nach Name). |
| Ein Tag umbenennen. |
| Tags löschen; die Links bleiben bestehen. |
| Mehrere Tags zu einem neuen Tag zusammenführen. |
| Einen RSS/Atom-Feed abonnieren. |
| Das Abrufen eines Feeds beenden. |
Bewusst nicht bereitgestellt
Zugriffstoken-Verwaltung (
/tokens). Ein Werkzeug, das API-Anmeldedaten ausstellen kann, ist eine Angriffsfläche für Privilegienausweitung, und ein Lesezeichen-Server hat keinen Grund, eines zu besitzen.Benutzerverwaltung (
/users, Kontolöschung). Nicht im Rahmen.Backup-Export und -Import (
/migration). Der Export gibt die gesamte Instanz in den Kontext des Modells; der Import kann sie zerstören.Hervorhebungen. Das Erstellen einer Hervorhebung benötigt exakte Zeichen-Offsets im archivierten Dokument, die ein Modell nicht sinnvoll erzeugen kann, und Linkwarden bietet keine Route zum Auflisten vorhandener Hervorhebungen.
Archiv-Uploads und die signierten
preserved-URLs, dieNEXT_PUBLIC_USER_CONTENT_DOMAINkonfiguriert benötigen.Die veraltete
GET /links-Auflistungsroute –search_linksverwendet stattdessenGET /search, was Linkwarden selbst empfiehlt.
Sicherheit
Destruktive Werkzeuge sind zweistufig. Der erste Aufruf gibt einen kurzlebigen Bestätigungs-Token zurück, der an das genaue Ziel gebunden ist; erst ein zweiter Aufruf mit diesem Token führt die Operation aus. Ein Modell kann diese Hürde nicht allein überwinden, und ein Token, der für einen Link, eine Tag-Menge oder eine Änderung ausgestellt wurde, kann nicht für eine andere wiederverwendet werden.
Sichtbarkeitserweiterung gilt als destruktiv. Das Veröffentlichen einer Sammlung und das Ändern der URL eines Links – was jede archivierte Kopie der alten Seite löscht – erfordern beide eine Bestätigung, nicht nur Löschungen.
Bestätigungsaufforderungen zitieren niemals Inhalte aus Linkwarden. Titel, URLs, Beschreibungen und Sammlungsnamen stammen von archivierten Seiten und von anderen Benutzern der Instanz; nur Anzahlen und IDs erscheinen im Text, den ein Modell liest.
Zurückgegebene Inhalte werden als nicht vertrauenswürdige Daten markiert, insbesondere der gespeicherte Artikeltext, der von demjenigen geschrieben wurde, der die Zielseite kontrolliert.
Teilaktualisierungen leeren niemals Felder. Linkwardens Aktualisierungsrouten ersetzen den gesamten Datensatz, daher liest dieser Server den aktuellen Zustand und führt eine Zusammenführung durch – andernfalls würde eine Aktualisierung stillschweigend die Tags eines Links oder die Mitarbeiter einer Sammlung entfernen.
Ein HTTP 200 wird nicht allein als vertrauenswürdig angesehen. Mehrere Linkwarden-Routen melden Fehler mit HTTP 200 und einem Fehlersatz im Body, und eine Route ohne Handler für die verwendete Methode antwortet mit 200 und gar nichts. Beides wird als Fehler gemeldet, nicht als erfolgreicher Schreibvorgang.
Fehler-Bodies werden abgeschnitten, HTML-Fehlerseiten werden vollständig verworfen, Weiterleitungen werden niemals verfolgt (damit das Bearer-Token nicht an einen anderen Host weitergegeben werden kann), und jede Anfrage hat ein Timeout.
LINKWARDEN_READ_ONLY=trueregistriert die Schreibwerkzeuge überhaupt nicht.Restrisiko: Innerhalb der Berechtigungen des von Ihnen konfigurierten Tokens kann ein Modell, das aufgefordert wird, etwas Destruktives zu tun und von einem Benutzer bestätigt wird, dies dennoch tun. Beschränken Sie das Konto und behalten Sie hostseitige Berechtigungsaufforderungen bei.
Entwicklung
npm install
npm run build
npm test
npm run test:coverage
npm run lint
npm run format
npm run docs:tools # regenerate docs/reference/tools.md from the registered toolsdocs/reference/tools.md wird generiert; CI schlägt fehl, wenn die eingecheckte Kopie nicht mehr
mit dem Code übereinstimmt. Die Dokumentationsseite befindet sich in docs/ mit eigener
package.json und Lockfile – VitePress darf nicht in der Root-Installation landen, die im Docker-Build
und über die gesamte Testmatrix hinweg ausgeführt wird.
Siehe CONTRIBUTING.md.
Veröffentlichung
Alles wird durch einen Tag gesteuert; es gibt keinen manuellen Veröffentlichungsschritt.
Verschiebe den Abschnitt
[Unreleased]der CHANGELOG.md in die neue Version und datiere ihn. Der Release-Workflow extrahiert diesen Abschnitt mitawk, daher ist die Formatierung der Überschrift## [x.y.z]wichtig.Erhöhe
versioninpackage.json.npm run lint && npm run build && npm run test:coverage.Committen, dann einen signierten, annotierten Tag erstellen:
git tag -s v0.1.1 -m "v0.1.1" git push origin main v0.1.1
release.yml prüft dann, ob der Tag mit package.json übereinstimmt, veröffentlicht über
Trusted Publishing (OIDC – es existiert kein npm-Token, der auslaufen könnte) mit Provenance
auf npm, synchronisiert die Version in beide server.json-Paketeinträge, veröffentlicht im
MCP-Registry und erstellt das GitHub-Release aus dem Changelog-Abschnitt. ci.yml pusht
parallel das Multi-Arch-Container-Image zu GHCR.
Falls der Registry-Schritt fehlschlägt, behebe ihn auf main und führe den Workflow
mcp-registry.yml manuell aus. Die fehlgeschlagene Aufgabe erneut auszuführen ist keine Option:
Sie checkt den unveränderlichen Tag aus, sodass eine Korrektur auf main ihn nie erreichen könnte.
License
MIT © Willi Thiel
Maintenance
Related MCP Servers
- Alicense-qualityCmaintenanceEnables Claude and other MCP clients to manage Instapaper accounts by reading, saving, organizing, and analyzing articles through natural language. It supports comprehensive bookmark management, bulk operations, folder organization, and full-text content retrieval for research and synthesis.20MIT
- FlicenseAqualityCmaintenanceEnables managing bookmarks via the Linkwarden API with token-frugal tools for listing collections and links, adding/moving/deleting links, and creating collections.7
- AlicenseBqualityCmaintenanceEnables management of Raindrop.io bookmarks, collections, tags, and highlights via MCP tools, with support for search, bulk editing, and library auditing.17MIT
- Alicense-qualityCmaintenanceEnables users to search, read, and query saved bookmark content via a read-only MCP interface, with full-text and optional semantic search.4MIT
Related MCP Connectors
MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.
MCP server for AgentDocs (agentdocs.eu): read, search, write, comment on & share Markdown docs.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ni-c/linkwarden-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server