MCP-Access: Was passiert, wenn Claude Code direkt in deiner Access-Datenbank arbeitet?

Ich hatte mich letztes Jahr selbst daran versucht: einen Python-basierten MCP-Server bauen, der eine Access-Datenbank über pyodbc lesend anbindet — SELECT-Abfragen, JSON-Rückgabe, fertig. Das funktioniert, ist aber ein anderes Werkzeug mit einem anderen Zweck. MCP-Access ist das Gegenteil davon: nicht ein Abfrage-Layer über die Daten, sondern ein vollständiger Entwickler-Agent, der COM-Automation nutzt, um die Datenbank selbst zu bearbeiten. VBA schreiben, Formulare anlegen, Tabellen umstrukturieren, kompilieren, komprimieren — per Sprache oder per Skript.

Das ist kein Proof of Concept mehr. Das Projekt hat derzeit 67 Tools (Stand Juni 2026), wird aktiv gewartet und läuft produktiv auf Windows mit Microsoft Access 2010 bis Microsoft 365.

Was MCP-Access ist — und was es nicht ist

MCP-Access ist ein MCP-Server, der einem KI-Assistenten vollständigen Zugriff auf Microsoft Access-Datenbanken gibt: Formulare erstellen, VBA schreiben, Tabellen designen, Controls verwalten, Abfragen ausführen, Beziehungen aufbauen und jeden Winkel einer .accdb-Datei editieren — per natürlicher Sprache.

MCP steht für Model Context Protocol, den offenen Standard, den Anthropic 2024 veröffentlicht hat und der inzwischen von Claude Code, Cursor, Windsurf und anderen Clients unterstützt wird. Ein MCP-Server ist ein Prozess, der dem LLM eine definierte Menge an Tools anbietet. Das LLM entscheidet, welches Tool es wann aufruft — der MCP-Server führt den Aufruf aus und liefert das Ergebnis zurück.

MCP-Access läuft ausschließlich auf Windows. Die COM-Automation gegen Access ist der Kern des Ansatzes — kein Cross-Platform-Trick ersetzt das. Voraussetzungen: Microsoft Access installiert (jede Version ab 2010 mit VBE-Unterstützung), Python 3.9+, und in den Access-Trust-Center-Einstellungen muss „Trust access to the VBA project object model“ aktiviert sein.

Was es nicht ist: ein Ersatz für ADODB/DAO, kein Datenbank-Browser, keine Schnittstelle für Endanwender. Das Werkzeug richtet sich an Entwickler, die Access-Anwendungen pflegen oder modernisieren — und die Claude Code als Arbeitsmittel einsetzen wollen.

Was 67 Tools bedeuten

Die Tools gliedern sich in funktionale Gruppen: Datenbankebene, Datenbankobjekte, SQL und Tabellen, VBE-Zugriff auf Zeilenebene, Formular- und Report-Controls, Text-Export/Import, Datenbankeigenschaften, verknüpfte Tabellen, Beziehungen, VBA-References, Wartung, Query-Management, Indexes, Kompilierung, VBA-Ausführung und Report-Export.

Ich greife die Bereiche heraus, die im Access-Entwicklungsalltag am meisten bringen.

VBA — lesen, schreiben, patchen, ausführen

Das ist der Kern für jeden, der gewachsenen Access-Code modernisiert. Die Tools decken drei Granularitätsstufen ab:

access_vbe_get_proc liest eine einzelne Prozedur anhand ihres Namens. access_vbe_replace_proc ersetzt sie vollständig. access_vbe_patch_proc arbeitet chirurgisch innerhalb einer Prozedur — whitespace-tolerantes Matching, Fehlermeldung mit Kontext, wenn der Patch nicht greift.

Die Kombination aus access_vbe_search_all und access_vbe_patch_proc ist für Migrations-Szenarien besonders nützlich: Über alle Module, Formulare und Reports gleichzeitig suchen, dann gezielt ersetzen — ohne die Datenbank manuell zu öffnen. Ein klassisches Beispiel: Application.FollowHyperlink ist in älteren Access-Anwendungen verbreitet, schlägt auf Windows Server 2019 mit RemoteApp jedoch zuverlässig fehl, weil die Funktion Pfade in eine unbrauchbare Form umwandelt. Mit MCP-Access lässt sich das für alle betroffenen Stellen in einer Datenbank in einem Durchgang ersetzen — und per Skript auf beliebig viele Datenbanken ausrollen.

access_compile_vba kompiliert alle Module und liefert bei Fehlern Modulname und Zeilennummer zurück. access_run_vba führt eine Sub oder Function aus — Standardmodule über Application.Run, Formularmodule per Forms.FormName.Method-Syntax.

Formulare und Controls

