View Categories

How to Connect Microsoft Access to Claude / Cursor via MCP (Microsoft Access MCP Server Setup)

24 min read

MCP SERVER MICROSOFT ACCESS

Query Microsoft Access with Claude or Cursor via MCP.

Ask plain-English questions about your Microsoft Access data — .accdb and .mdb files, customers, orders, linked tables — over a secure, outbound-only cloud link, with Schema Intelligence baked into the Microsoft Access MCP connector so the AI writes correct Jet/ACE SQL on the first try.

No firewall holes One key, every connector Live data, no cache lag Bring your own AI tool

Query Streams is a secure, real-time data integration platform that brings every database and SaaS API in your account into Claude, Cursor, ChatGPT, and Grok — through a single MCP key with no firewall changes. This guide walks through wiring up the Microsoft Access MCP connector specifically, so your AI tool can answer plain-English questions about .accdb and .mdb data — customers, orders, line items, linked tables, ad-hoc joins and aggregations — without you exporting CSVs out of Access or wrestling with the navigation pane. Learn more at QueryStreams.com and sign up for free to start asking your AI tool real Microsoft Access questions.

What Query Streams MCP gives you for Microsoft Access

Other “Microsoft Access MCP” servers in the open-source landscape connect the AI tool directly to a single .accdb or .mdb file path. That works, but it ties the AI client to one machine, gives you no scope or rate-limiting, and offers no audit trail of what the AI actually asked. The Query Streams MCP server for Microsoft Access solves a wider problem: one key, every connector, full audit trail, and the AI tool never sees the file path or the underlying connection string.

Zero inbound firewall holes

The Network Agent opens a single outbound encrypted cloud link to Query Streams. Your AI client connects to the cloud, never to your Microsoft Access file or its host machine. No port to open, no file share to expose, no VPN, no SharePoint or OneDrive backend exposed to the public internet.

One key, every connector

The same MCP key reaches every database and SaaS API your account has connected. Add a Stripe or PostgreSQL connector tomorrow and the AI tool sees it next to your Microsoft Access tables without re-keying.

Schema Intelligence baked in

The AI sees AI-curated descriptions, semantic types, enum value lists, and discovered foreign keys for every Microsoft Access column — not just the bare table list returned by the ACE OLEDB / Jet driver. It writes accurate Jet SQL on the first try, even on legacy Access databases with cryptic field names and bracketed table names like [Order Details].

Read-only enforced at the agent

Even a hallucinating LLM can’t issue DELETE, UPDATE, or DROP through Query Streams MCP. The Network Agent rejects anything that isn’t SELECT, WITH, or a transformation/select query before the ACE OLEDB driver ever sees the SQL.

Per-key rate limits

Default 60 requests per minute and 10 execute calls per minute, configurable per key. A runaway AI tool-call loop hits a token bucket, not your Access file lock or the machine the agent runs on.

How it works without opening firewall ports

The Query Streams Network Agent is a small program you install once on a Windows machine that can reach your Microsoft Access file — any laptop, desktop, file server, or Windows VM where the .accdb or .mdb lives, plus the Microsoft Access Database Engine / ACE OLEDB redistributable. The agent opens the file through the ACE OLEDB / Jet provider, so the AI tool never sees your file path or your linked-table credentials. See how the outbound-only agent link works →

AI Client

Cursor, Claude,
ChatGPT, Grok

QS MCP Server

Streamable HTTP
X-MCP-Key auth

Network Agent

On your network
Cloud link out

Microsoft Access database

.accdb / .mdb file
opened by the agent

No inbound port required — the agent dials out, never the other way around

The MCP key you give Cursor or Claude is scoped (read / analyze / execute), revocable at any time, and rate-limited per-key. The AI tool calls these MCP tools to do its work:

