Skip to content
Agentmart
Submit a tool

Microsoft Access Database

Read and edit Microsoft Access databases (.accdb/.mdb) - forms, VBA, tables, queries.

Connector by unmateria · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 58
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/unmateria-msaccess-database

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Read and edit Microsoft Access databases (.accdb/.mdb) - forms, VBA, tables, queries. Windows.

Use cases: database-access, code-generation

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
28 read · 33 write · 8 delete
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Tools by what they do 69

Read from the source code; the running server may list different tools.

Read 28 · Look things up without changing anything.

  • access_eval_vba
  • access_find_definition
  • access_find_usages
  • access_get_code
  • access_get_control
  • access_get_db_property
  • access_get_field_properties
  • access_get_form_property
  • access_lint_form
  • access_list_controls
  • access_list_indexes
  • access_list_linked_tables
Show 16 more tools
  • access_list_objects
  • access_list_references
  • access_list_relationships
  • access_list_startup_options
  • access_screenshot
  • access_search_controls
  • access_search_data
  • access_search_queries
  • access_table_info
  • access_tips
  • access_vbe_check_syntax
  • access_vbe_find
  • access_vbe_get_lines
  • access_vbe_get_proc
  • access_vbe_module_info
  • access_vbe_search_all

Write 33 · Create, change, send or run things.

  • access_alter_table
  • access_build_form
  • access_clone_object
  • access_close
  • access_compile_vba
  • access_create_control
  • access_create_database
  • access_create_form
  • access_create_relationship
  • access_create_table
  • access_execute_batch
  • access_execute_sql
Show 21 more tools
  • access_export_structure
  • access_export_text
  • access_import_text
  • access_manage_tab_order
  • access_output_report
  • access_relink_table
  • access_run_macro
  • access_run_vba
  • access_set_code
  • access_set_control_props
  • access_set_db_property
  • access_set_field_property
  • access_set_form_property
  • access_set_multiple_controls
  • access_transfer_data
  • access_ui_click
  • access_ui_type
  • access_vbe_append
  • access_vbe_patch_proc
  • access_vbe_replace_lines
  • access_vbe_replace_proc

Delete 8 · Delete, drop, revoke or wipe things.

  • access_compact_repair
  • access_decompile_compact
  • access_delete_control
  • access_delete_object
  • access_delete_relationship
  • access_manage_index
  • access_manage_query
  • access_manage_reference

Network hosts it talks to 2

  • github.com · found in code
  • learn.microsoft.com · found in code

Files it touches

  • Any path the agent passes to its tools

