unmateria avatar

Microsoft Access Database

unmateria/mcp-access

Gives Claude full COM access to Microsoft Access databases on Windows. You get 66 tools covering forms, VBA modules, tables, queries, relationships, and controls. It can create forms programmatically, edit VBA at the line or procedure level through the VBE object model, run SQL via DAO, search across all queries at once, and handle controls nested inside TabControl pages. Includes a deterministic layout linter that catches objectively broken UI issues like white-on-white text, overlapping controls, and truncation using WCAG contrast checks and rectangle math. Requires Access installed and VBA project model trust enabled. Works with any MCP client over stdio.

GitHub stars
61
tools
58
transport
STDIO
last updated
Oct 31, 2026

Tools

58 tools

Public tool metadata for what this MCP can expose to an agent.

access_create_databaseCreate a new empty `.accdb` database file

Create a new empty `.accdb` database file

No parameter schema in public metadata yet.

access_closeDisconnect MCP; leave user-owned Access open, quit only an MCP-created instance

Disconnect MCP; leave user-owned Access open, quit only an MCP-created instance

No parameter schema in public metadata yet.

access_list_objectsList objects by type (`table`, `module`, `form`, `report`, `query`, `macro`, `all`). System tables filtered

List objects by type (`table`, `module`, `form`, `report`, `query`, `macro`, `all`). System tables filtered

No parameter schema in public metadata yet.

access_get_codeExport an object's full definition as text

Export an object's full definition as text

No parameter schema in public metadata yet.

access_set_codeImport modified text back (creates or overwrites)

Import modified text back (creates or overwrites)

No parameter schema in public metadata yet.

access_export_structureGenerate a Markdown index of all modules, forms, reports, queries

Generate a Markdown index of all modules, forms, reports, queries

No parameter schema in public metadata yet.

access_delete_objectDelete a module, form, report, query, or macro. Requires `confirm=true`

Delete a module, form, report, query, or macro. Requires `confirm=true`

No parameter schema in public metadata yet.

access_create_formCreate a new form without triggering the "Save As" MsgBox that blocks COM. Optional `has_header` for header/footer section, `record_source` (bind to table/query), `default_view` (0=Single, 1=Continuous, 2=Datasheet, ...)

Create a new form without triggering the "Save As" MsgBox that blocks COM. Optional `has_header` for header/footer section, `record_source` (bind to table/query), `default_view` (0=Single, 1=Continuous, 2=Datasheet, ...)

No parameter schema in public metadata yet.

access_execute_sqlRun SQL via DAO — SELECT returns rows as JSON (`limit` default 500). DELETE/DROP/ALTER require `confirm_destructive=true`

Run SQL via DAO — SELECT returns rows as JSON (`limit` default 500). DELETE/DROP/ALTER require `confirm_destructive=true`

No parameter schema in public metadata yet.

access_execute_batchExecute multiple SQL statements in one call. Supports mixed SELECT/INSERT/UPDATE/DELETE with per-statement results, `stop_on_error`, and `confirm_destructive`

Execute multiple SQL statements in one call. Supports mixed SELECT/INSERT/UPDATE/DELETE with per-statement results, `stop_on_error`, and `confirm_destructive`

No parameter schema in public metadata yet.

access_table_infoShow table structure via DAO (fields, types, sizes, required, linked status)

Show table structure via DAO (fields, types, sizes, required, linked status)

No parameter schema in public metadata yet.

access_search_queriesSearch text in the SQL of ALL queries at once (find which queries reference a table, field, or keyword)

Search text in the SQL of ALL queries at once (find which queries reference a table, field, or keyword)

No parameter schema in public metadata yet.

access_create_tableCreate a table via DAO with full type, default, description and primary key support in one call. More robust than `CREATE TABLE` SQL

Create a table via DAO with full type, default, description and primary key support in one call. More robust than `CREATE TABLE` SQL

No parameter schema in public metadata yet.

