From Prompt to Report
I have been exploring LLMs to see if they can be used to do data analysis. LLMs are not good with data by default. But they are good at analyzing a small table and trying to make sense of it. LLMs are also decent at writing code. So my wish was, can I make LLMs to write decent SQLs and use those SQLs to run against the databases ( using MCP), and then use LLMs to analyze or graph the data.
So the idea looked like this. I managed to wire parts of it together to make it work as a system.

I also had a conversation with Anand about it, and he pointed me to his experiment called DataChat. It operates entirely within the browser, against SQLite databases and ChatGPT’s GPT-4o Mini model. The concept is similar.
My initial idea was to build a small system using existing tools like OpenWebUI/Librechat for the front-end and using the MCP Server to execute the code. Given the schema of the database, Claude and ChatGPT were able to generate decent SQL queries. I tested them against my manually created SQLs v/s LLM SQLs against some standard publicly available databases. The Legion’s MCP Server also looked good to execute the SQL and get the data back into the context.

While I was doing those experiments, I also continued exploring tools that fit into the data tool ecosystem that I was already using. At Peppo and home, I use Metabase to do dash-boarding and reporting. I was thinking about using Metabase APIs to integrate into the system I mentioned above.
On one of those days, I went to Lossfunk to attend Vivek Aithal’s talk about comma.ai. After that talk, I explored his bio, and his latest work caught my attention. It’s called MinusX.
MinusX calls itself an AI Data Engineer + Analyst for Metabase. It’s an open-source Chrome extension that adds AI data agents to your Metabase. They do have a proprietary AI backend to drive that. However, from my exploration of the code and traffic, the data remains within your browser and Metabase, except for a subset of results when you request analysis and the necessary metadata for exploration. That seemed fair.
I have been using it for a couple of weeks on all my test databases now. I am pleased about the results. I also like the fact that it’s tightly integrated with Metabase, and it’s seamless.


You can customize by adding details to minusx.md ( like your custom memory), you can also edit the context (which defaults to metadata of tables) using their data catalogs. For example, you can define your dimensions, metrics, etc, that can be shared across the org. There is more, but I won’t list all the features. Go ahead and explore, you might find it helpful.