Tools (69)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • access_alter_table

    Modifies the structure of an Access table via DAO. Actions: add_field (with type, size, default, description), delete_field (requires confirm=true), rename_field. More robust than ALTER TABLE via SQL in Jet.

  • access_build_form

    Builds a complete, well-laid-out form from a DECLARATIVE spec — the preferred way to create data-entry forms. You describe WHAT goes on the form (a title, an ordered list of fields, a row of action buttons, single or two-column); the tool computes every Left/Top/Width/Height from a canonical 60-twip grid, applies a WCAG-safe palette (or a curated design direction via theme=despacho|panel|archivo), assigns a sane tab order and sizes the form and its header/footer sections. You never pick a coordinate. Use this instead of many access_create_control calls; fine-tune afterwards with access_set_con…

  • access_clone_object

    Clones a form, report, module, class_module, query or macro to a new name. Internally uses SaveAsText → LoadFromText, preserving binary sections (PrtMip, PrtDevMode, NameMap, GUID...) and VBA code-behind. Refuses to overwrite an existing target unless overwrite=true.

  • access_close

    Closes the COM session and releases the .accdb/.mdb file.

  • access_compact_repair

    Compacts and repairs the database. Closes, compacts to temp, replaces original and reopens. Returns sizes.

  • access_compile_vba

    Compiles and saves all VBA modules. A dialog watchdog always runs and dismisses any error MsgBox; the watchdog is given `timeout` seconds (default 2) of grace after the compile call returns before being stopped.

  • access_create_control

    Creates a control on a form/report via COM. control_type: name or number (e.g.: 119=acCustomControl for ActiveX, 128=acWebBrowser native). Special props (case-insensitive): section (0=Detail,1=Header,2=Footer,3=PageHeader,4=PageFooter or name: 'detail','header','footer','reportheader','pageheader'...), parent (name of TabControl Page or OptionGroup), column_name, left, top, width, height. Pass parent='myTabPage' to drop the control inside a TabControl Page. Use control_name to rename the control after creation (or 'Name' in props). Other props that setattr() refuses are retried via the COM Pro…

  • access_create_database

    Creates an empty Access database (.accdb). Error if the file already exists.

  • access_create_form

    Creates a new form in the database. Avoids the 'Save As' MsgBox that blocks COM when using CreateForm() directly. Optional has_header (header/footer section), record_source (bind to table/query) and default_view (0=Single, 1=Continuous, 2=Datasheet, 3=PivotTable, 4=PivotChart, 5=Split, 6=Split datasheet).

  • access_create_relationship

    Creates a relationship between two tables. attributes: 256=cascade update, 4096=cascade delete (combinable with OR).

  • access_create_table

    Creates an Access table via DAO with full support: types, defaults, descriptions and primary key — all in a single call. More robust than CREATE TABLE via SQL, which does not support DEFAULT or YESNO in Jet DDL. Each field accepts: name, type, size, required, primary_key, default, description. Valid types: autonumber, long, integer, short, byte, text, memo, currency, double, single, datetime, boolean/yesno/bit, guid, ole, bigint.

  • access_decompile_compact

    Removes orphan VBA p-code via /decompile, recompiles and compacts. Typical reduction 60-70% on heavily edited front-end files. Use when the .accdb exceeds 30-40 MB without having local tables with data.

  • access_delete_control

    Deletes a control from a form/report via COM.

  • access_delete_object

    Deletes an Access object (module, form, report, query, macro). Requires confirm=true.

  • access_delete_relationship

    Deletes a relationship between tables by name. Requires confirm=true — this is irreversible.

