LanguageTool MCP Server
Anbindung an eine selbst gehostete LanguageTool-HTTP-Instanz: prüft Texte auf Rechtschreib-, Grammatik-, Zeichensetzungs- und Stilfehler und liefert einen Markdown-Report mit Korrekturvorschlägen nach Kategorie (Tools check_text mit Sprachcode, picky-Modus sowie Regel-Filtern, und list_languages zum Auflisten der unterstützten Sprachen).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LanguageTool MCP ServerCheck this sentence for grammar and spelling: 'Their going to the store.'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
languagetool-mcp-api-wrapper
Ein lokaler MCP-Server (stdio, JSON-RPC 2.0), der eine selbst gehostete LanguageTool-HTTP-Instanz an MCP-Clients anbindet (z. B. OpenCode, Claude Code). Reines Node.js, keine externen Abhängigkeiten – alle Daten bleiben lokal.
Voraussetzungen
Node.js ≥ 18 (braucht natives
fetchundAbortSignal.timeout)Eine erreichbare LanguageTool-HTTP-Instanz, z. B. als MacPorts-Daemon (macOS):
sudo port install LanguageTool # einmalig sudo port load LanguageTool # startet den Daemon auf http://localhost:8081Geht auch jede andere LT-Instanz mit HTTP-Interface (Docker, eigener Build) – die Adresse wird über
LT_BASE_URLeingegeben (s. Konfiguration).Verifizieren, dass LT erreichbar ist:
curl -s http://localhost:8081/v2/languages | head -c 100Eine leere Antwort oder
Connection refusedbedeutet: LT läuft nicht.
Related MCP server: iikona-mcp-proxy
Installation
git clone https://github.com/gebab88/languagetool-mcp-api-wrapper.git
cd languagetool-mcp-api-wrapperKein
npm installnötig – das Projekt hat keine externen Abhängigkeiten. Diepackage.jsondient nurnpm test.(Optional) Testlauf:
node --test– Details im Abschnitt Tests.Smoke-Test ohne Client – der Server spricht MCP über stdio, das lässt sich direkt mit einer Pipe prüfen (läuft auch ohne LT,
check_textsetzt eine erreichbare Instanz voraus):printf '%s\n' \ '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"smoke","version":"0"}}}' \ '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \ '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"check_text","arguments":{"text":"This is a spellig error.","language":"en-US"}}}' \ | node server.mjsErwartet: drei JSON-Zeilen auf
stdout– dieinitialize-Antwort mitserverInfo, die Tool-Liste (check_text,list_languages) und der Markdown-Report. Danach beendet sich der Prozess sauber.Im MCP-Client registrieren – siehe Registrierung. Fertig.
Registrierung im MCP-Client
OpenCode
Am einfachsten per CLI (mergt in die Config ein, ohne andere Einstellungen anzufassen):
# global – in allen Projekten verfügbar:
opencode mcp add languagetool --global -- node /vollständiger/Pfad/zu/server.mjs
# oder nur im aktuellen Projekt (--global weglassen):
opencode mcp add languagetool -- node /vollständiger/Pfad/zu/server.mjsPrüfen:
opencode mcp list→✓ languagetool connected; in der TUI mit/mcps.Läuft LT nicht auf
http://localhost:8081, ergänze in der Config einenvironment-Feld (siehe unten).Taucht der Server nicht auf:
opencode service restartsetzt den OpenCode-Dienst zurück.
Manuell per Config-Datei – global in ~/.config/opencode/opencode.json, projektlokal in opencode.json (OpenCode V2 legt Server unter mcp.servers an; das ältere V1-Format mit dem Namen direkt unter mcp und enabled wird weiterhin gelesen, ist aber nicht die aktuelle Form):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"servers": {
"languagetool": {
"type": "local",
"command": ["node", "/vollständiger/Pfad/zu/server.mjs"],
"environment": { "LT_BASE_URL": "http://localhost:8081" }
}
}
}
}Die Tools erscheinen im Modell als languagetool_check_text und languagetool_list_languages (in Code Mode gruppiert: tools.languagetool.check_text(...)).
Claude Code (Beispiel)
claude mcp add languagetool -- node /vollständiger/Pfad/zu/server.mjsoder als Projektdatei .mcp.json:
{
"mcpServers": {
"languagetool": {
"command": "node",
"args": ["/vollständiger/Pfad/zu/server.mjs"],
"env": { "LT_BASE_URL": "http://localhost:8081" }
}
}
}Andere MCP-Clients mit stdio-Transport funktionieren analog: Prozess node /Pfad/zu/server.mjs starten, JSON-RPC über stdin/stdout sprechen.
Konfiguration
Variable | Standard | Bedeutung |
|
| Basis-URL der LanguageTool-Instanz |
|
| Timeout für |
Übergeben kann man sie pro Client (OpenCode: environment im Server-Eintrag, Claude Code: env in .mcp.json) oder im Shell, aus dem der Client startet.
Tools
check_text– prüft einen Text auf Rechtschreib-, Grammatik- und Zeichensetzungsfehler sowie Stilprobleme und gibt einen Markdown-Report nach Kategorie mit Korrekturvorschlägen zurück.text(erforderlich): der zu prüfende Textlanguage: Sprachcode, z. B.de-DE,en-US, oderauto(Standard)picky: strengere Prüfung mit mehr Stil-Hinweisen (Standard:false)disabledRules/enabledRules: Regel-IDs, die ignoriert bzw. zusätzlich aktiviert werden sollen
list_languages– listet die von der Instanz unterstützten Sprachen mit Code und Name.
Hinweise
In LT 6.x sind die Rechtschreib-Wörterbücher für Deutsch und Englisch nur an regionale Varianten gebunden; die nackten Codes
debzw.enwerden deshalb automatisch aufde-DEbzw.en-USabgebildet. Gemischte Schreibweise in Sprachcodes (z. B.De) wird normalisiert – andernfalls würde LT mit dem nackten Basiscode laufen und die Rechtschreibprüfung stillschweigend aussetzen.Der Server schreibt JSON ausschließlich nach
stdout, Logs nachstderr– so, wie es der MCP-stdio-Transport verlangt.Laufende Prüfungen können Clients mit MCP
notifications/cancelledabbrechen; der Server antwortet dann mit einem Fehler-Ergebnis („… wurde abgebrochen“).Läuft LT nicht, startet der MCP-Server trotzdem sauber; Tool-Aufrufe melden dann „… nicht erreichbar …“ statt einen Absturz auszulösen.
Unterstützte Protokollversionen:
2024-11-05,2025-03-26,2025-06-18.
Tests
Die Tests starten den Server als Prozess und sprechen das MCP-Protokoll mit ihm (E2E, node:test – ohne externe Abhängigkeiten). Sie prüfen u. a., dass eingelegte Fehler in deutschen und englischen Texten (Rechtschreibung, Grammatik, Großschreibung) erkannt werden, dass fehlerfreie Texte sauber durchgehen und dass Cancellation, Sprachcode-Normalisierung und Fehlerbehandlung korrekt arbeiten.
Voraussetzung: Node.js ≥ 18 und eine erreichbare LanguageTool-Instanz (LT_BASE_URL, Standard http://localhost:8081). Ohne erreichbare Instanz werden die Tests übersprungen (skip), statt zu scheitern – der Cancellation- und der Protokoll-Test laufen auch ohne LT. Der Client-Timeout der Tests (MCP_TEST_TIMEOUT_MS, Standard 90 s) sollte größer bleiben als LT_CHECK_TIMEOUT_MS.
node --test # oder: npm testLizenz
This server cannot be deployed
Maintenance
Related MCP Connectors
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
MCP server (stdio): fetch web pages as clean readable markdown via the AgentForge API
Document conversion MCP server: PDF to Markdown, image OCR, spreadsheet parsing.
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceExposes Language Server Protocol (LSP) tools such as diagnostics, goto definition, find references, symbols, and rename as a stdio MCP server.9MIT
- AlicenseNot gradedqualityCmaintenanceActs as a stdio-to-HTTP proxy for the 1C runtime-MCP service, enabling MCP clients like Claude Desktop to interact with 1C tools.MIT
- FlicenseNot gradedqualityBmaintenanceModel Context Protocol server for MCPGRAM that enables MCP clients to interact with connectors like GitHub, Slack, and Notion through stdio or Streamable HTTP transports.-
- AlicenseNot gradedqualityBmaintenanceMCP server that exposes MarkItDown's document-to-markdown conversion as a single convert_to_markdown tool, supporting HTTP, HTTPS, file, and data URIs via STDIO, Streamable HTTP, and SSE transports.MIT