Formulare lassen sich per access_create_form anlegen, ohne den lästigen „Speichern unter“-Dialog zu triggern, der COM-Sitzungen in älteren Access-Versionen blockiert. access_list_controls listet alle Controls eines Formulars mit Properties — einschließlich Controls, die innerhalb von TabControl-Pages oder OptionGroups verschachtelt sind.

Neu in der aktuellen Version: access_build_form — deklaratives Auto-Layout. Form-Titel, geordnete Felder, Action-Buttons, Single- oder Two-Column-Layout beschreiben, und das Tool berechnet alle Koordinaten aus einem kanonischen 60-Twip-Grid. Das Modell wählt keine Koordinate selbst. Design-Tokens in mcp_access/design_defaults.py — eine einzige Quelle für Grid, Größen, Abstände, Schriften und die BGR-Palette.

Auch access_lint_form ist erwähnenswert — aber mit klaren Erwartungen: Es prüft deterministisch auf objektiv kaputte Layouts (Kontrast nach WCAG, Überlappungen, abgeschnittene Captions, Controls außerhalb des Formularrands). Es ist kein Designer. Der Changelog sagt es direkt: „Think seatbelt, not stylist.“

Verknüpfte Tabellen und ODBC-Relinks

access_list_linked_tables zeigt alle verknüpften Tabellen mit Source-Tabelle, Connection String und ODBC-Flag. access_relink_table ändert den Connection String und aktualisiert den Link — inklusive automatischer Credential-Persistenz via dbAttachSavePWD, wenn UID/PWD im String enthalten sind. Mit relink_all=true werden alle Tabellen mit derselben ursprünglichen Verbindung auf einmal umgelenkt.

Wichtig: In einer früheren Version hing die COM-Sitzung, wenn die Zieldatenbank nicht erreichbar war — Access öffnete einen modalen SQL-Server-Login-Dialog, den niemand wegklicken konnte. Seit dem Fix wird LoginTimeout=8 in den Connection String injiziert, wenn er fehlt — DAO bricht dann ab statt zu hängen.

Wartung

access_decompile_compact führt /decompile, Neukompilierung und Compact in einem Schritt aus. Typische Größenreduktion: 60–70 % bei stark editierten Frontend-Datenbanken.

Das ist kein theoretischer Wert. Access akkumuliert P-Code und Orphan-Objekte über Jahre. Eine 50-MB-Frontend-Datei, die fast keine Daten enthält, ist ein klassisches Signal — Decompile+Compact bringt sie regelmäßig auf unter 15 MB.

Screenshot und UI-Automation

Vollständiger UI-Automation-Loop: Screenshot eines Formulars oder Reports aufnehmen, dann per access_ui_click klicken und per access_ui_type tippen. Das ermöglicht agentenbasierte Testflows — Claude sieht das laufende Formular, interagiert damit und berichtet, was passiert.

Installation und Konfiguration

pip install mcp pywin32

VBA-Objektmodell-Zugriff aktivieren: Access → Datei → Optionen → Trust Center → Trust Center-Einstellungen → Makroeinstellungen → Haken bei „Vertrauen Sie dem VBA-Projektobjektmodell“. Oder das mitgelieferte PowerShell-Skript enable_vba_trust.ps1 ausführen.

Registrierung bei Claude Code:

# Global (alle Projekte):
claude mcp add access -- python C:\Pfad\zu\access_mcp_server.py

# Projektbezogen (.mcp.json im Projektverzeichnis):
claude mcp add --scope project access -- python C:\Pfad\zu\access_mcp_server.py

Für andere MCP-Clients wie Cursor oder Windsurf reicht eine mcp.json im Projektverzeichnis:

{
  "mcpServers": {
    "access": {
      "type": "stdio",
      "command": "python",
      "args": ["C:\\Pfad\\zu\\access_mcp_server.py"]
    }
  }
}

Transport ist stdio — kein Netzwerk, kein Port, kein Server-Prozess, der am Laufen gehalten werden muss. Der MCP-Server startet mit dem Client und läuft in der COM-Sitzung des aufrufenden Prozesses.

Was kostet das?

MCP-Access selbst ist kostenlos. MIT-Lizenz, Open Source auf GitHub. Keine Subscription, kein SaaS, keine Nutzungsgebühr.

Was du brauchst:

Claude Code — das ist der primär getestete und empfohlene Client. Claude Code ist Teil von Claude Pro (20 USD/Monat) oder Claude Max (100 USD/Monat). Die Unterschiede betreffen hauptsächlich das monatliche Nutzungskontingent. Für intensiven Entwicklungseinsatz ist Max realistischer. Alternativ: Claude Code über die Anthropic API direkt, was nach Token-Verbrauch abgerechnet wird — bei umfangreichen Refactoring-Sessions kann das teurer sein als ein Flatrate-Plan.