access_alter_tableModify table structure via DAO: add field, delete field (requires `confirm=true`), rename field

Modify table structure via DAO: add field, delete field (requires `confirm=true`), rename field

No parameter schema in public metadata yet.

access_vbe_get_linesRead a line range from a VBA module without exporting the whole file

Read a line range from a VBA module without exporting the whole file

No parameter schema in public metadata yet.

access_vbe_get_procGet a procedure's code and position by name

Get a procedure's code and position by name

No parameter schema in public metadata yet.

access_vbe_module_infoList all procedures with their line numbers

List all procedures with their line numbers

No parameter schema in public metadata yet.

access_vbe_replace_linesReplace/insert/delete lines in a VBA module directly via VBE

Replace/insert/delete lines in a VBA module directly via VBE

No parameter schema in public metadata yet.

access_vbe_findSearch text in ONE specific module. A hit on a statement wrapped with ` _` also returns the whole joined statement

Search text in ONE specific module. A hit on a statement wrapped with ` _` also returns the whole joined statement

No parameter schema in public metadata yet.

access_vbe_search_allSearch text across ALL modules/forms/reports in the database at once. Optional `context_lines` (0-10) returns the surrounding code with each hit

Search text across ALL modules/forms/reports in the database at once. Optional `context_lines` (0-10) returns the surrounding code with each hit

No parameter schema in public metadata yet.

access_vbe_replace_procReplace a full procedure by name (auto-calculates line bounds). Strips misplaced `Option` lines, runs structural health check

Replace a full procedure by name (auto-calculates line bounds). Strips misplaced `Option` lines, runs structural health check

No parameter schema in public metadata yet.

access_vbe_patch_procSurgical find/replace within a procedure. Atomic by default, case-insensitive anchors, optional `require_unique`, whitespace-tolerant fallback matching

Surgical find/replace within a procedure. Atomic by default, case-insensitive anchors, optional `require_unique`, whitespace-tolerant fallback matching

No parameter schema in public metadata yet.

access_vbe_appendAppend code at the end of a module. Auto-strips `Option Explicit`/`Option Compare` to prevent misplacement

Append code at the end of a module. Auto-strips `Option Explicit`/`Option Compare` to prevent misplacement

No parameter schema in public metadata yet.

access_list_controlsList all controls of a form/report with key properties. Optional `fields` keeps only the keys you ask for

List all controls of a form/report with key properties. Optional `fields` keeps only the keys you ask for

No parameter schema in public metadata yet.

access_get_controlGet the full, unabridged definition block of a specific control

Get the full, unabridged definition block of a specific control

No parameter schema in public metadata yet.

access_search_controlsSearch text or regex in the control properties of every form/report

Search text or regex in the control properties of every form/report

No parameter schema in public metadata yet.

access_create_controlCreate a new control via COM in design view. Supports `class_name` for ActiveX (type 119) ProgID initialization

Create a new control via COM in design view. Supports `class_name` for ActiveX (type 119) ProgID initialization

No parameter schema in public metadata yet.

access_delete_controlDelete a control via COM

Delete a control via COM

No parameter schema in public metadata yet.

access_set_control_propsModify control properties via COM in design view

Modify control properties via COM in design view

No parameter schema in public metadata yet.

access_set_multiple_controlsModify properties of multiple controls in a single design-view session

Modify properties of multiple controls in a single design-view session

No parameter schema in public metadata yet.

access_lint_formDeterministic check for objectively-broken layout: contrast (WCAG), overlap, out-of-bounds, truncation, sibling inconsistency, zero-size/invisible. Returns `verdict` PASS/REVIEW/FAIL

Deterministic check for objectively-broken layout: contrast (WCAG), overlap, out-of-bounds, truncation, sibling inconsistency, zero-size/invisible. Returns `verdict` PASS/REVIEW/FAIL

No parameter schema in public metadata yet.