Show 54 more tools
  • access_eval_vba

    Evaluates a VBA/Access expression via Application.Eval. Works with: domain functions (DLookup, DCount...), built-in VBA functions (Date(), Len()...), form properties of OPEN forms (Forms!frmX.Prop), public functions in standard modules. Does NOT work with: class instances (even default/predeclared), variables, Subs. For class instances use access_run_vba with a wrapper function, or this tool will attempt an automatic fallback via a temp VBA module.

  • access_execute_batch

    Executes multiple SQL statements in a single call. Each statement can be SELECT (returns rows, default limit 100 — adjustable via 'limit') or INSERT/UPDATE/DELETE (returns affected_rows). stop_on_error=true stops at first error. DELETE/DROP/TRUNCATE/ALTER require confirm_destructive=true.

  • access_execute_sql

    Executes SQL via DAO. SELECT returns JSON rows (default limit: 500). INSERT/UPDATE return affected_rows. DELETE/DROP/ALTER require confirm_destructive=true.

  • access_export_structure

    Generates Markdown with database structure: modules with signatures, forms, reports, queries, macros. Writes to disk and returns the content.

  • access_export_text

    Exports form/report/module as text (SaveAsText). Does NOT open in Design view — does not recalculate positions. File is UTF-16 LE.

  • access_find_definition

    Go-to-definition for a VBA symbol — the mirror of access_find_usages. Scans every standard module, form code-behind and report code-behind for DECLARATIONS of `symbol` and returns where each lives (object_type, object_name, line, declaration, scope, value if constant). Detects: const, enum, enum_member, type, type_field, sub, function, property (Get/Let/Set, incl. Default Property), declare (Win32 API), and module-level variable. Handles multi-const lines (Const A=1, B=2) and joins VBA line continuations (` _` at end of line). Use this when you need the value of a constant/enum member, or the …

  • access_find_usages

    Searches for text or regex in VBA, query SQL and control properties (ControlSource, RecordSource, RowSource, SourceObject, DefaultValue, ValidationRule, LinkChildFields, LinkMasterFields). Returns results grouped: vba_matches, query_matches, control_matches. A vba_match on a statement continued with ' _' also carries statement_line, end_line and content_full (the whole statement joined). Each control_match carries control_name, property, the full (joined) value and the line in the export. For Caption/Tag/Filter/OrderBy, other properties or a single form, use access_search_controls instead.

  • access_get_code

    Reads code/definition of an Access object. Modules: .bas code. Forms/reports: internal format (props + VBA). Macros: SaveAsText XML-like representation (Action/RunCommand blocks); pair with access_set_code to round-trip. Queries: SQL + DAO properties. For reading specific VBA procedures, prefer access_vbe_get_proc (faster, smaller output).

  • access_get_control

    Full definition (Begin...End) of a control by name. `raw_block` is the UNABRIDGED definition exactly as Access exports it — go here when you need a property access_list_controls does not return (OnClick, StatusBarText, Format, ConditionalFormat...). Note that inside raw_block a long value is still split across quoted continuation lines, the way Access wrote it.

  • access_get_db_property

    Reads a database property (CurrentDb.Properties) or Access option (GetOption).

  • access_get_field_properties

    Reads all properties of a field: DefaultValue, ValidationRule, Description, Format, etc.

  • access_get_form_property

    Reads properties of a form or report (RecordSource, Caption, DefaultView, HasModule, etc.). object_type ('form' or 'report') is required. If property_names is omitted, returns all readable properties. Pass 'section' to read a section's properties instead.

  • access_import_text

    Imports form/report/module from text (LoadFromText). REPLACES if exists. Does NOT open in Design view — does not recalculate positions. For forms/reports with CodeBehindForm: separates VBA automatically and injects via VBE (same as access_set_code).

  • access_lint_form

    NOT a designer and NOT aesthetics — expect zero 'good design' from this. It is a deterministic checker of the OBVIOUS, mechanically-verifiable stuff only (a seatbelt, not a stylist). Returns structured JSON violations the agent should fix BEFORE declaring a layout done: contrast (WCAG white-on-white etc.), overlap, out-of-bounds, text truncation, sibling inconsistency, misalignment, zero-size/invisible. summary.verdict is PASS / REVIEW / FAIL. Static (one export, no Design view). measure='auto' tries Access WizHook for exact text width and falls back to a heuristic. The same engine runs automa…

  • access_list_controls

    Lists controls of a form/report with name, type, caption, control_source, position. Long property values that Access splits across several quoted lines in the export are returned joined, so control_source/caption are always the WHOLE value. Use `fields` to keep only the keys you need (e.g. ["name","control_source"]) — a 60-control form is mostly geometry. For a property this tool does not return, read the control's raw_block with access_get_control.

  • access_list_indexes

    Lists indexes of a table: name, fields, primary, unique, foreign.

  • access_list_linked_tables

    Lists linked tables with source_table, connect_string, is_odbc. name='X' returns only that table (exact, case-insensitive); names_only=true gives a light listing without connect strings (use it when there are hundreds of links and the full dump overflows); mask_password=true masks PWD=... in the returned connect strings.

  • access_list_objects

    Lists database objects by type (table, module, form, report, query, macro, all). System tables (MSys*, ~*) are filtered out. Macros are fully supported as a regular object_type — combine with access_get_code / access_set_code / access_run_macro for end-to-end macro workflows.

  • access_list_references

    Lists VBA references: name, GUID, path, is_broken, built_in.

  • access_list_relationships

    Lists relationships between tables: name, tables, fields, cascade flags.

  • access_list_startup_options

    Lists the 14 common startup options with their current values.

  • access_manage_index

    Creates or deletes an index. create requires fields [{name, order?}]. primary/unique optional.

  • access_manage_query

    Manages QueryDefs: create, modify, delete (requires confirm=true), rename, get_sql. create/modify require sql.

  • access_manage_reference

    Adds (add) or removes (remove) a VBA reference. add: requires guid or path. remove: requires name.

  • access_manage_tab_order

    Reads or sets the TabIndex of controls on a form/report. Actions: 'get' (returns controls grouped by section, ordered by TabIndex), 'set' (assigns TabIndex 0..N-1 in the order of `tab_order`), 'auto_renumber' (re-sequences current TabIndex values to be contiguous 0..N-1 — useful after deleting controls). Skips controls that don't support TabIndex (Label, Line, Rectangle, Image, PageBreak).

  • access_output_report

    Exports a report to PDF, XLSX, RTF or TXT. output_path auto-generated if omitted. Refuses to overwrite an existing file unless overwrite=true.

  • access_relink_table

    Changes the connect string of a linked table and refreshes. relink_all=true updates all tables with the same original connection. refresh=true re-reads the schema using the table's OWN connect string (no new_connect needed, password never dumped) — use after an ALTER TABLE on the server. Note: LoginTimeout=8 is injected into new_connect so a bad string fails fast instead of hanging on a modal login dialog, so the returned new_connect differs from the one you sent.

  • access_run_macro

    Executes an Access macro by name.

  • access_run_vba

    Executes a VBA Sub/Function. Supports 3 syntaxes: 'Module.MySub' (standard module via Application.Run), 'MySub' (same), 'Forms.FormName.Method' (form module via COM — form must be open). Returns result if Function. With timeout, automatically dismisses MsgBox/InputBox if exceeded.

  • access_screenshot

    Captures the Access window as PNG. Optionally opens a form/report before capturing. Returns path, dimensions and metadata. wait_ms pumps Windows messages (Timer events, ActiveX init).

  • access_search_controls

    Searches text or regex in the control properties of every form/report (ControlSource, RowSource, DefaultValue, ValidationRule, SourceObject, LinkChild/MasterFields, Caption, Filter, OrderBy, Tag by default; properties=["all"] searches every property of the block, e.g. OnClick or StatusBarText). Values split across continuation lines in the export are joined BEFORE matching, so a term that falls across the split is still found. Each hit carries the owning control, the property, the full value and the line in the export (use access_get_code to read around it). Form/report-level properties come b…

  • access_search_data

    Searches a text string in any Text/Memo field of any LOCAL table. Skips system tables (MSys*, ~*) and linked tables. Returns matches grouped by table with an excerpt around each hit. Use `tables` to restrict the scan to a list of table names. Jet LIKE is case-insensitive by default; pass match_case=true to filter the result set further. Results are capped per-table and total.

  • access_search_queries

    Searches for text or regex in the SQL of ALL queries. Returns [{query_name, sql}].

  • access_set_code

    Imports code into the database. Overwrites if exists, creates if not. Call access_get_code first to read the original. For forms/reports: supports CodeBehindForm/CodeBehindReport (VBA is injected via VBE). For object_type='macro': accepts the SaveAsText representation (round-trip with access_get_code). For object_type='class_module': creates a VBA class module (adds VERSION 1.0 CLASS header automatically if missing). Automatic backup and restore on import failure.

  • access_set_control_props

    Modifies properties of a control via COM. Numeric/boolean values are converted automatically.

  • access_set_db_property

    Sets a database property or Access option. Creates the property if it does not exist.

  • access_set_field_property

    Sets a field property. Creates the property if it does not exist.

  • access_set_form_property

    Sets form/report-level properties (RecordSource, Caption, DefaultView, HasModule, etc.) via COM in Design view. Pass 'section' to set properties of a section instead (BackColor, Height, Visible, ...).

  • access_set_multiple_controls

    Modifies properties of multiple controls on a form/report in a single operation. Opens in Design view once, applies changes, saves and closes.

  • access_table_info

    Table structure via DAO: fields, types, size, required, record_count, is_linked.

  • access_tips

    Tips and gotchas for working with Access via MCP. Topics: eval, controls, gotchas, sql, vbe, compile, design_vbe, macros, lint, layout, design, subform_tabcontrol. Without topic returns the list.

  • access_transfer_data

    Import/export data between Access and Excel/CSV. file_type: xlsx or csv. range only for Excel, spec_name only for CSV.

  • access_ui_click

    Click at image coordinates on the Access window. Coordinates are relative to a previous screenshot (image_width required for scaling).

  • access_ui_type

    Types text or sends keyboard shortcuts to the Access window. Use 'text' for normal text, 'key' for special keys (enter, tab, escape, f1-f12, etc.), 'modifiers' for combinations (ctrl, shift, alt).

  • access_vbe_append

    Appends code to the end of a VBA module.

  • access_vbe_check_syntax

    Static structural check of the ALREADY OPEN VBA project — the safe alternative to access_compile_vba, which decompiles first and can discard unsaved VBA. Detects unbalanced If/For/Do/While/Select/With/Type/Enum blocks, code outside a procedure and misplaced Option statements. It is NOT a compiler: it does not resolve identifiers, types or references, so ok=true does not prove the project compiles.

  • access_vbe_find

    Searches for text or regex in ONE specific VBA module. Returns matches [{line, content, proc}]. Each match includes 'proc' (procedure name). Optional: proc_name to limit search to a single procedure. When the matched line belongs to a statement continued with ' _', the match also carries statement_line, end_line and content_full (the whole statement joined, trailing comments removed) — 'content' alone is only the matched PHYSICAL line, so read content_full before judging a wrapped statement (an API Declare's return type lives on its last continuation line). To search ALL modules/forms/reports …

  • access_vbe_get_lines

    Reads a range of lines from a VBA module via VBE COM. Provide either count or end_line (not both).

  • access_vbe_get_proc

    Code of a VBA procedure by name. Returns start_line, body_line, count, code. start_line = VBE proc start, which INCLUDES the blank separator / comment lines above the proc (use it for whole-proc operations). body_line = the Sub/Function/Property declaration line itself (use it for line-range edits of the body).

  • access_vbe_module_info

    Index of procedures in a VBA module: total_lines, procs [{name, start_line, body_line, count}]. start_line = VBE proc start (INCLUDES preceding blank/comment lines); body_line = the Sub/Function/Property declaration line.

  • access_vbe_patch_proc

    Surgical find/replace WITHIN a VBA procedure. More efficient than replace_proc when only a few lines change in a large proc. patches: [{find, replace}]. ATOMIC BY DEFAULT (atomic=true): if any patch fails to match, nothing is written and you must re-send the WHOLE batch. Anchors are matched case-insensitively by default (match_case=false), because VBA is case-insensitive and the VBE rewrites casing on its own. proc_name='(Declarations)' targets the module declarations section.

  • access_vbe_replace_lines

    Replaces lines in a VBA module via VBE. count=0: insertion. new_code='': deletion. Validates bounds automatically. Pass new code as new_code (a string) OR new_lines (a list of strings, joined with newlines — '' entries become blank lines). Batch mode: pass 'operations' (list of {start_line, count, new_code|new_lines}) to execute multiple operations in 1 call (auto-sorted bottom-to-top).

  • access_vbe_replace_proc

    Replaces an entire VBA procedure by name (boundaries found via VBE). Preserves the blank separator line above the proc. new_code='' DELETES the proc (and its leading blank separator) — this is the supported way to delete a procedure.

  • access_vbe_search_all

    Searches for text or regex in ALL VBA modules (modules, forms, reports) in the database. When a matched line belongs to a statement continued with ' _', the match also carries statement_line, end_line and content_full (the whole statement joined, trailing comments removed) — 'content' alone is only the matched PHYSICAL line, so read content_full before judging a wrapped statement (an API Declare's return type lives on its last continuation line).

Signals

Stars
58
Forks
16
Open issues
0
Contributors
3
Weekly downloads
141
Last commit
Oct 10, 2026 (18 days ago)
Last release
Oct 8, 2026 (20 days ago)
Last package publish
Oct 8, 2026 (20 days ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.unmateria/msaccess-database
Version
0.7.64
Auth
No auth
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from unmateria

Cite this page

Microsoft Access Database MCP server. Agent Mart. https://agentmart.dev/connectors/unmateria-msaccess-database (last updated 2026-10-24)