linda-mcp

blueqwertz/linda-mcp
0 starsCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Enables AI models to search and retrieve legal documents, magazine issues, comments, and related references from the Linde database (linda.lindeverlag.at) using the Model Context Protocol.

README.md

Linde MCP Server

Ein MCP (Model Context Protocol) Server, der KI-Modellen Zugriff auf linda.lindeverlag.at (Linde Datenbank) gibt. Suche, Dokument-Volltext, Ausgaben-Inhaltsverzeichnisse, Kommentare und See-Also-Verweise über stdio.

Wichtig: Linda nutzt IP-basierten Zugriff (z.B. WU-Wien-Netz, VPN). Es ist kein Login erforderlich — der MCP-Server muss einfach vom WU-Netz aus erreichbar sein.

---

Features

  • Suche: Volltextsuche über linda.lindeverlag.at/SearchResults/ mit Paginierung, Sortierung (Relevanz/Datum) und Filter (My/All, Archiv).
  • Autocomplete: Vorschläge über search/autocompletesuggestions.
  • Dokument-Volltext: Titel, Autor, Literaturquelle, Rechtsnorm-Verweise, Literaturverzeichnis und Volltext.
  • Ausgabe (Magazin): Inhaltsverzeichnis gruppiert nach Sektionen.
  • Kommentare: Liste der verfügbaren Kommentare (My/All).
  • See-Also: Verwandte Rechtsnormen, Literatur und Judikatur.
  • Auth-Status & Cookie-Set: Optional — für hinter Paywall liegende Inhalte können manuell Cookies gesetzt werden.

---

Konfiguration & Zugang

Linda ist über IP autorisiert (z.B. WU-Wien-Campus-Netz, eduroam, oder VPN zum WU-Netz). Keine Credentials nötig.

Optionale Cookie-Authentifizierung (für Premium-Inhalte):

  • Environment Variable: LINDA_COOKIE="DbSessionVWINASP02=...; bis_logonguid=..."
  • Command Line Flag: --cookie "DbSessionVWINASP02=...; bis_logonguid=..."

Cookie-Werte aus dem Browser: DevTools → Application → Cookies → linda.lindeverlag.at und .lindeverlag.at.

---

Installation & Running

Direkt via npx (empfohlen)

npx -y github:blueqwertz/linda-mcp

Mit Cookie:

LINDA_COOKIE="DbSessionVWINASP02=...; bis_logonguid=..." npx -y github:blueqwertz/linda-mcp

Lokale Entwicklung

git clone https://github.com/blueqwertz/linda-mcp.git
cd linda-mcp
npm install
npm run build     # TypeScript -> dist/
npm start         # Startet den MCP-Server

Im Dev-Modus mit Hot-Reload:

npm run dev       # tsx src/index.ts

Smoke-Test (6 Tests gegen die Live-Site, benötigt IP-Zugriff auf linda.lindeverlag.at):

npx tsx test.ts

---

Integration mit AI-Agents

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "linda-mcp": {
      "command": "npx",
      "args": ["-y", "github:blueqwertz/linda-mcp"]
    }
  }
}

Mit Cookie:

{
  "mcpServers": {
    "linda-mcp": {
      "command": "npx",
      "args": ["-y", "github:blueqwertz/linda-mcp"],
      "env": {
        "LINDA_COOKIE": "DbSessionVWINASP02=...; bis_logonguid=..."
      }
    }
  }
}

Claude Code

claude mcp add linda-mcp -- npx -y github:blueqwertz/linda-mcp

OpenCode

opencode.json/opencode.jsonc:

{
  "mcp": {
    "linda-mcp": {
      "type": "local",
      "command": ["npx", "-y", "github:blueqwertz/linda-mcp"],
      "enabled": true
    }
  }
}

Codex

~/.codex/config.toml:

[mcp_servers.linda-mcp]
command = "npx"
args = ["-y", "github:blueqwertz/linda-mcp"]

---

Exposed Tools

linda_search

Durchsucht die Linde Datenbank.

  • Arguments:
  • query (string, required): Suchbegriff.
  • skip (number, default 0): Offset für Paginierung (0, 20, 40, ...).
  • limit (number, default 20, max 20): Max Treffer.
  • sort ("Rank" | "Date", default "Rank").
  • place ("My" | "All", default "My").
  • includingArchive (bool, default false).
  • Returns: {query, skip, nextSkip, results: [{id, titel, beschreibung, vorschau, link, listPos}], totalCount?, hasMore}

linda_autocomplete

  • Arguments: query (string, required).
  • Returns: {query, count, suggestions: [{text, isLastSearch}]}

linda_get_document

  • Arguments:
  • id (string, required): Dokument-ID ("18729") oder URL.
  • includeVolltext (bool, default true).
  • maxVolltextLength (number, default 50000).
  • Returns: {id, titel, autor?, literaturQuelle?, rechtsnormVerweise: [{id,label,link}], literatur: string[], volltext?, meta, link}

linda_get_issue

  • Arguments: id (string, required): Ausgabe-ID ("WWK77SH6EQ") oder URL.
  • Returns: {id, titel, jahr?, ausgabeNr?, sectionCount, articleCount, sektionen: [{name, dokumente: [{id,titel,beschreibung?,link}]}]}

linda_get_see_also

  • Arguments: id (string, required).
  • Returns: {id, summary, rechtsnormen: [...], literatur: [...], judikatur: [...], sonstiges: [...]}

linda_list_kommentare

  • Arguments: place ("My" | "All", default "My").
  • Returns: {place, count, kommentare: [{bookId, titel, link}]}

linda_auth_status

  • Arguments: keine.
  • Returns: {authenticated, statusCode, url, cookiesSet, note}

linda_set_cookie

  • Arguments: cookie (string, required): "name1=val1; name2=val2; ...".
  • Returns: {cookieSet, cookiesStored, note}

---

Architektur

src/
├── index.ts          # CLI-Parsing, McpServer, stdio transport
├── client.ts         # LindaClient: HTTP + CookieJar wrapper
├── auth.ts           # CookieJar (in-memory name->value)
├── parser.ts         # cheerio-basierte HTML-Extraktoren
└── tools/
    ├── index.ts      # toolDefinitions + handleToolCall dispatch
    ├── search.ts     # linda_search
    ├── autocomplete.ts
    ├── document.ts
    ├── issue.ts
    ├── see_also.ts
    ├── kommentare.ts
    └── auth.ts       # linda_auth_status + linda_set_cookie

Inspiriert von blueqwertz/rdb-mcp (Manz RDB), aber angepasst an Lindes HTML-basierte API.

---

License

MIT

Related MCP servers

Browse all →