querystreams-mcp · tool catalog
qs_list_organizationsread
Returns the org bound to the calling key.
qs_list_agentsread
Lists Network Agents and online state.
qs_list_connectorsread
Lists data connectors (one entry per database server or API).
qs_get_connector_schemaread
Returns the Microsoft Access tables and columns the AI can query (one logical “database” per registered .accdb / .mdb file), with Schema Intelligence enrichment when available.
qs_profile_tableanalyze
Sample values, distributions, enum detection, semantic types — on demand.
qs_list_saved_queriesread
Pre-built parameterized SQL templates the team trusts. The AI runs them without ever seeing the SQL.
qs_run_saved_queryexecute
Executes a saved query by pattern_key with optional parameter overrides.
qs_run_queryexecute
Executes a SELECT against a connector. Read-only validator runs at the agent, before the ACE OLEDB driver sees the SQL.

Why Schema Intelligence makes Query Streams MCP different

Most “MCP for Microsoft Access” servers in the open-source landscape hand your AI tool the same bare table list that MSysObjects hands a stranger. Field names. Jet data types. Maybe a primary key. The LLM is left to guess what StatusID = 3 means, what CustNm stores, or whether [Order Details].OrderID actually joins to Orders.OrderID (Access typically declares relationships in the Relationships window, but plenty of older .mdb files predate that or were exported from external sources without the relationships preserved). That’s why the first SQL most LLMs write against a bare Access schema is wrong — not because the LLM is bad, but because it doesn’t have the data it needs to be right.

Query Streams MCP returns that same schema enriched with Schema Intelligence (SI) — AI-curated metadata generated by profiling your actual Microsoft Access data, so every schema tool the AI calls returns the bare schema plus six layers of curated knowledge and the LLM stops guessing. How Schema Intelligence powers accurate SQL →

To make this concrete, here is what the AI client gets back from a single qs_get_table_schema call against a typical Microsoft Access Northwind-style database (Customers, Orders, [Order Details], Products) — first without Schema Intelligence, then with it.

Without Schema Intelligence data_source: captured_schema
// what the LLM sees == TABLE: Customers == – CustomerID Text(5) [PK, NOT NULL] – CompanyName Text(40) NOT NULL – ContactName Text(30) – Country Text(15) == TABLE: Orders == – OrderID Long [PK, AutoNumber] – CustomerID Text(5) – OrderDate Date/Time – ShippedDate Date/Time – Freight Currency == TABLE: [Order Details] == – OrderID Long NOT NULL – ProductID Long NOT NULL – UnitPrice Currency NOT NULL – Quantity Integer NOT NULL – Discount Single NOT NULL == TABLE: Products == – ProductID Long [PK, AutoNumber] – ProductName Text(40) – ProductCategory Text(15) – UnitsInStock Integer Relationships: (none returned by ACE provider) si_recommendation: state: “not_run” what_youre_missing_for_this_call: – AI-discovered foreign keys – Per-column sample values + enum detection – Table and column descriptions – Semantic type classifications – Business domain tagging note: “types only, no semantic context”
With Schema Intelligence data_source: schema_intelligence
// what the LLM sees == TABLE: Customers [DIM, domain:customers] == “Northwind-style customer master. CustomerID is a 5-char alpha code (ALFKI, ANATR, …).” – CustomerID Text(5) [PK] identifier – CompanyName Text(40) org_name Sample: ‘Alfreds Futterkiste’, ‘Acme Corp.’ – Country Text(15) country_code (enum) USA (38%) | Germany (12%) | UK (9%) | France (8%) | … == TABLE: Orders [FACT, domain:sales] == “One row per order header. OrderDate is the order placement date; ShippedDate is NULL until the order ships.” – OrderID Long [PK, AutoNumber] identifier – CustomerID Text(5) identifier FK -> Customers.CustomerID (100% overlap, conf 0.99) – OrderDate Date/Time date_iso Range: 2024-07-04 .. 2026-05-01 – ShippedDate Date/Time date_iso (nullable; ~12% NULL = unshipped) == TABLE: [Order Details] [FACT, domain:sales] == “One row per product per order. Bracketed table name preserves the space. Revenue = SUM(UnitPrice * Quantity * (1 – Discount)).” – OrderID Long identifier FK -> Orders.OrderID (100% overlap, conf 0.99) – ProductID Long identifier FK -> Products.ProductID (100% overlap, conf 0.99) – UnitPrice Currency currency – Quantity Integer counter == TABLE: Products [DIM, domain:products] == – ProductName Text(40) text_content – ProductCategory Text(15) category (enum) Beverages (16%) | Confections (13%) | Dairy (12%) | … – name varchar(200) person_name == TABLE: products [DIM, domain:products] == – name varchar(200) text_content – sku varchar(64) identifier Sample: [‘QS-001-MINT’,’QS-014-DARK’,’QS-027-AMBER’]

