28 Jul Talk to your database with AI: Vibe Ops & MCP in action
These are exciting times when it comes to technology. The speed of innovation is incredible and seems to have increased since we started using AI in the form of Large Language Models (LLM’s).
From an IT perspective there’s a whole new vibe coming. Recently VIBE CODING and VIBE TESTING became more popular, making it possible to develop and test new applications without any programming knowledge (small note: you’ll have better results when you have programming experience).
But what about the overloaded Database Engineer who’s expected to spin up test environments, boost performance, keep up with exploding data volumes, and learn new database technologies all at once?
Vibe Ops
This is where VIBE OPS comes into the picture. If you take the definition of Vibe Ops:
“Vibe Ops is a developer-centric methodology where infrastructure, deployment, monitoring, and maintenance tasks are handled through natural language descriptions to AI systems, with the explicit goal of maximising developer flow and productivity.”
This is broader than only Database Engineering and about the entire backend, but we’re covered. To be able to talk with your database, the Model Context Protocol (MCP) has been introduced.
What’s an MCP?
Model Context Protocol (MCP) is an open standard and open-source framework introduced by Anthropic in November 2024. The USB-C metaphor you can find on the internet is a good one to explain MCP.
MCP is like a USB-C port, connecting your data sources (like databases) to AI models (like Large Language Models). And it’s easy to do so.

There isn’t just one general MCP, there are many, each designed for specific use cases. As Database Engineers, we focused on MCPs that support database management, specifically for Oracle, Microsoft SQL, and PostgreSQL.
To name some MCP’s:
- CrystalDBA MCP Pro (https://github.com/crystaldba/postgres-mcp)
- PostgreSQL MCP Server (https://github.com/nahmanmate/postgresql-mcp-server)
- Oracle SQLcl (https://docs.oracle.com/en/database/oracle/sql-developer-command-line/25.2/sqcug/using-oracle-sqlcl-mcp-server.html)
- ai (specifically for Supabase users, it has an MCP built-in too)
- MSSQL MCP Server (https://devblogs.microsoft.com/azure-sql/introducing-mssql-mcp-server/)
With new ones released daily.
First step is to download the MCP you want to use and start it (called the MCP Server). Now you can connect using the LLM/tool you like. We used Cursor for our testing (it has a Linux version too), but you can use any AI assistants/code editor like Claude, Windsurf, etc…
The datamodel
The minimum of each “Database” MCP seems to be able to run SQL statements on your database. We tried to challenge the MCP and the LLM to get context from the datamodel. First we tried with some example schemas (like the HR schema in Oracle) and this all works fine. We can ask for the biggest department (number of employees) or the salary of the sales manager. However, what if we use data not known at all. So we created a small database containing a few growers of big pumpkins, including the seeds they used, the weigh-off they attended and the final weight of the pumpkins.
It looks like:

We tried this on 3 different technologies using 3 different MCP’s:
- Local PostgreSQL using CrystalDBA MCP Pro and Cursor
- A PostgreSQL on Supabase using Dreambase to generate what they call a “Planning Chat”
- A local Oracle Database running on the “Database App Development VM” template downloaded from Oracle. We needed to upgrade the SQLcl version to a higher one, so it contained the MCP server. We used cursus to integrate the LLM.
The three all got the same question:
“Who growed the heaviest pumpkin and which seed was used?”
They all replied with the right answer, while they needed to join some tables to get the correct answer, something like
“The heaviest pumpkin was grown by <name of grower> and it weighed 1160kg. The seed used was “<seed name>” (from the year 2024).”
This is so nice, as one can now just start to ask my database questions to get insights without knowing anything about the SQL language including joins, sorts, etc…
At Dreambase it even got further, as it started generating some more insights and key observations like:
- All three top seeds are owned by the growers themselves
- All top pumpkins where grown in <town>, <country>
- <name grower> is the most successful grower, including a top three of the heaviest pumpkins
- etc…
Off course it’ll be very important your tables and columns have clear names, otherwise the LLM will not get the context like it should.
Database Management
Next to that, we also asked the MCP several Database Management related questions.
In this case we limited our testing to 2 MCP’s:
- Local PostgreSQL using CrystalDBA MCP Pro and Cursor
- A local Oracle Database running on the “Database App Development VM” template downloaded from Oracle. We needed to upgrade the SQLcl version to a higher one, so it contained the MCP server. We used cursus to integrate the LLM.
Immediately the importance of the integrated MCP tools is visible here.
CrystalDBA MCP Pro for instance has some tools integrated to check the database health, to get the top statements, to analyze the workload, etc…
Those tools are called when we ask:
“What’s the health of my database?”

Or if we ask:
“What are the top statements?”

Doing the same on Oracle SQLcl gives some results, however the database health feedback is pretty limited now:

Because no tool is found, the MCP completely relies on the LLM now to tell what to do:

The LLM tells to execute a certain SQL statement. Which in this case does not really tells a lot about the general health. At least we know the database is OPEN now.
The same applies when we ask for the top statements:

Now the result is more satisfying. But as you can see, it all depends on what you want to see and/or do.
The choice of which MCP you want to use will depend heavily on the tools integrated.
Monin’s vision on MCP’s
It’s great to see AI evolving and becoming a partner of Developers and System Engineers, making it easier to manage ever growing business needs.
However, there’s still a way to go at this moment and that’s why we want to share some important remarks and insights:
- Limit permissions for the database user connecting the MCP, avoiding the LLM getting access to data it’s not allowed to.
- Avoid access to production databases to avoid unexpected things happening. Instead create a subset or well defined environment to connect
- As said before, each MCP has some “Tools” integrated. For Database MCP’s we see at least tools to connect and execute SQL Statements. Some also contain “Tools” to manage the database and get more insights.
- In case the LLM cannot find a “Tool” to answer your question (like we saw during our Oracle SQLcl tests asking for the database health), it’ll generate SQL statements to get the data it needs. That does not always give you the results expected.
- In addition to the previous, make sure the LLM does not start to query views you’re not allowed to without the appropriate license (like the DBA_HIST views in Oracle)
- Audit the LLM activity to avoid restricted data is accessed.
- Check the prerequisites of the MCP used. Some will need additional packages to be installed (like hypopg and pg_stat_statements)
Next in our testing, we’ll explore how to manage multiple databases without the overhead of running separate MCP servers. We’ll also experiment with creating our own custom ‘Tool’ within the MCP.
Curious in how a Database MCP could help in your environment, just reach out.
Don’t forget to check the blog at our daughter company Hieda, as they’ll focus on testing MCP on PostgreSQL.
Some interesting links:
- Oracle VirtualBox Template “Database App Development VM”: https://www.oracle.com/downloads/developer-vm/community-downloads.html
- CrystalDBA MCP Pro (https://github.com/crystaldba/postgres-mcp)
- PostgreSQL MCP Server (https://github.com/nahmanmate/postgresql-mcp-server)
- Oracle SQLcl (https://docs.oracle.com/en/database/oracle/sql-developer-command-line/25.2/sqcug/using-oracle-sqlcl-mcp-server.html)
- ai (specifically for Supabase users, it has an MCP built-in too): www.dreambase.ai
- MSSQL MCP Server (https://devblogs.microsoft.com/azure-sql/introducing-mssql-mcp-server/)