access_export_textExport form/report/module as text via SaveAsText. Does NOT open Design view. UTF-16 LE output

Export form/report/module as text via SaveAsText. Does NOT open Design view. UTF-16 LE output

No parameter schema in public metadata yet.

access_import_textImport form/report/module from text via LoadFromText. Replaces if exists. Auto-splits CodeBehindForm VBA

Import form/report/module from text via LoadFromText. Replaces if exists. Auto-splits CodeBehindForm VBA

No parameter schema in public metadata yet.

access_get_db_propertyRead a DB property (`CurrentDb.Properties`) or Access option (`GetOption`)

Read a DB property (`CurrentDb.Properties`) or Access option (`GetOption`)

No parameter schema in public metadata yet.

access_set_db_propertySet a DB property or Access option — creates the property if it doesn't exist

Set a DB property or Access option — creates the property if it doesn't exist

No parameter schema in public metadata yet.

access_get_form_propertyRead form or report properties (RecordSource, Caption, DefaultView, etc.). `object_type` required (`form` or `report`)

Read form or report properties (RecordSource, Caption, DefaultView, etc.). `object_type` required (`form` or `report`)

No parameter schema in public metadata yet.

access_set_form_propertySet form/report properties (RecordSource, Caption, DefaultView, HasModule, etc.) via COM in Design view

Set form/report properties (RecordSource, Caption, DefaultView, HasModule, etc.) via COM in Design view

No parameter schema in public metadata yet.

access_list_linked_tablesList linked tables with source table, connection string, ODBC flag. `names_only=true` is a light listing; `mask_password=true` masks `PWD=`

List linked tables with source table, connection string, ODBC flag. `names_only=true` is a light listing; `mask_password=true` masks `PWD=`

No parameter schema in public metadata yet.

access_relink_tableChange connection string and refresh link — auto-saves credentials when UID/PWD detected. `relink_all=true` updates all tables with the same original connection

Change connection string and refresh link — auto-saves credentials when UID/PWD detected. `relink_all=true` updates all tables with the same original connection

No parameter schema in public metadata yet.

access_list_relationshipsList table relationships with field mappings and cascade flags

List table relationships with field mappings and cascade flags

No parameter schema in public metadata yet.

access_create_relationshipCreate a relationship between two tables (supports cascade update/delete)

Create a relationship between two tables (supports cascade update/delete)

No parameter schema in public metadata yet.

access_delete_relationshipDelete a relationship by name

Delete a relationship by name

No parameter schema in public metadata yet.

access_list_referencesList VBA project references with GUID, path, broken/built-in status

List VBA project references with GUID, path, broken/built-in status

No parameter schema in public metadata yet.

access_manage_referenceAdd (by GUID or file path) or remove a VBA reference — guards against removing built-in refs

Add (by GUID or file path) or remove a VBA reference — guards against removing built-in refs

No parameter schema in public metadata yet.

access_compact_repairCompact & repair the database — closes, compacts to temp, swaps atomically, reopens

Compact & repair the database — closes, compacts to temp, swaps atomically, reopens

No parameter schema in public metadata yet.

access_decompile_compactRemove orphaned VBA p-code via `/decompile`, recompile, then compact

Remove orphaned VBA p-code via `/decompile`, recompile, then compact

No parameter schema in public metadata yet.

access_manage_queryCreate, modify, delete, rename, or read SQL of a QueryDef. Delete requires `confirm=true`

Create, modify, delete, rename, or read SQL of a QueryDef. Delete requires `confirm=true`

No parameter schema in public metadata yet.

access_list_indexesList indexes of a table with fields, primary, unique, foreign flags

List indexes of a table with fields, primary, unique, foreign flags

No parameter schema in public metadata yet.

access_manage_indexCreate or delete an index. Create requires fields list with optional sort order

Create or delete an index. Create requires fields list with optional sort order

No parameter schema in public metadata yet.

access_vbe_check_syntaxStatic structural check of the already-open VBA project — no decompile, nothing discarded. Not a compiler