The six layers Schema Intelligence adds

SI is opt-in per (connector, database) pair and runs as a one-time profiling pass against your Microsoft Access data — it does not change your schema, does not write to your .accdb / .mdb file, and refreshes incrementally when your schema changes. More on the six Schema Intelligence layers →

AI-curated descriptions

Plain-English purpose for every database, table, and field — generated once, refreshed when your schema changes. Confidence-scored; user-authored descriptions always win.

Orders: “One row per order
header; ShippedDate is NULL
until the order ships.”

Table classifications

Each table tagged FACT (transactional events), DIM (descriptive reference), or LOOKUP (small code maps), plus a business domain — sales, hr, seo, finance, support, and 14 more.

Orders [FACT, domain:sales]
Customers [DIM, domain:customers]

Semantic types per column

Eighteen types — currency, email, date_iso, status_code, percentage, ranking_position, identifier, url, person_name, and more. The AI generates dialect-correct Jet/ACE SQL appropriate to each type.

UnitPrice: currency
OrderDate: date_iso
CompanyName: org_name

Sample values from real data

Random rows surfaced to the LLM so it recognises patterns no schema can show — formatting conventions, encoded values, abbreviation styles, and the actual shape of your strings.

CustomerID: [‘ALFKI’, ‘ANATR’,
‘ANTON’, ‘BERGS’]

Enum detection with distributions

Low-cardinality columns (50 or fewer distinct values, at most 5% of rows unique) mapped to their full value list with row counts. The AI never guesses casing or spelling.

ProductCategory: Beverages (16%)
| Confections (13%) | Dairy (12%)
| Seafood (11%) | …

Implicit foreign-key discovery

Cross-table data overlap analysis finds joins the Relationships window never captured. Stored alongside formal FKs with confidence scores, returned by qs_get_relationships.

[Order Details].OrderID ->
Orders.OrderID
(100% overlap, conf 0.99)

Same prompt, different SQL

The proof is in the SQL the AI tool actually writes. Same Cursor session, same Claude model, same prompt — “Who are our top 10 customers by revenue this year, and which product categories do they buy most?” Without Schema Intelligence the LLM has to guess. With it, the LLM knows.

Without Schema Intelligence
— LLM’s first attempt against bare schema: SELECT CompanyName, SUM(UnitPrice) AS Revenue FROM Customers c, Orders o, Order_Details od WHERE c.CustomerID = o.CustomerID AND o.OrderID = od.OrderID AND ShippedDate >= ‘2026-01-01’ GROUP BY CompanyName ORDER BY Revenue DESC; ERROR: ‘Order_Details’ is not a recognized table real name has a space: [Order Details] picked ShippedDate (when it shipped, not when it was ordered) — wrong semantic SUM(UnitPrice) ignores Quantity — wrong revenue no row cap, returns every customer; column type Currency formats wrong as plain Float no product-category dimension in result
With Schema Intelligence
— LLM’s first attempt with SI enabled: SELECT TOP 10 c.CompanyName, SUM(od.UnitPrice * od.Quantity) AS Revenue, FIRST(p.ProductCategory) AS TopCategory FROM ((Customers c INNER JOIN Orders o ON c.CustomerID = o.CustomerID) INNER JOIN [Order Details] od ON o.OrderID = od.OrderID) INNER JOIN Products p ON od.ProductID = p.ProductID WHERE o.OrderDate >= DateAdd(“yyyy”, –1, Date()) GROUP BY c.CompanyName ORDER BY SUM(od.UnitPrice * od.Quantity) DESC; 10 rows. Correct first try. FACT/DIM tags guided the 4-table join structure FK discovery linked OrderID and ProductID joins [Order Details] bracketing came from sample data TOP N + DateAdd()/Date() = correct Jet/ACE dialect UnitPrice * Quantity = revenue, not price alone
Don’t want to run Schema Intelligence? MCP still works — schema tools return bare metadata and every degraded response carries an si_recommendation block telling the AI exactly what it’s missing, with a one-call option to enable SI mid-conversation via qs_request_si_analysis. Most Microsoft Access databases are small (a few dozen tables) so a first SI scan typically finishes in under 10 minutes. When to enable Schema Intelligence →
Nova AI