Microsoft Access — Access Runtime reicht nicht. COM-Automation gegen die VBE erfordert die vollständige Access-Installation. Access ist über Microsoft 365 erhältlich (ab ca. 7 EUR/Monat pro Nutzer im Business-Plan) oder als Standalone-Kauflizenz (Office 2021 Professional, Access einzeln nicht mehr frei erhältlich).

Andere MCP-Clients — Cursor, Windsurf und Continue unterstützen MCP, sind aber nicht der primäre Testpfad. Die Tools funktionieren prinzipiell, aber der Entwickler hat explizit nur Claude Code durchgängig getestet.

Was sind die Alternativen?

Selbst gebaut — MCP-Server über pyodbc/DAO: Das ist der Ansatz, den ich vorher beschrieben habe und der in einem früheren Beitrag hier auf sesoft.de dokumentiert ist. Ergebnis: ein MCP-Server, der lesend auf die Daten zugreift und SELECT-Abfragen per Passthrough ausführt. Sinnvoll für Datenabfragen und KI-gestützte Analyse. Nicht sinnvoll für Entwicklungsaufgaben — kein Zugriff auf VBE, keine Formular-Manipulation, kein Compile.

GitHub Copilot mit Access: Copilot kennt VBA-Syntax und kann Code generieren. Aber es gibt keine direkte Integration in laufende Access-Instanzen — alles läuft über den Editor, nicht über die Laufzeitumgebung. Copy-Paste bleibt Pflicht.

Manuelle Claude-Nutzung: VBA-Code in claude.ai einfügen, Antwort bekommen, zurückkopieren. Funktioniert, skaliert nicht. Kein Kontext über die Datenbankstruktur, kein direkter Zugriff, keine Multi-Step-Agents.

COM-Scripting per PowerShell oder Python: Möglich, aber du schreibst die Automatisierung selbst. MCP-Access ist im Kern dasselbe — nur hat jemand die 67 Tools bereits geschrieben, getestet und mit Bug-Fixes für Edge Cases versehen, die dich sonst Stunden kosten (hängender Dialog bei nicht erreichbarem SQL Server, dbAttachSavePWD-Bug bei Relinks, Cache-Invalidierung nach VBE-Änderungen).

Einschränkungen, die du kennen solltest

Access muss sichtbar laufen — Visible=True ist Pflicht für VBE-COM-Zugriff. Kein Headless-Betrieb.

Die COM-Sitzung ist nicht atomar. Wenn ein Tool-Aufruf auf halbem Weg fehlschlägt, kann die Datenbank in einem inkonsistenten Zustand sein. Backups vor jeder Session sind Pflicht, nicht optional.

Wedged-Session-Erkennung ist vorhanden: Wenn eine Datenbank beim Start ihren eigenen Code ausführt und sich schließt, stellt der Server die COM-Sitzung selbst zurück und versucht automatische Wiederverbindung. Aber: modal dialogs, die Access blockieren, können die Session weiterhin lahmlegen. Der globale Dialog-Watchdog fängt die meisten Fälle ab, aber nicht alle.

Getestet primär mit Claude Code — andere Clients können Eigenheiten zeigen, besonders bei der Serialisierung von Array-Argumenten. Das Argument-Coercing wurde in aktuellen Versionen verbessert, sodass Clients, die alle Argumente als Strings serialisieren, jetzt auch Batch-Tools korrekt ansprechen können.

Einordnung

MCP-Access ist kein fertiges Produkt für den Produktivbetrieb ohne Aufsicht. Es ist ein Entwickler-Werkzeug, das COM-Automation mit LLM-gesteuerten Agenten kombiniert — und damit einen Arbeitsbereich öffnet, der vorher nicht existiert hat. Die Frage „Kann Claude Code mir helfen, diese Access-Datenbank zu modernisieren?“ hatte vor diesem Projekt keine praktische Antwort. Jetzt hat sie eine.

Ob das ein Quasi-Standard wird, bleibt abzuwarten. Das MCP-Ökosystem wächst schnell, und der Ansatz — COM-Automation als MCP-Server — ist auf andere Office-Anwendungen übertragbar. Für wer mehrere Access-Projekte gleichzeitig pflegt, ist der Einstieg gerade günstig: Das Werkzeug ist ausgereift genug für ernsthaften Einsatz, und die Community ist noch klein genug, dass eigene Erfahrungen zählen.

Quellen und weiterführende Links

Über den Autor

Sönke Schäfer berät seit über 25 Jahren Unternehmen im norddeutschen Mittelstand bei der Entwicklung und Modernisierung von Microsoft-Access-Anwendungen. Schwerpunkte: VBA, SQL Server, COM-Automation und KI-Anbindung an bestehende Datenbanken. Aktuelle Projekte umfassen die schrittweise Modernisierung gewachsener Access-Frontends mit SQL-Server-Backend.

Nach oben scrollen