Static structural check of the already-open VBA project — no decompile, nothing discarded. Not a compiler

No parameter schema in public metadata yet.

access_compile_vbaCompile and save all VBA modules. Optional `timeout` to auto-dismiss error MsgBox. Decompiles first and can discard unsaved VBA

Compile and save all VBA modules. Optional `timeout` to auto-dismiss error MsgBox. Decompiles first and can discard unsaved VBA

No parameter schema in public metadata yet.

access_run_macroExecute an Access macro by name

Execute an Access macro by name

No parameter schema in public metadata yet.

access_run_vbaExecute a VBA Sub/Function. Standard modules via `Application.Run`, form modules via `Forms.FormName.Method` syntax (COM)

Execute a VBA Sub/Function. Standard modules via `Application.Run`, form modules via `Forms.FormName.Method` syntax (COM)

No parameter schema in public metadata yet.

access_eval_vbaEvaluate a VBA expression via `Application.Eval`. Domain functions, VBA built-ins, open form properties, standard module functions

Evaluate a VBA expression via `Application.Eval`. Domain functions, VBA built-ins, open form properties, standard module functions

No parameter schema in public metadata yet.

access_output_reportExport a report to PDF, XLSX, RTF, or TXT via `DoCmd.OutputTo`

Export a report to PDF, XLSX, RTF, or TXT via `DoCmd.OutputTo`

No parameter schema in public metadata yet.

access_transfer_dataImport/export data between Access and Excel (`.xlsx`) or CSV

Import/export data between Access and Excel (`.xlsx`) or CSV

No parameter schema in public metadata yet.

access_get_field_propertiesRead all properties of a table field (DefaultValue, ValidationRule, Description, Format, etc.)

Read all properties of a table field (DefaultValue, ValidationRule, Description, Format, etc.)

No parameter schema in public metadata yet.

access_set_field_propertySet a field property — creates the property if it doesn't exist

Set a field property — creates the property if it doesn't exist

No parameter schema in public metadata yet.

Sponsors

Readme

mcp-access

Give any AI assistant full control over Microsoft Access databases.

Create forms, write VBA, design tables, manage controls, run queries, build relationships, and edit every corner of an .accdb — all through natural language. 69 tools that turn Access into something you can talk to.

No Access expertise required. Just describe what you want.

"Create a form called Invoices with a ListBox, two date filters, and a search button"
"Add a VBA click handler that filters the recordsource by date range"
"Create a table called audit_log with timestamp, user, and action fields"
"List all controls inside the Payment tab and change the combo's row source"

The AI handles the COM automation, design view, VBA modules, binary sections, cache invalidation, and all the ugly parts. You get the result.

What it can do


View the full README on GitHub

Details

Repository
github.com/unmateria/mcp-access
Category
Databases
Package
mcp-msaccess-database
Transport
STDIO
Registry
MCP registry, active

Related Databases MCP servers

View all
1spences10 avatarMcp Turso Cloudspences10/mcp-turso-cloudMCP server for integrating Turso with LLMs16stars
2neo4j-labs avatarNeo4j Mcp Canaryneo4j-labs/neo4j-mcp-canaryNeo4j MCP Canary — The canary goes first so the rest of us know what's coming3stars
3tkmawarire avatarSQL Sentinel MCP Servertkmawarire/sql-sentinelSQL Server monitoring and diagnostics for AI agents using Extended Events. No ODBC drivers required.3stars
4ofershap avatarSqliteofershap/mcp-server-sqliteSQLite MCP — query databases, inspect schemas, explain queries, export data.2stars
5pinion05 avatarPinion05 Supabase Mcp Litepinion05/supabase-mcp-liteSame functionality, consuming only 1/20 of the context window tokens.1stars
6daedalus avatarMcp Redis Serverdaedalus/mcp-redis-serverMCP server that exposes Redis API to AI models0stars