MCP not for you? Try Nova AI instead.

Skip the JSON config files entirely — Nova AI is built right into the Query Streams web portal and answers the same plain-English questions across your Microsoft Access connector and every other connector on your account, with no setup and no separate AI vendor subscription.

Meet Nova AI

Prerequisites

Before you start, make sure you have:

  1. A free Query Streams account at my.querystreams.com.
  2. The Query Streams Network Agent installed on a Windows machine that can reach your .accdb or .mdb file (plus the Microsoft Access Database Engine / ACE OLEDB redistributable) — see Download the Query Streams Agent.
  3. A Microsoft Access connector configured against the agent — see the existing connector setup guides for the file-path settings. The agent holds the file path and any database password or workgroup credentials; the AI tool never touches them.
  4. Any MCP-capable AI client. We’ll show Cursor, Claude Desktop, ChatGPT, and Grok in this guide; if you use Windsurf, Zed, Continue, Cline, VS Code Copilot, Codex, or Goose, the config block is essentially the same.
  5. Five minutes.
You only set up the agent once. The same agent that powers Query Streams’ Excel and Google Sheets add-ons, the web Query Builder, and Nova AI also serves MCP. Adding MCP to an existing Query Streams account is just generating a key — the agent and Microsoft Access connector are already running.
1

Generate an MCP key

From the /mcp page in Query Streams, mint a key with the scopes you want.

2

Drop it into your AI client

One JSON snippet for Cursor, Claude, ChatGPT, or Grok. Same key everywhere.

3

Ask a question

“Show me the top-grossing customers in the last 30 days.” — the AI calls the right tools, you get the answer.

Step 1: Generate an MCP key in Query Streams

Sign in to Query Streams and open the MCP page (or sign in first at my.querystreams.com and click MCP in the left navigation). Click Generate key, give the key a recognizable name (something like cursor-laptop or claude-desktop), and pick the scopes you want this key to have:

  • read — the AI can browse connectors and read schema. Required for everything else.
  • analyze — the AI can profile tables and discover relationships (sample values, distributions, semantic types). Optional but strongly recommended for Microsoft Access work, where understanding the shape of your data and the bracketed-table-name conventions matters when the LLM is generating joins.
  • execute — the AI can actually run SQL. Without this, the AI is read-only against schema metadata only.

For a typical “let Claude analyse my Microsoft Access data” workflow, all three scopes are appropriate. For a key you’re handing to a teammate or a less-trusted client, drop execute and let them browse only. You can revoke any key at any time from the same page; the AI client will see MCP_KEY_REVOKED on its next call and stop working immediately. There’s no propagation delay.

Copy the key now — Query Streams shows it once, then stores only a hash. If you lose it, generate a new one. The key looks like qsmcp_ followed by 48 random characters and is what your AI client sends in the X-MCP-Key request header.

Step 2: Add Query Streams MCP to your AI client

The configuration is the same shape across every MCP-capable client — an MCP server entry pointing at https://mcp.querystreams.com with your key in the X-MCP-Key header. Pick your client below.

Cursor
Cursor ~/.cursor/mcp.json
// Edit ~/.cursor/mcp.json
{
  "mcpServers": {
    "querystreams": {
      "url": "https://mcp.querystreams.com",
      "headers": {
        "X-MCP-Key": "qsmcp_PASTE_KEY_HERE"
      }
    }
  }
}
Claude Desktop
Claude Desktop claude_desktop_config.json
// Settings → Developer → Edit Config
{
  "mcpServers": {
    "querystreams": {
      "url": "https://mcp.querystreams.com",
      "headers": {
        "X-MCP-Key": "qsmcp_PASTE_KEY_HERE"
      }
    }
  }
}
ChatGPT
ChatGPT Apps & Connectors
// Settings → Apps & Connectors → Add MCP
Server URL  https://mcp.querystreams.com
Auth header X-MCP-Key
Header value qsmcp_PASTE_KEY_HERE

