The everyday failure here is version drift: someone downloads the workbook, asks the question of a copy, and the copy is a week old. Querying Excel Online live means the answer reflects the sheet as it stands, and SELECT-only means the assistant cannot rewrite a cell while it is looking. Setup is the usual CData shape — licensed driver, Maven build, one browser authentication — and it is per source, so a second workbook system means a second properties file, not a second stack.
A local, read-only MCP server that exposes Excel Online as a relational SQL model. It wraps CData's JDBC driver for Excel Online, which presents workbooks and their sheets as tables, so an assistant can find the right sheet and query it live rather than working from a downloaded copy.
- The tables available in Excel Online, returned as CSV with a header row — `get_tables`
- The columns on a chosen table, so a query uses the real headers — `get_columns`
- A SQL SELECT executed against live workbook data — `run_query`
- Tool names prefixed with the server name from your properties file, so multiple CData servers coexist in one client
- A `Tables` property that restricts which tables are exposed
An Excel Online account, plus CData's JDBC driver for Excel Online downloaded and licensed separately — `java -jar cdata.jdbc.excelonline.jar --license` takes your name, email and TRIAL or a license key. Java and Maven: `mvn clean install` builds the runnable JAR. Then a `.prp` file with the prefix, server name and version, the driver JAR path, the driver class `cdata.jdbc.excelonline.ExcelOnlineDriver`, and the JDBC connection string from the driver's connection-string utility, which opens a browser for the OAuth step. The client entry runs java with the JAR and the `.prp` path. Communication is over stdio, so client and server must be on the same machine. MIT licensed.
