Ein generischer MCP-Server für Access-Auswertungen — und wann du besser was anderes nimmst

Ich bekam kürzlich eine Anfrage, die sich vermutlich noch häufiger stellen wird: Kunde hat eine Access-Datenbank, will darüber statistisch auswerten lassen, per Claude Pro, am liebsten ohne dass jemand für jede neue Kennzahl einen eigenen Python-Server pflegt. Die naheliegende erste Antwort — ein handgeschriebener MCP-Server mit einem Tool pro Abfrage — hat genau dieses Problem selbst gebaut. Es gibt inzwischen einen saubereren Weg, und es gibt Fälle, in denen der saubere Weg trotzdem die falsche Wahl ist.

Das Tool-Wildwuchs-Problem

Ein MCP-Server, der pro Kennzahl ein eigenes @mcp.tool() bekommt, funktioniert für eine Handvoll fest definierter Fragen ordentlich. Sobald der Kunde aber anfängt, spontan zu fragen — „Wie verteilen sich die Aufträge nach Monat?“, „Welche zehn Kunden haben den höchsten Umsatz?“, „Gibt es Ausreißer in Tabelle X?“ — reicht das Tool-Set nie. Entweder du schreibst ständig nach, oder der Kunde bekommt nur die Fragen beantwortet, die du vorausgesehen hast. Beides ist auf Dauer unbefriedigend, und beides ist genau das Muster, das ich selbst in einem älteren Artikel zur Access-Claude-Anbindung so aufgebaut hatte: zwei Demo-Tools, jedes mit fest codiertem SQL.

Drei Kategorien von Access-MCP-Servern

Bevor du dich für einen Ansatz entscheidest, lohnt sich eine Sortierung. Auf dem Markt haben sich mittlerweile drei klar unterscheidbare Kategorien herausgebildet:

Automatisierungs-Agenten wie MCP-Access (67 Tools, COM-Automation, ausschließlich Windows) geben dem Modell vollen Zugriff auf VBE, Formulare, Controls und Compile-Vorgänge. Das ist ein Entwickler-Werkzeug für Modernisierung und Refactoring — nicht für Auswertung. Wer damit nur SELECT-Abfragen fahren will, nutzt einen Bagger als Schaufel.

Abfrage-Layer wie mcp-server-access-mdb geben dem Modell einen generischen Zugriff auf Daten: eine Handvoll Tools, die auf beliebige Tabellen und beliebiges SQL anwendbar sind, statt eines Tools pro Kennzahl. Das ist die Kategorie, die zur eingangs beschriebenen Anfrage passt.

Cloud-Gateways wie Query Streams verlagern die Datenbank-Anbindung in einen gehosteten MCP-Endpunkt, erreichbar per URL statt per lokalem stdio-Prozess. Dazu unten mehr im PS, weil das die Antwort auf die Frage „Claude Pro oder Claude Desktop?“ verschiebt.

mcp-server-access-mdb im Detail

scanzy/mcp-server-access-mdb ist ein schlanker Python-Server auf Basis von FastMCP, SQLAlchemy und pandas. Statt für jede Fragestellung ein neues Tool zu schreiben, bekommt Claude ein generisches Set:

  • connect / disconnect — Datenbankverbindung öffnen und schließen, wahlweise mit readOnly=true
  • list — aktive Verbindungen auflisten
  • query — freies SELECT gegen die verbundene Datenbank
  • update — INSERT/UPDATE/DELETE, sofern nicht read-only verbunden
  • import_csv / export_csv / import_excel — Datenaustausch
  • read_notes / write_notes — menschenlesbare Notizen zu einer Datenbankdatei ablegen, die bei künftigen Sitzungen wieder eingelesen werden

Der entscheidende Unterschied zum Wartungsdemo-Muster: Claude schreibt das SQL selbst, basierend auf dem, was es über das Schema erfährt. Neue Auswertung heißt neue Frage, nicht neues Tool.

Installation

Der Server läuft per stdio, also lokal über Claude Desktop. Eintrag in der claude_desktop_config.json:

{
  "mcpServers": {
    "access-mdb": {
      "command": "uv",
      "args": [
        "run",
        "--with", "fastmcp",
        "--with", "pandas",
        "--with", "sqlalchemy-access",
        "--with", "openpyxl",
        "fastmcp", "run",
        "C:\\Pfad\\zu\\mcp-server-access-mdb\\server.py"
      ]
    }
  }
}

Voraussetzung ist uv als Python-Paketmanager (ersetzt hier pip) sowie eine lokale Kopie des Repos — eine PyPI-Veröffentlichung gibt es noch nicht, das Projekt selbst führt das als offenen Punkt. Nach dem Neustart von Claude Desktop verbindest du dich per connect-Aufruf mit dem Pfad zur .accdb, für reine Auswertung mit readOnly=true. Der Treiber-Zugriff läuft über sqlalchemy-access, technisch also denselben Weg wie ADO/DAO aus VBA, nur von außen.

Risiken, die du vor dem Einsatz kennen solltest

Kein Read-only per Default. Ohne explizites readOnly=true beim connect-Aufruf kann Claude über update schreiben. Bei einer Anfrage, die ausdrücklich nur Auswertung will, gehört die Einschränkung fest in dein Setup-Skript oder in die System-Prompt-Anweisung — nicht in die Hoffnung, dass niemand danach fragt.

Kleines Projekt, kurze Historie. Acht Sterne, ein Maintainer, keine erkennbare Produktionshistorie bei Dritten. Für den eigenen Prototypen oder einen überschaubaren Kunden okay, für einen Kunden mit hoher Verfügbarkeitsanforderung würde ich vorher selbst durch den Code gehen, nicht nur das README lesen.

Kein Audit-Trail. Anders als bei kommerziellen Alternativen gibt es keine eingebaute Protokollierung, wer wann welche Abfrage gefahren hat. Bei sensiblen Daten (Personal, Kalkulation) ist das ein Punkt, den du separat lösen musst, wenn der Kunde danach fragt.

Freies SQL vom Modell heißt: Locking-Verhalten im Blick behalten. Access unterstützt gleichzeitige Lesezugriffe problemlos, auch wenn die Datei parallel in Access geöffnet ist. Bei update-Aufrufen aus dem MCP-Server gilt dasselbe Kollisionsrisiko wie bei jedem externen Schreibzugriff auf eine geöffnete .accdb — nichts Neues für Access-Entwickler, aber leicht zu übersehen, wenn man den MCP-Layer als Blackbox behandelt.

32-Bit-versus-64-Bit-Treiberfalle bleibt bestehen. Wie schon beim Wartungsdemo-Ansatz: Die Architektur von Python und die des installierten Access-ODBC-Treibers müssen zusammenpassen. sqlalchemy-access löst dieses Problem nicht, es liegt eine Ebene tiefer beim Treiber.

Querverweise: Welcher Ansatz wann

AnsatzZweckZugriffClientReifegrad
Eigener Server (ein Tool pro Abfrage)Feste, kleine Fragelistepyodbc, selbst gebautClaude Desktopvolle Kontrolle, aber Wartungsaufwand steigt mit jeder neuen Frage
mcp-server-access-mdbFreie Ad-hoc-AuswertungSQLAlchemy, generisches query/updateClaude Desktopschlank, jung, ohne Audit-Trail
MCP-Access (67 Tools)VBA/Formulare/Struktur bearbeitenCOM-AutomationClaude Codeproduktiv, aber falsches Werkzeug für reine Auswertung
Access-MCP (access-mcp.ai)Auswertung mit Nachvollziehbarkeit.NET, granulare Tool-Freigabemehrere MCP-Clientskommerziell, Free-Tier read-only, Audit-Trail vorhanden
Query StreamsAuswertung ohne lokalen Prozessgehosteter Endpunkt, SELECT-only erzwungenclaude.ai (Browser) und DesktopCloud-Abhängigkeit, dafür browserfähig

