Software engineers are increasingly using agents to build software, and data engineers are no different. We want OneLake to help enable data engineers to develop software in this new agent-first era.
Think about how you work in a terminal: you use it to run programs that read and write files. Both the programs and the data live in the file system. Now apply that model to data engineering: OneLake is the file system, Fabric engines are the programs, and the AI prompt is your terminal.
Over the last few weeks, we’ve released several new capabilities in OneLake that come together to create an experience where agent-first data engineers can thrive. This blog post provides a rundown of those features.
Managing OneLake
OneLake now offers a remotely hosted MCP server (preview), so agents can explore and manage your data without installing a local server. The local MCP option remains available if you prefer. We’ve also added tools to the Fabric Core MCP server for managing shortcuts and OneLake security.
In our previous post, we asked an agent to document an open mirrored database. It found the workspace, discovered the table schema, mapped the underlying files, and checked replication health—all from a single prompt.
That same scenario is now possible through the hosted OneLake MCP server. Once connected, ask:
“Document what’s in the House Price Open Mirror in my UK Property Data workspace.”
Figure: GitHub Copilot documents the House Price Open Mirror by using OneLake table and file tools.The agent uses OneLake’s table and file tools to explore the database and build its response, working within your existing permissions. The experience is the same; there’s simply no local server to install or maintain.
The addition of the OneLake security tools extends what you can include in the documentation:
“Use the Fabric MCP server to document the OneLake security rules of the PricePaid table in the InlandRevenueHousePriceData mirror”
Figure: GitHub Copilot documents the OneLake security roles and permissions applied to the PricePaid table.Querying OneLake
Agents need more than access to data—they need to know how best to query it. How do you turn a natural-language question into a query that works with data anywhere in OneLake? Continuing the house-price scenario, suppose you ask of the inland revenue database:
Question: “Using the InlandRevenue mirrored item from the TomDemo workspace, tell me how many houses were sold in Hampshire in 2020?”
Answer: “18,193 houses were sold in Hampshire in 2020, counting detached, semi-detached, and terraced houses. Including flats and maisonettes, the total was 21,452.”
How does the agent know how to answer this question just by asking OneLake? Endpoint discovery.
OneLake now provides an endpoint discovery API (Preview) that describes the Fabric Native engines available for each item and how to connect to them through skills, MCP servers, or engine-specific endpoints. The API also returns the OneLake Table APIs and File APIs so any agent can connect to the underlying data either directly or through tools like DuckDB.
When you include a simple instruction to use the discovery API and load the returned skill for the default engine, GitHub Copilot in VSCode turns a natural-language question into a query tailored to that engine.
Figure: GitHub Copilot in Visual Studio Code uses endpoint discovery to identify how to query the mirrored data.To query data through OneLake, the data doesn’t have to live in OneLake. Shortcuts allow you to query data anywhere without making a copy. Shortcut transforms allow you to convert data files into tables without writing a single line of code to create or maintain the tables as the files change.
To continue the property price example, let’s combine the data from our mirrored database with some data in SharePoint. Mirrored databases are read-only, so here we’ll create a new Lakehouse to bring together our data and run a query:
“Please follow these steps using the Fabric and OneLake MCP tools:
- Using my existing SharePoint connection, you’ll find a folder in my OneDrive https://onedrive.cloud.microsoft/xxx/Documents/SampleData/council-tax-2026-27 that contains CSV data, can you create a new Lakehouse in the TomDemo workspace with a shortcut to this CSV, please use a shortcut transform to turn this CSV into a table.
- Create another shortcut to the Inland Revenue PricePaid table.
- Answer this question: What is the most expensive tax Band D, where is it, and how many homes were sold each year since 2000 in those postcodes?”
Answer: “Dorset has the highest 2026–27 Band D charge in the dataset: £2,765.02 annually, shared across 13,275 postcodes.”
Below is the Lakehouse that was built containing a delta table of our CSV data and the result of the query:
Figure: Lakehouse containing shortcuts to the council tax data and the Inland Revenue PricePaid table.Figure: GitHub Copilot returns annual home sales for the postcodes with the highest Band D council tax charge.Because this is a Lakehouse, it exposes a Spark endpoint, which allows us to run an analysis to check if there is any correlation between the median house price of an area and its council tax band. GitHub Copilot picks the Spark CLI skill returned by the discovery API to perform this analysis:
Question: “now use the spark endpoint to run a spark job to see if median house price is correlated to the council tax band of the area - e.g., do higher tax bands have more expensive houses. Start with a Pearson correlation.”
Answer: “The Spark job found a negative Pearson correlation: r = −0.562. Councils with higher Band D charges tended to have lower, not higher, median house sale prices.”
Figure: GitHub Copilot uses the Spark CLI skill to run a Pearson correlation analysis in the Lakehouse.Figure: The analysis shows a negative correlation between Band D council tax charges and median house sale prices.Now, all that’s left to do is check the results!
Discovery API example
The following API call and response enabled the agent to follow these steps, without hard coding any knowledge of what Fabric item type provides which query engines. The following response is an adapted example rather than a verbatim capture.
Request:
GET https://onelake.table.fabric.microsoft.com/api/v2/ TomDemo/InlandRevenueHousePriceData.MirroredDatabase
Response (adapted example):
{
"workspace": {
"id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"name": "UK Property Data"
},
"items": [
{
"id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"name": "HousePriceOpenMirror",
"type": "MountedRelationalDatabase",
"platformType": "MirroredDatabase",
"isSchemaEnabled": true,
"defaultSchema": "dbo",
"isDataItem": true,
"supportsTables": true,
"engines": [
{
"name": "SQL Analytics",
"description": "Query data using T-SQL",
"recommended": true,
"mcpServers": [
{
"name": "microsoft.fabric.sqlEndpoint",
"url": "https://<fabric-api-host>/v1/mcp/dataPlane/workspaces/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb/items/bbbbbbbb-1111-2222-3333-cccccccccccc/sqlEndpoint",
"auth": {
"audience": "https://api.fabric.microsoft.com/"
},
"description": "Execute T-SQL queries, explore schemas, and manage database objects",
"tags": ["read"]
}
],
"skills": {
"repository": "https://github.com/microsoft/skills-for-fabric/tree/main/skills",
"skill": [
{
"name": "sqldw-cli",
"description": "Query, author, and diagnose Fabric Warehouse, Lakehouse SQL analytics endpoints, and Mirrored Databases using T-SQL."
}
]
},
"endpoints": [
{
"type": "SQLConnectionString",
"description": "SQL analytics endpoint",
"data": "<sql-endpoint-host>",
"auth": {
"audience": "https://database.windows.net/"
},
"tags": ["read"],
"properties": {
"DatabaseName": "HousePriceOpenMirror",
"Port": "1433"
}
}
]
},
{
"name": "OneLake",
"description": "Storage, file access, and open table catalogs",
"recommended": false,
"mcpServers": [
{
"name": "microsoft.fabric.oneLake",
"url": "https://<onelake-dfs-host>/v1.0/workspaces/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb/items/bbbbbbbb-1111-2222-3333-cccccccccccc/mcp",
"auth": {
"audience": "https://storage.azure.com/"
},
"description": "File, table, and catalog operations handles auth, path resolution, and format selection",
"tags": ["read", "write"]
}
],
"endpoints": [
{
"type": "Dfs",
"description": "ADLS Gen2 DFS REST API",
"data": "https://<onelake-dfs-host>/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb/bbbbbbbb-1111-2222-3333-cccccccccccc",
"auth": {
"audience": "https://storage.azure.com/"
},
"tags": ["read"]
},
{
"type": "Blob",
"description": "Azure Blob Storage REST API",
"data": "https://<onelake-blob-host>/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb/bbbbbbbb-1111-2222-3333-cccccccccccc",
"auth": {
"audience": "https://storage.azure.com/"
},
"tags": ["read"]
},
{
"type": "ABFS",
"description": "Hadoop-compatible filesystem path",
"data": "abfss://aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb@<onelake-dfs-host>/bbbbbbbb-1111-2222-3333-cccccccccccc",
"auth": {
"audience": "https://storage.azure.com/"
},
"tags": ["read"]
},
{
"type": "Delta",
"description": "Delta Lake / Unity Catalog",
"data": "https://<onelake-table-host>/delta/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb/bbbbbbbb-1111-2222-3333-cccccccccccc/api/2.1/unity-catalog",
"auth": {
"audience": "https://storage.azure.com/"
},
"tags": ["read"]
},
{
"type": "Iceberg",
"description": "Apache Iceberg REST Catalog",
"data": "https://<onelake-table-host>/iceberg/v1/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb/bbbbbbbb-1111-2222-3333-cccccccccccc",
"auth": {
"audience": "https://storage.azure.com/"
},
"tags": ["read"],
"properties": {
"Config": "https://<onelake-table-host>/iceberg/v1/config?warehouse=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb/bbbbbbbb-1111-2222-3333-cccccccccccc"
}
}
]
}
]
}
]
}
From one prompt to your data
OneLake brings your data together; these new capabilities help agents put it to work. Combine catalog search in the Fabric Core MCP server with endpoint discovery and the returned skills, and an agent can find the data, connect to the right engine, and answer your question, all from a single prompt.
What skills will you build to bring these capabilities together, and what would you like us to add to Fabric? Try these tools with your own data and share what works and what’s missing. Your feedback will help shape what we build next.