Letting an AI Assistant Read Your Excel Files Without Uploading Them (MCP)

2026-10-15·7 min read
Quick Answer: Instead of uploading or pasting a workbook, you can connect your AI assistant to an MCP server that reads .xlsx files on your PC. LocalSynapse's MCP server finds the workbook with search_files or list_indexed_files, then get_spreadsheet returns each sheet as cells keyed by A1 coordinate with their declared type (string, number, bool, date, error), plus merged ranges — cells with standard date formats come back as ISO dates, not serial numbers; some custom or locale-specific date formats come back as the raw serial number. It doesn't guess which row is the header or what a column means; the assistant does that. Your files stay on your PC, but the cells the assistant reads become part of your conversation with the assistant's provider.

Ask an AI assistant about a spreadsheet and the usual route is to upload it or paste it in. Both work, sort of. Uploading sends the whole file to a service. Pasting turns a grid into a wall of tab-separated text: merged header cells collapse, sheet names disappear, and dates often arrive as numbers like 45292 that the model has to guess are dates.

There's a third route. With the Model Context Protocol (MCP), the assistant calls tools that run on your own PC and asks for exactly the part of the workbook it needs. This post covers how that works with LocalSynapse's spreadsheet tool, what comes back, and — plainly — what stays private and what doesn't.

Why pasted spreadsheets go wrong

A spreadsheet carries meaning in its structure, not just its values:

The model is good at reasoning over a table. It's bad at reconstructing one from a lossy copy.

How it works with MCP

LocalSynapse indexes the documents on your PC, including .xlsx workbooks, and runs an MCP server that assistants such as Claude Desktop can connect to. For spreadsheets, three tools matter:

A typical exchange: you ask "what did we budget for travel in Q3?", the assistant searches, finds the budget workbook, reads the relevant sheet with get_spreadsheet, and answers citing the cells it used.

What comes back

The response is the grid as it's stored. An illustrative, shortened example:

{
  "fileId": "...",
  "schemaVersion": 1,
  "sheets": [
    {
      "index": 0,
      "name": "Q3",
      "cells": [
        { "coord": "A1", "type": "string", "value": "Travel budget" },
        { "coord": "A3", "type": "string", "value": "Month" },
        { "coord": "B3", "type": "string", "value": "Amount" },
        { "coord": "A4", "type": "date",   "value": "2024-07-01" },
        { "coord": "B4", "type": "number", "value": 1250.5 }
      ],
      "mergedRanges": [ { "start": "A1", "end": "B1" } ],
      "truncated": false
    }
  ]
}

What to notice:

What it deliberately doesn't do

get_spreadsheet doesn't decide which row is the header, what a column means, or which number is "the total". Those are judgements, and a tool that guesses them wrong hands the assistant a confident mistake. The tool supplies the grid as stored; your assistant does the interpreting, and you can see from the coordinates what it based its answer on.

Limits worth knowing

What stays private — and what doesn't

This part matters more than anything above, so it's stated plainly.

LocalSynapse itself doesn't upload your files. Indexing and search run on your PC, and the MCP server runs on your PC as a process your assistant starts. LocalSynapse sends anonymous product-usage counts and technical health metrics only, and you can turn that off in the app.

But the cells your assistant reads become part of your conversation. If you use a cloud assistant such as Claude Desktop, whatever a tool returns is sent to the assistant's provider along with your messages — the same as if you had pasted it. MCP doesn't change that; what it changes is how much leaves. Instead of the whole workbook, the assistant fetches the sheet and range the question needs. Asking it to use sheetIndex and cellRange keeps it that way.

Setting it up

  1. Install LocalSynapse and let it index the folders that hold your spreadsheets.
  2. Open the app's MCP page and use the Claude Desktop register button. It adds a localsynapse entry to Claude Desktop's config file (%APPDATA%\Claude\claude_desktop_config.json) that starts LocalSynapse with the argument mcp.
  3. Restart Claude Desktop so it picks up the new server.

Other MCP clients work the same way: point them at the LocalSynapse executable with the argument mcp. Our MCP file search guide covers the general setup, and Claude Desktop alone vs with local search shows the difference in practice.


Related Posts

Try LocalSynapse Free

Search inside files, works offline, free

Go to Home

Related Posts