Wo der generische Ansatz an Grenzen stößt

Ein generischer query-Tool ist kein Ersatz für Struktur-Wissen. Claude sieht das Schema so, wie es tatsächlich ist — mit undokumentierten Beziehungen, Feldern, die seit zehn Jahren nicht mehr befüllt werden, und Namen, die nichts über den Inhalt verraten. Wer eine Strukturanalyse vor der Anbindung überspringt, bekommt schneller falsche Joins und falsch interpretierte Kennzahlen als mit einem sauber dokumentierten Schema. Das gilt für jeden der oben genannten Ansätze, nicht nur für diesen.

Übersetzt für alle, die selbst keinen MCP-Server aufsetzen

Wenn du das als Dienstleistung anbietest: Der Unterschied zwischen den Ansätzen entscheidet, wie gut das Angebot skaliert. Ein Tool-pro-Abfrage-Server bedeutet laufenden Pflegeaufwand bei jeder neuen Kundenfrage — abrechenbar, aber begrenzt attraktiv für den Kunden. Ein generischer Abfrage-Layer bedeutet, dass die Ersteinrichtung (Schema-Analyse plus Anbindung) einmalig ist und der Kunde danach selbst neue Fragen stellen kann, ohne dich jedes Mal anzurufen. Das ist das wirtschaftlich interessantere Modell — für dich als weniger Nacharbeit, für den Kunden als schnellere Antworten.

Einschränkung

Ich habe mcp-server-access-mdb noch nicht produktiv bei einem Kunden im Einsatz, nur im eigenen Test. Für ein Projekt mit hoher Verfügbarkeitsanforderung oder sensiblen Daten würde ich aktuell entweder selbst nachbessern (Audit-Logging ergänzen, Read-only fest verdrahten) oder auf eine der kommerziellen Alternativen ausweichen.

PS:

Claude Desktop versus claude.ai, und was Query Streams anders macht: Alle bisher genannten Server (der eigene Wartungsdemo, MCP-Access, mcp-server-access-mdb) laufen per stdio als lokaler Prozess. Das funktioniert ausschließlich mit der Claude-Desktop-App, nicht mit dem Browser-Chat unter claude.ai — auch nicht mit einem Claude-Pro-Abo, wenn der Kunde im Browser arbeitet.

Wer „Claude Pro“ sagt, meint oft das Abo, nicht zwingend die Desktop-App; das lohnt sich vorher zu klären. Für den Browser-Fall braucht es einen remote erreichbaren MCP-Server, der per URL eingebunden wird. Genau da setzt Query Streams an: ein kleiner Windows-Agent läuft lokal beim Kunden, meldet sich ausschließlich ausgehend bei einem Cloud-Endpunkt, und dieser Endpunkt lässt sich per MCP-Key direkt in claude.ai einbinden — ohne Firewall-Freigabe für eingehenden Verkehr. Der Dienst erzwingt SELECT-only auf Netzwerkebene, bevor die Anfrage überhaupt den Jet/ACE-OLEDB-Treiber erreicht, und begrenzt Anfragen standardmäßig auf 60 pro Minute sowie 10 Ausführungen pro Minute. Für Kunden, die im Browser bleiben wollen und keine lokale App-Installation wünschen, ist das aktuell die einzige mir bekannte Option in dieser Kategorie.

Quellen

Über den Autor

Sönke Schäfer berät seit über 25 Jahren norddeutsche KMU bei der Entwicklung und Modernisierung von Microsoft-Access-Anwendungen. Sein Schwerpunkt liegt aktuell auf der KI-Anbindung bestehender Access- und SQL-Server-Datenbanken über MCP — pragmatisch bewertet, nicht nach Buzzword. Mehr über Sönke Schäfer

Wenn dich nicht der Code, sondern die Wirtschaftlichkeit interessiert — was eine KI-Anbindung für dein Unternehmen konkret bedeutet, ohne ERP-Wechsel: Künstliche Intelligenz im Mittelstand.

Nach oben scrollen