Create forms, write VBA, design tables, manage controls, run queries, build relationships, and edit every corner of an `.accdb` — all through natural
Create forms, write VBA, design tables, manage controls, run queries, build relationships, and edit every corner of an .accdb — all through natural language. 68
Compare MCP servers by category, or browse hosted MCP servers if you prefer an endpoint over a local process.
Check the linked publisher documentation and your connected client's tool list. Names and availability can vary with the server version and account permissions.
| Tool | What it does |
|---|---|
| access_create_database | Create a new empty .accdb database file |
| access_close | Close the COM session and release the .accdb file |
| access_list_objects | List objects by type (table, module, form, report, query, macro, all). System tables filtered |
| access_get_code | Export an object's full definition as text |
| access_set_code | Import modified text back (creates or overwrites) |
| access_export_structure | Generate a Markdown index of all modules, forms, reports, queries |
| access_delete_object | Delete a module, form, report, query, or macro. Requires confirm=true |
| access_create_form | 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), d |
| access_execute_sql | Run SQL via DAO — SELECT returns rows as JSON (limit default 500). DELETE/DROP/ALTER require confirm_destructive=true |
| access_execute_batch | Execute multiple SQL statements in one call. Supports mixed SELECT/INSERT/UPDATE/DELETE with per-statement results, stop_on_error, and confirm_destructive |
| access_table_info | Show table structure via DAO (fields, types, sizes, required, linked status) |
| access_search_queries | Search text in the SQL of ALL queries at once (find which queries reference a table, field, or keyword) |
| access_create_table | Create a table via DAO with full type, default, description and primary key support in one call. More robust than CREATE TABLE SQL |
| access_alter_table | Modify table structure via DAO: add field, delete field (requires confirm=true), rename field |
| access_vbe_get_lines | Read a line range from a VBA module without exporting the whole file |
| access_vbe_get_proc | Get a procedure's code and position by name |
| access_vbe_module_info | List all procedures with their line numbers |
| access_vbe_replace_lines | Replace/insert/delete lines in a VBA module directly via VBE |
| access_vbe_find | Search text in ONE specific module. A hit on a statement wrapped with _ also returns the whole joined statement. To search all modules at once, use access_vbe_s |
| access_vbe_search_all | Search text across ALL modules/forms/reports in the database at once. A hit on a statement wrapped with _ also returns the whole joined statement. Optional cont |
| access_vbe_replace_proc | Replace a full procedure by name (auto-calculates line bounds). Strips misplaced Option lines, runs structural health check |
| access_vbe_patch_proc | Surgical find/replace within a procedure. Atomic by default (a failed patch writes nothing), case-insensitive anchors, optional require_unique, whitespace-toler |
| access_vbe_append | Append code at the end of a module. Auto-strips Option Explicit/Option Compare to prevent misplacement |
| access_list_controls | List all controls of a form/report with key properties. Long values split across lines in the export are returned joined. Controls inside Pages/OptionGroups inc |
| access_get_control | Get the full, unabridged definition block of a specific control — where to go for a property access_list_controls does not return (finds controls inside Pages/O |
| access_search_controls | Search text or regex in the control properties of every form/report (ControlSource, RowSource, Caption, Tag, Filter… or properties=["all"]). Values split across |
| access_create_control | Create a new control via COM in design view. Supports class_name for ActiveX (type 119) ProgID initialization. Use type 128 (acWebBrowser) for native WebBrowser |
| access_delete_control | Delete a control via COM |
| access_set_control_props | Modify control properties via COM in design view |
| access_set_multiple_controls | Modify properties of multiple controls in a single design-view session |
| access_lint_form | Deterministic check for objectively-broken layout: contrast (WCAG), overlap, out-of-bounds, truncation, sibling inconsistency, zero-size/invisible. Returns verd |
| access_export_text | Export form/report/module as text via SaveAsText. Does NOT open Design view. UTF-16 LE output |
| access_import_text | Import form/report/module from text via LoadFromText. Replaces if exists. Auto-splits CodeBehindForm VBA |
| access_get_db_property | Read a DB property (CurrentDb.Properties) or Access option (GetOption) |
| access_set_db_property | Set a DB property or Access option — creates the property if it doesn't exist |
| access_get_form_property | Read form or report properties (RecordSource, Caption, DefaultView, etc.). object_type required (form or report). Omit property_names for all |
| access_set_form_property | Set form/report properties (RecordSource, Caption, DefaultView, HasModule, etc.) via COM in Design view |
| access_list_linked_tables | List linked tables with source table, connection string, ODBC flag. name='X' returns one table; names_only=true is a light listing (no connect strings — use it |
| access_relink_table | Change connection string and refresh link — auto-saves credentials (dbAttachSavePWD) when UID/PWD detected. relink_all=true updates all tables with the same ori |
| access_list_relationships | List table relationships with field mappings and cascade flags |
| access_create_relationship | Create a relationship between two tables (supports cascade update/delete) |
| access_delete_relationship | Delete a relationship by name |
| access_list_references | List VBA project references with GUID, path, broken/built-in status |
| access_manage_reference | Add (by GUID or file path) or remove a VBA reference — guards against removing built-in refs |
| access_compact_repair | Compact & repair the database — closes, compacts to temp, swaps atomically, reopens |
| access_decompile_compact | Remove orphaned VBA p-code via /decompile, recompile, then compact. Typical reduction: 60-70% on heavily-edited front-end databases. Use when a data-free .accdb |
| access_manage_query | Create, modify, delete, rename, or read SQL of a QueryDef. Delete requires confirm=true |
| access_list_indexes | List indexes of a table with fields, primary, unique, foreign flags |
| access_manage_index | Create or delete an index. Create requires fields list with optional sort order |
| access_vbe_check_syntax | Static structural check of the already-open VBA project — no decompile, nothing discarded. The safe post-edit check. Not a compiler: it does not resolve identif |
| access_compile_vba | Compile and save all VBA modules. Optional timeout to auto-dismiss error MsgBox. Decompiles first and can discard unsaved VBA — for a quick check use access_vbe |
| access_run_macro | Execute an Access macro by name |
| access_run_vba | Execute a VBA Sub/Function. Standard modules via Application.Run, form modules via Forms.FormName.Method syntax (COM). Optional timeout auto-dismisses MsgBox/In |
| access_eval_vba | Evaluate a VBA expression via Application.Eval. Domain functions, VBA built-ins, open form properties, standard module functions. Auto-fallback via temp module |
| access_output_report | Export a report to PDF, XLSX, RTF, or TXT via DoCmd.OutputTo |
| access_transfer_data | Import/export data between Access and Excel (.xlsx) or CSV. Supports range (Excel) and spec_name (CSV) |
| access_get_field_properties | Read all properties of a table field (DefaultValue, ValidationRule, Description, Format, etc.) |
| access_set_field_property | Set a field property — creates the property if it doesn't exist |
| access_list_startup_options | List 14 common startup options (AppTitle, StartupForm, AllowBypassKey, etc.) with current values |
| access_screenshot | Capture the Access window as PNG. Optionally opens a form/report first. Returns path, dimensions (original + image), and metadata. Configurable max_width (defau |
| access_ui_click | Click at image coordinates on the Access window. Coordinates are relative to a previous screenshot (image_width required for scaling). Supports left, double, an |
| access_ui_type | Type text or send keyboard shortcuts. text for normal characters (WM_CHAR), key for special keys (enter, tab, escape, f1-f12, arrows, etc.), modifiers for combo |
| access_find_usages | Search a name across VBA code, query SQL, and control properties (ControlSource, RecordSource, RowSource, SourceObject, DefaultValue, ValidationRule, LinkChildF |
| access_tips | On-demand tips and gotchas. Topics: eval, controls, gotchas, sql, vbe, compile, design. Zero tokens until called |
{
"mcpServers": {
"access": {
"type": "stdio",
"command": "python",
"args": [
"C:\\path\\to\\access_mcp_server.py"
]
}
}
}From the project documentation. Replace placeholders and example paths before connecting.
Inspect PostgreSQL schemas and run read-only queries with the archived MCP reference server. Review its maintenance status before choosing it.
Connect the Notion MCP server to search workspace content and work with pages and databases through Notion’s hosted OAuth service.
Use the Supabase MCP server to inspect database schemas, query project data and retrieve docs through a project-scoped connection.
Query, modify and analyse local SQLite databases in conversation — the fastest way to chat with a data file.
Metabase ships its own MCP endpoint — search your BI content, build and run queries, and save questions and dashboards without leaving the chat.
Official MongoDB server covering data, schemas and Atlas management — from find queries to spinning up clusters.