access_create_databaseLABSCO SUMMARY
The rare Access tool that goes all the way into design view and the VBE, rather than just running queries against the file.
Creating a form, adding controls inside a tab page, and attaching a VBA click handler are the operations that normally force you into the Access UI; here they are calls, and the layout checker runs after each control edit so obvious breakage surfaces immediately. Code execution is the sharp edge and the author treats it as one: run, eval and macro tools stay off until you set the environment variable that enables them.
What it is
A Windows server that drives Access through COM: it opens an .accdb, works in design view, edits the VBA project, and closes the file again.
What you get
- Forms and reports created, cloned, exported and imported as text, with binary sections preserved on the way back in
- Controls handled properly: created, deleted, listed and modified in design view, including controls nested inside TabControl pages, plus tab order and bulk property changes in one session
- VBA edited at the line or procedure level — read a range, get a procedure with its bounds, replace lines, or patch inside a procedure atomically so a failed patch writes nothing
- Search that spans the project: one module, every module at once, or a name traced across VBA, query SQL and control properties such as ControlSource and RowSource
- Tables and SQL through DAO: create with types, defaults and primary keys, alter fields, run statements, batch several with per-statement results, and inspect structure including linked ODBC tables
- Relationships, indexes, saved queries, VBA references and field properties, each with the full create/read/update/delete set
- A UI automation loop — screenshot the Access window, click at image coordinates, type text or send keys, screenshot again to verify
- A deterministic layout check that flags white-on-white text, overlapping controls, truncated captions, off-canvas and zero-size controls, returning PASS, REVIEW or FAIL, and running on every control edit
- Maintenance: compact and repair, decompile to strip orphaned p-code from a bloated front end, export a Markdown index of the objects, and read or set database and startup options
- Report export to PDF, XLSX, RTF or TXT, and data transfer both ways with Excel and CSV
Requirements
Windows, because the whole thing runs on COM automation, with Microsoft Access installed (any version with the VBE, 2010 or later) and Python 3.9+. Trust access to the VBA project object model has to be enabled in Access Trust Center — there is a PowerShell script in the repo that sets it. Published on PyPI as mcp-msaccess-database and run over stdio; no login, because there is no network surface. The three tools that execute arbitrary VBA or macros are hidden and rejected unless you opt in with MCP_ACCESS_ALLOW_CODE_EXEC.
Setup effort
One command — uvx mcp-msaccess-database
USE CASES
Building a form from a description
Create the form bound to its record source, add the controls, append the VBA event handlers, then wire the form properties that hook them up.
Changing one procedure in a large module
List the procedures with their line numbers, read the one you want, and patch inside it — atomically, so a bad match changes nothing.
Working out what a field or table is used by
Search one name across VBA, query SQL and control properties in a single call, instead of opening objects one at a time.
Catching a broken layout before a user does
Run the layout check for contrast, overlap, truncation and out-of-bounds controls, then screenshot the form to see the verdict for yourself.
Reviving a front end that has grown huge and slow
Decompile to remove orphaned p-code and compact, or compact and repair on its own, then confirm the VBA project is still structurally sound.
Repointing linked tables at a different server
List the linked tables with their connection strings, then relink one or every table sharing that connection.
Adding a table and wiring it into the schema
Create it through DAO with types, defaults and a primary key, then add the relationship and the index it needs.
63 tools
Listed in project docs. Your client may show a different list.
access_closeaccess_list_objectsaccess_get_codeaccess_set_codeaccess_export_structureaccess_delete_objectaccess_create_formaccess_execute_sqlaccess_execute_batchaccess_table_infoaccess_search_queriesaccess_create_tableaccess_alter_tableaccess_vbe_get_linesaccess_vbe_get_procaccess_vbe_module_infoaccess_vbe_replace_linesaccess_vbe_findaccess_vbe_search_allaccess_vbe_replace_procaccess_vbe_patch_procaccess_vbe_appendaccess_list_controlsaccess_get_controlaccess_create_controlaccess_delete_controlaccess_set_control_propsaccess_set_multiple_controlsaccess_lint_formaccess_export_textaccess_import_textaccess_get_db_propertyaccess_set_db_propertyaccess_get_form_propertyaccess_set_form_propertyaccess_list_linked_tablesaccess_relink_tableaccess_list_relationshipsaccess_create_relationshipaccess_delete_relationshipaccess_list_referencesaccess_manage_referenceaccess_compact_repairaccess_decompile_compactaccess_manage_queryaccess_list_indexesaccess_manage_indexaccess_vbe_check_syntaxaccess_compile_vbaaccess_run_macroaccess_run_vbaaccess_eval_vbaaccess_output_reportaccess_transfer_dataaccess_get_field_propertiesaccess_set_field_propertyaccess_list_startup_optionsaccess_screenshotaccess_ui_clickaccess_ui_typeaccess_find_usagesaccess_tipsBEFORE YOU INSTALL
What to know first
Tools you get
63 tools named in the project's documentation.
Requires
- uvx on PATH
- Python 3.9+
Where it runs
All 5 documented setups run the server on your machine.
INSTALLATION
Connect your client
Server setup
uvx mcp-msaccess-databaseMCP Clients
Claude Code
claude mcp add access -- uvx mcp-msaccess-databaseClaude Code — project scope
claude mcp add --scope project access -- uvx mcp-msaccess-databaseCursor, Windsurf, Continue
{
"mcpServers": {
"access": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-msaccess-database"
]
}
}
}