Microsoft Access Database MCP Server

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. 68 tools that turn Access into something you can talk to. Its 40 documented tools cover access, vbe, form, table. It runs locally over stdio via the published package.

People connecting database tools to Claude, Cursor, VS Code, or another MCP client. The project is written in Python.

VERIFIED ACTIVE

LAST COMMIT 2026-07-30 · ★ 49 · #42 OF 151 MAINTAINED DATABASE · VERIFIED 2026-08-25

Python servers · how we verify → /methodology

01 · Install Microsoft Access Database

before you install - you'll need

Set MCP_ACCESS_ALLOW_CODE_EXEC before connecting.

Claude Code

claude mcp add unmateria-mcp-access -- uvx mcp-msaccess-database

Claude Desktop / Cursor / VS Code - add to config

{
  "mcpServers": {
    "unmateria-mcp-access": {
      "command": "uvx",
      "args": [
        "mcp-msaccess-database"
      ]
    }
  }
}

Same JSON for Cursor. For VS Code, rename the top-level key from `mcpServers` to `servers`.

Using another client? Same JSON, different key

Claude Desktop · mcpServers

Cursor · mcpServers

VS Code · servers

Windsurf · mcpServers

Zed · context_servers

Cline · mcpServers

Roo Code · mcpServers

Continue · mcpServers

LibreChat · mcpServers

Gemini CLI · mcpServers

Codex CLI · mcp_servers

Full setup guides: every client.

02 · Evidence

Security posture

What to check before giving this server access to your agent - from the registry, GitHub, and our own probes. We don't score safety; we show what's verifiable.

runs as local process (stdio) - runs on your machine with your user's permissions

license no standard license detected - usage rights unclear; check the repo before commercial use

pypi package mcp-msaccess-database - check the name against the project README before installing (PyPI has no namespace ownership)

registry namespace io.github.unmateria is GitHub-verified and matches the repo owner

03 · What Microsoft Access Database can do

Prose above is summarized from the project's README and registry record - no invented capabilities.

What you can build

With this server connected, an agent can create a new empty .accdb database file, close the COM session and release the .accdb file, list objects by type (table, module, form, report, query, macro, all). System tables filtered, and export an object's full definition as text.

The 40 tools it gives your agent

Extracted from the project's README - what Microsoft Access Database lets an agent do.

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)
show all 40 tools
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. To search all modules at once, use access_vbe_search_all
access_vbe_search_all
- Search text across ALL modules/forms/reports in the database at once
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. Controls inside Pages/OptionGroups include a parent field
access_get_control
- Get the full definition block of a specific control (finds controls inside Pages/OptionGroups)
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)

Limitations (from the README)

- Access runs visible (Visible = True) so VBE COM access works correctly. - One Access instance is shared across all tool calls (singleton session). Opening a different .accdb closes the previous one. - COM thread isolation: All COM calls run in a dedicated single-thread executor (_com_executor) with CoInitialize(). This keeps COM in one STA thread while the asyncio event loop stays free for stdio I/O, preventing -32

04 · Who maintains Microsoft Access Database

Microsoft Access Database is maintained by unmateria. We track 2 MCP servers from unmateria - 2 actively maintained, 51 combined GitHub stars, oldest repo from Feb 2026. Full record: all servers from unmateria.

  1. KiCad Schematics Design KiCad schematics by talking to Claude. Places parts, wires nets, runs ERC. Needs KiCad 10. ★ 2

05 · Facts

category
database - ranked #42 of 151 actively-maintained database servers as of 2026-08-25.
registry
io.github.unmateria/msaccess-database (active, first published 2026-05-04 · 22 versions)
packages
pypi:mcp-msaccess-database

06 · Microsoft Access Database FAQ

Is Microsoft Access Database still maintained?

Yes - as of 2026-08-25, its last commit was 2026-07-30. We re-verify nightly.

What can Microsoft Access Database do?

With this server connected, an agent can create a new empty .accdb database file, close the COM session and release the .accdb file, list objects by type (table, module, form, report, query, macro, all). System tables filtered, and export an object's full definition as text.

How do I install Microsoft Access Database?

Run `uvx mcp-msaccess-database`. The README documents one environment variable (MCP_ACCESS_ALLOW_CODE_EXEC) to set first. Set MCP_ACCESS_ALLOW_CODE_EXEC before connecting. You can also paste the ready-made client config above.

Does Microsoft Access Database run locally?

Yes - it's a stdio server: it runs on your machine (via uvx) with your user's permissions. Your data stays local unless the server itself calls external APIs.

07 · Alternatives to Microsoft Access Database

More database MCP servers · Upstash MCP Server · Can LII (vaquill-ai) · Local WP · Context Fabric · Quarry

More Python MCP servers · Contrast API · Release Gate · Vap E · Bastion (vaquarkhan) · Vaquill · see all