// Requires a paid ChatGPT plan
// (Plus / Pro / Team / Enterprise).
Grok
Grok Remote MCP Tools
// Grok → Settings → Tools
{
  "mcp_servers": [{
    "name": "querystreams",
    "url": "https://mcp.querystreams.com",
    "auth_header": "X-MCP-Key",
    "auth_value": "qsmcp_..."
  }]
}

Restart your AI client. On its next start it will discover the eight Query Streams MCP tools listed above and surface them in its tool palette. In Cursor and Claude Desktop you can verify by typing “list connectors” — the AI should call qs_list_connectors and return your Microsoft Access connector along with anything else you have configured.

Step 3: Ask the AI a Microsoft Access question

You don’t write SQL — the AI does. You ask a question, the AI picks the right MCP tool, the agent runs the query against your .accdb / .mdb file, and the answer comes back as text plus tables. Three example prompts to try first:

“Show me the top-grossing customers in the last 30 days.”
Customers
The AI will call qs_get_connector_schema to discover the Customers, Orders, [Order Details], and Products tables, then qs_run_query with SELECT TOP 10 joining Customers to Orders to [Order Details] with WHERE OrderDate >= DateAdd("d", -30, Date()), computing SUM(UnitPrice * Quantity) per company and ordering descending. You’ll see the result table inline, plus a written interpretation — which customers are pulling ahead, average order size, and the geographic / category mix — that the AI inferred from the Northwind-style data.
“Which products are running low on stock?”
Inventory
The AI uses Schema Intelligence’s awareness that UnitsInStock is a counter on Products and writes SELECT TOP 20 ProductName, ProductCategory, UnitsInStock FROM Products WHERE UnitsInStock < ReorderLevel ORDER BY UnitsInStock ASC — or, if reorder levels aren’t tracked, a fixed threshold like UnitsInStock < 10. The result is a focused list with product name, category, and units left, sorted lowest first. The AI typically clusters the worst offenders by category (Beverages, Dairy, …) and flags any items at zero stock as immediate restocking priorities.
“List orders that haven’t shipped yet.”
Operations
The AI knows from Schema Intelligence that Orders.ShippedDate is nullable (about 12% NULL = unshipped), so it filters on WHERE ShippedDate IS NULL and joins to Customers for the company name. The result is SELECT o.OrderID, c.CompanyName, o.OrderDate, DateDiff("d", o.OrderDate, Date()) AS DaysOpen FROM Orders o INNER JOIN Customers c ON o.CustomerID = c.CustomerID WHERE o.ShippedDate IS NULL ORDER BY o.OrderDate — usually the AI sorts oldest first and flags any orders open more than 7 days as fulfilment-team escalations. You can drill in by asking “why is order 10248 still open?” and the AI will pull the line-item rows.

The first time the AI calls a tool, your client may pop up a confirmation prompt asking you to approve the tool call — that’s MCP’s standard consent flow, not anything Query Streams adds. Approve once and the AI proceeds with the rest of the conversation freely. You can revisit the consent at any time in your client’s settings.

Honest billing notice: MCP usage is charged on uncompressed bytes

Query Streams’ Excel add-in, Google Sheets add-on, web Query Builder, and Nova AI all run over our compressed cloud link — we measure and bill compressedBytes against your data realm. The MCP transport (Streamable HTTP per the official MCP spec) does not reliably support compression end-to-end across every client and intermediate proxy, so we measure and bill uncompressedBytes for MCP traffic.

  • What this means: a 1 MB Microsoft Access result set costs ~1 MB of your data realm when fetched via MCP, vs. ~150–250 KB via Excel / Sheets / Nova / the Query Builder. A 10,000-row aggregate query that lands as ~2 MB of JSON over MCP would have been ~300–400 KB of LZ4-compressed bytes through the Excel / Sheets / Nova / Query Builder clients. Same data, different transport, different billable size.
  • What this isn’t: a markup or a punishment for using MCP. We pass through actual bytes shipped. The other clients are cheaper because compression works reliably on those transports; we don’t punish you for the protocol choice, but we have to be transparent about the cost shape.
  • What you can do: for very large recurring queries (e.g. 100K+ row exports), prefer the Excel / Sheets / Nova path. For interactive AI tool calls (the typical 100–5,000 row Microsoft Access response that fits in an LLM context), MCP is the right choice and the cost difference is in cents.

