Skip to main content
Glama
Carltk

Databases MCP Server (Access and SQLite 3)

by Carltk
README.md
# Databases MCP Server (Access and SQLite 3)

A simple MCP server to let AI interact with Microsoft Access and SQLite 3 databases.
Supports import/export with CSV and Excel files, and store human-readable notes about files.

**WARNING**: This server has full access to databases, so it can read and modify any data in it. **Use with caution** to avoid data loss!


## Configuration

To use this MCP server with Claude Desktop (or any other MCP host), clone the repo and add the following to your `config.json`:

```json
{
  "mcpServers": {
    "access-mdb": {
      "command": "uv",
      "args": [
        "run",
        "--with", "fastmcp",
        "--with", "pandas",
        "--with", "sqlalchemy-access",
        "--with", "openpyxl",
        "fastmcp", "run",
        "path/to/repo/server.py"
      ],
    }
  }
}
```

Dev note: to use with uvx, we need to create a package and publish it to PyPI.


## Supported Database Types

- **Microsoft Access**: `.mdb` and `.accdb` files
  - Supports both modern Access formats (via ACE ODBC driver)
  - Supports legacy Access 97 databases (via access-parser library - **read-only**)
- **SQLite 3**: `.db`, `.sqlite`, and `.sqlite3` files
- **In-memory SQLite**: When no database path is specified

### Access 97 Support

Access 97 (.mdb) databases are supported in **read-only mode** using the `access-parser` library. This allows:

- Reading data from Access 97 databases without needing ODBC drivers
- Basic SELECT queries to retrieve data
- No external dependencies (pure Python implementation)

**Limitations:**
- Access 97 databases are read-only (no INSERT, UPDATE, DELETE operations)
- Only basic SELECT queries are supported (no complex JOINs or subqueries)
- Parameterized queries are not supported for Access 97 databases

The server automatically detects Access 97 format and falls back to `access-parser` when needed.


## Available Tools

Database management:
- `list`: List all active databases available in the server.
- `create`: Create a new database file (for Microsoft Access, copies the empty.mdb template).
- `connect`: Connect to an existing database file, or creates an in-memory database if the file is not specified.
- `disconnect`: Close a database connection. For in-memory databases, this will clear all its data.

Data management:
- `query`: Execute a SQL query to retrieve data from a database.
- `update`: Execute a SQL query to insert/update/delete data in a database.
- `import_csv`: Imports data from a CSV file into a database table.
- `export_csv`: Exports data from a database table to a CSV file.
- `import_excel`: Imports data from an Excel file into a database table.

Notes management:
- `read_notes`: Reads notes from the specified file, or discovers notes in the specified directory.
- `write_notes`: Writes notes to the specified file, or linked to the specified database.

Note: Excel export is not implemented, use haris-musa/excel-mcp-server instead.
The main problem is tracking the index of the rows and columns in the Excel file, to correctly import/export data to the same cells, and/or insert new rows/columns.
In addition, merged cells complicate the process, it would be too complex to implement.


## Project structure

Main files:
- [`server.py`](/server.py): MCP server implementation.

Tests:
- [`test_tools.py`](/test_tools.py): Functions to test individual MCP tools.
- [`test_mcp.py`](/test_mcp.py): Tests all MCP tools in a typical workflow.

Documentation:
- [`README.md`](/README.md): This file, with general information about the project.
- [`LICENSE`](/LICENSE): MIT license.

Scouting scripts, used in the first stages to develop basic functionality:
- [`scouting_mdb.py`](/scouting_mdb.py): SQLAlchemy and pandas to interact with Microsoft Access databases.
- [`scouting_csv.py`](/scouting_csv.py): SQLAlchemy and pandas to interact with CSV files.


## TODO

- [x] Add tool to create a new database, copying empty.mdb to the specified path.
- [x] Add the ability to connect to multiple databases at the same time.
- [x] Add tool to list all tables in the database.
- [x] Add tools to import/export data from/to CSV files.
- [x] Add tools to import data from/to Excel files.
- [x] Add prompt to guide AI asking info to the user about the database.
- [x] Store info about files (.AInotes files), to retrieve it later.
- [ ] Add tool to remember imported/exported CSV and Excel files.