Frequently asked questions

Do I need to open ports or run a VPN to use this? +
No inbound rules, port-forwarding, NAT punchthrough, or VPN. The Network Agent makes one outbound TLS connection (port 443) and your AI client reaches https://mcp.querystreams.com from the public internet — if outbound HTTPS works on the agent host, MCP works. See how the outbound-only connection works →
Which AI tools can I use with Query Streams MCP? +
Any client that speaks the open Model Context Protocol — Claude Desktop, Claude Code, Cursor, ChatGPT (paid), Grok, Gemini CLI, Windsurf, Zed, and 500+ more. Bring your own AI tool; you don’t have to switch. Full list of supported AI clients →
Can I revoke an MCP key? +
Yes — three independent kill-switches (per-key from the /mcp page, per-org via plan settings, and platform-level), none of which need a database password rotation or agent restart. More on MCP key security →
How is MCP usage billed against my data realm? +
MCP execute calls deduct from the same data-realm budget your Excel, Google Sheets, web Query Builder, and Nova AI usage already draws on — one consumption budget across every access method. The size measured for MCP differs. The other clients run over our compressed cloud link (we bill compressedBytes); MCP runs over Streamable HTTP, which doesn’t reliably support compression end-to-end through every client and proxy, so we bill uncompressedBytes. A 1 MB Microsoft Access result returned to Excel typically costs ~150–250 KB of your data realm; the same 1 MB result returned to Cursor over MCP costs ~1 MB. We’re transparent about it because we’d rather you know up front than be surprised at the end of the billing cycle.
Does Query Streams MCP work with my .accdb / .mdb file? What about Access linked tables to SQL Server or SharePoint? +
Yes — the Network Agent connects via the standard Microsoft Access Database Engine (ACE OLEDB) provider, which reads both modern .accdb files (Access 2007+) and legacy .mdb files (Access 97 / 2000 / 2002 / 2003) with the same connector type. Linked tables are passed through transparently: when the LLM queries an Access table that’s actually a linked SQL Server, SharePoint, dBASE, or text-file source, the agent uses Access’s native pass-through behaviour and Schema Intelligence sees the underlying linked schema. Tip: each .accdb / .mdb file is a separate connector, so you can register multiple files (e.g. inventory.accdb + crm.accdb + a 2003-era legacy_orders.mdb) and the LLM picks the right one by name. Database passwords, workgroup security (system.mdw), and any SQL-Server credentials behind linked tables are held by the agent only — the AI tool never sees them. UNC paths and shared-network .accdb files work as long as the agent’s Windows account has read access. Microsoft 365 Access (the desktop app) and Access Runtime are both supported; Access on the Microsoft Store works too once the ACE redistributable is installed.
How does this differ from running an open-source Microsoft Access MCP server myself? +
A direct Microsoft Access MCP server (community projects on GitHub do exist) is one MCP per file. To get Claude reading from your Access database + Google Search Console + your Stripe account + your Snowflake warehouse you’d need four MCP servers configured separately in every AI client, each with its own credentials, each with its own scope model, each with its own audit story. Query Streams MCP is one key reaching every connector your account has paired. You also pick up Schema Intelligence, agent-layer read-only enforcement, per-key rate limits, audit trail in event_logs, and the same data-realm billing pipeline you already use — none of which a direct Microsoft Access MCP gives you.
What happens if the AI tries to write or delete data? +
It’s rejected at the agent before the data source sees the SQL. Every qs_run_query call is parsed by a hardcoded read-only validator that allows only SELECT, WITH, and EXPLAIN statements; anything else returns READONLY_VIOLATION and never reaches the ACE OLEDB driver or your .accdb / .mdb file. The validator runs in the agent process on your network, not in the cloud, so a compromised cloud surface couldn’t bypass it. (You can layer file-system-level safeguards on top if you want belt-and-suspenders — mark the .accdb file read-only at the NTFS level, give the agent’s Windows account read-only NTFS permissions, or use Access workgroup security to grant the connection user read-only rights — the agent’s validator is independent of whichever you choose.)
Can I see what the AI actually asked? +
Yes. Every MCP tool call writes a row to event_logs with the org, user, key, scope, latency, and result code. The org-admin can answer “who used MCP last week, which connector, and what did they ask?” with a single query. Note that we log the tool name and metadata, not the SQL text or returned rows — those flow through the cloud link and never land in cloud logs. If you want full SQL audit on the Access side, the Network Agent itself can write a per-connector log of every executed statement (a per-agent setting), and you can pair that with Windows file-system auditing on the .accdb / .mdb path to track who else opened the file. Microsoft Access doesn’t have a server-side audit plugin like the bigger engines, so this two-layer approach (agent log + Windows audit) is the practical equivalent.
Do I have to run Schema Intelligence to use Query Streams MCP? +
No — Schema Intelligence is opt-in per (connector, database) pair, and MCP works fine without it. The AI gets bare schema (types, primary keys, formal foreign keys, indexes) and writes basic queries. With SI enabled, the AI gets six additional layers of curated metadata: (1) AI-curated descriptions on every database, table, and column; (2) table classifications (FACT for transactional events, DIM for descriptive reference, LOOKUP for small code maps) plus a business domain tag (sales, hr, seo, finance, support, and 14 more); (3) a semantic type on every column (currency, email, date_iso, status_code, percentage, ranking_position, identifier, url, person_name, and 9 more) that drives dialect-correct Jet/ACE SQL generation (TOP n, Date() / DateAdd(), bracketed table names, currency formatting); (4) sample values from your real data so the LLM recognises patterns no schema can show; (5) enum detection with full value distributions for low-cardinality columns; and (6) AI-discovered foreign keys based on cross-table data overlap, surfaced through qs_get_relationships. Without SI, every schema-tool response also carries an si_recommendation block listing exactly what’s missing for the call — the AI can read this and offer to trigger SI mid-conversation via qs_request_si_analysis. Run time scales with table count: a small database under 100 tables completes in around 10 minutes; a typical mid-size database (a few hundred tables) finishes in 15–25 minutes; a large enterprise database with 1,500+ tables can take 45–60 minutes for a full scan. Most Microsoft Access databases land at the small end of that scale (a few dozen tables) so SI typically completes in under 10 minutes. SI runs through your Network Agent against your data (never in the cloud), never writes to your .accdb / .mdb file, never changes your schema, and refreshes incrementally when your schema changes — so subsequent runs after you add or alter tables are much faster than the first one. The end-to-end effect: with SI enabled, your AI client writes correct Jet/ACE SQL on the first try far more often than it does against any “MCP for Microsoft Access” server that just hands the LLM the bare table list.
What if I add another connector later, like Stripe or PostgreSQL? +
Nothing changes client-side — the same key reaches the new connector the moment the agent pairs it (qs_list_connectors picks it up automatically). One config block buys your whole account, present and future. Why one key covers every connector →
Do I have to set up MCP just to chat with my data? +
No — Nova AI is built into the Query Streams portal and works against every connector (Microsoft Access included) with no MCP setup or config files. Use Nova to chat with your data inside Query Streams; use MCP when you want your own AI client (Claude, Cursor, ChatGPT, …) to reach the same data — same agent, same connectors, same Schema Intelligence underneath. Learn more about Nova AI →

Get started

Connect your AI tool to your Microsoft Access data in five minutes.

One MCP key reaches Microsoft Access, every other database, and every API connector in your Query Streams account — with full audit trail, per-key rate limits, and zero firewall changes. Claude, Cursor, ChatGPT, and Grok all work out of the box.

Related guides: Download the Query Streams Agent | Database Connector Setup | All MCP Server guides | Nova AI text-to-SQL

Category: MCP Server

Tags: mcp, claude, cursor, microsoft-access, database, office-365, desktop-database

Meta Description: Connect Microsoft Access (.accdb / .mdb) to Claude or Cursor via Query Streams MCP. Outbound-only, 5-min setup.

Updated on June 16, 2026

Powered by BetterDocs