{"id":442,"date":"2026-08-12T10:26:05","date_gmt":"2026-08-12T08:26:05","guid":{"rendered":"https:\/\/dataguide.tech\/?p=442"},"modified":"2026-08-12T10:26:07","modified_gmt":"2026-08-12T08:26:07","slug":"agentic-development-in-microsoft-fabric-part-1","status":"publish","type":"post","link":"https:\/\/dataguide.tech\/index.php\/2026\/08\/12\/agentic-development-in-microsoft-fabric-part-1\/","title":{"rendered":"Agentic Development in Microsoft Fabric, Part 1: The Setup"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Preview notice, verified August 2026.<\/strong> The Fabric Core MCP Server is in public preview. Endpoints, tool names and configuration can change before GA, so if a command here doesn&#8217;t behave the way I describe, check the <a href=\"https:\/\/learn.microsoft.com\/en-us\/rest\/api\/fabric\/articles\/mcp-servers\/what-is-fabric-mcp-server\" target=\"_blank\" rel=\"noopener\">Microsoft Learn docs<\/a> before assuming your setup is broken. I date-stamp every post in this series and update them when things move.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Everyone is trying to get more out of their day with AI right now. Your team, your clients, probably you as well. And AI genuinely helps, but only when it&#8217;s set up properly, with real tools, MCPs and skills behind it. Sitting in a chat window pasting questions won&#8217;t get you anywhere near what AI Native tools can do.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;ve had a few chances lately to work through this with our clients, testing different approaches to agentic development workflows, especially for Microsoft Fabric. So I&#8217;m starting a short series on it. What to use, how to wire it together, and how to empower yourself and your team to actually get the performance out of it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Because you don&#8217;t buy a Ferrari to drive to the grocery store \ud83d\ude42 Use your tools right and you get the value out of them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This first post is the setup. What to install, what each piece does, how it all connects.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>My stack:<\/strong> Claude Code as the AI, so everything below is shown with Anthropic&#8217;s tooling. You can do the same with GitHub Copilot, Codex or whatever you prefer, the pieces are the same. For the IDE side of Fabric and Power BI work I use Visual Studio Code with a set of MCPs and extensions. More on those in a minute.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Before you start<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A few things worth having in place first, so you don&#8217;t get blocked halfway through:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Node.js 20 or newer, with npm.<\/strong> Claude Code itself doesn&#8217;t need it, the installer ships its own runtime, but one of the MCP servers below runs through <code>npx<\/code>, and the Fabric Apps tooling later in this series needs it too. Get it from <a href=\"https:\/\/nodejs.org\/\" target=\"_blank\" rel=\"noopener\">nodejs.org<\/a> and confirm with <code>node --version<\/code>.<\/li>\n\n\n\n<li><strong>Git.<\/strong> Claude Code reads commit history for context, and everything we build later lives in a repo anyway.<\/li>\n\n\n\n<li><strong>A Claude plan that includes Claude Code<\/strong> &#8211; Pro, Max, Team, Enterprise or a Console account billed per token. The free plan doesn&#8217;t include it.<\/li>\n\n\n\n<li><strong>Fabric access with at least Viewer on one workspace<\/strong>, on a work or school Entra account. Personal accounts won&#8217;t work.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">First, the base tools<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Start with Visual Studio Code &#8211; grab it <a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noopener\">here<\/a> and install it the normal way. Nothing special.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then the important part: the AI itself. That&#8217;s the brain and heart of the whole agentic flow. I&#8217;ll be using the VS Code extension and the terminal for Claude Code. There&#8217;s a desktop app too, available <a href=\"https:\/\/claude.com\/download\" target=\"_blank\" rel=\"noopener\">here<\/a>, but I find it less efficient, you can&#8217;t really multitask in the app while you&#8217;re developing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The VS Code extension<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Open VS Code, go to Settings \u2192 Extensions, search for Claude Code for Visual Studio Code, install it:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/vscode-claude-code-extension-install.png\" alt=\"vscode-claude-code-extension-install.png\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You&#8217;ll get a Claude icon in the left bar. Click it, click &#8220;new session&#8221;, and you&#8217;ll be asked to log in with your license:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/claude-code-login-with-license.png\" alt=\"claude-code-login-with-license.png\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Pick your license, authorize, done.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Claude Code in the terminal<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This is the one I actually use day to day. The VS Code extension gets laggy sometimes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Open Terminal on Mac or Linux, or CMD or PowerShell on Windows, then run the command for your platform.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>macOS \/ Linux<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#a6accd;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#252937;color:#969dc4\">Bash<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#a6accd;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>curl -fsSL https:\/\/claude.ai\/install.sh | bash\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki poimandres\" style=\"background-color: #1b1e28\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #91B4D5\">curl<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">-fsSL<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">https:\/\/claude.ai\/install.sh<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #91B4D5\">|<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #91B4D5\">bash<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Windows &#8211; PowerShell<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#a6accd;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#252937;color:#969dc4\">PowerShell<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#a6accd;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>irm https:\/\/claude.ai\/install.ps1 | iex\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki poimandres\" style=\"background-color: #1b1e28\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #A6ACCD\">irm https:<\/span><span style=\"color: #91B4D5\">\/\/<\/span><span style=\"color: #A6ACCD\">claude.ai<\/span><span style=\"color: #91B4D5\">\/<\/span><span style=\"color: #A6ACCD\">install.ps1 <\/span><span style=\"color: #91B4D5\">|<\/span><span style=\"color: #A6ACCD\"> iex<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Windows &#8211; CMD<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#a6accd;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#252937;color:#969dc4\">Bash<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#a6accd;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>curl -fsSL https:\/\/claude.ai\/install.cmd -o install.cmd &amp;&amp; install.cmd &amp;&amp; del install.cmd\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki poimandres\" style=\"background-color: #1b1e28\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #91B4D5\">curl<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">-fsSL<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">https:\/\/claude.ai\/install.cmd<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">-o<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">install.cmd<\/span><span style=\"color: #A6ACCD\"> &amp;&amp; <\/span><span style=\"color: #91B4D5\">install.cmd<\/span><span style=\"color: #A6ACCD\"> &amp;&amp; <\/span><span style=\"color: #91B4D5\">del<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">install.cmd<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">You should see this:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"755\" height=\"298\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/claude-code-terminal-install-output-1.png\" alt=\"claude-code-terminal-install-output.png\" class=\"wp-image-451\" srcset=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/claude-code-terminal-install-output-1.png 755w, https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/claude-code-terminal-install-output-1-300x118.png 300w\" sizes=\"auto, (max-width: 755px) 100vw, 755px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">To confirm it landed correctly, run <code>claude --version<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/claude-version-check.png\" alt=\"claude-version-check.png\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Installing MCPs and extensions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">One warning before you install anything<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Search npm for &#8220;fabric mcp&#8221; or &#8220;power bi mcp&#8221; and you&#8217;ll find a dozen community packages. Some are fine. Several ask you to create an Azure App Registration and hand them broad Power BI scopes like <code>Dataset.Read.All<\/code> and <code>Workspace.Read.All<\/code>. Don&#8217;t. Everything in this post is published by Microsoft, check that the package scope is <code>@microsoft\/<\/code> or that the endpoint sits on a <code>microsoft.com<\/code> domain, and skip it if it isn&#8217;t.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This matters because of how the official servers handle identity. The remote Fabric server doesn&#8217;t get its own credentials: every request goes through Entra ID, the agent operates as you, and it can&#8217;t exceed the permissions you already have. Every action lands in the Fabric Audit Logs like any other operation. So it can&#8217;t reach anything you can&#8217;t reach yourself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s the difference between a setup you can put in front of a client&#8217;s security team and one you can&#8217;t. If you work in healthcare, pharma or financial services, this is the part you&#8217;ll be asked about.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fabric Data Engineering extension<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Now for the Fabric side, the extension that connects you to notebooks, Power BI and the rest.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Back to Settings \u2192 Extensions, search for &#8220;Fabric Data Engineering&#8221;. You&#8217;ll see more than one result, and honestly it&#8217;s not clear on first glance which one to use. The one ending in &#8220;Remote&#8221; only lets you edit and display notebooks online, inside Fabric. Sounds convenient, and you do get to work directly there, but the files never land on your machine, which means your AI can&#8217;t see them. That&#8217;s the whole problem. Pick the one highlighted below:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/fabric-data-engineering-extension-search.png\" alt=\"fabric-data-engineering-extension-search.png\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once it&#8217;s installed, open it from the left pane and sign in. If you don&#8217;t get prompted, use the select workspace option. Then you&#8217;re all set:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/fabric-data-engineering-extension-sign-in.png\" alt=\"fabric-data-engineering-extension-sign-in.png\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Power BI MCP<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Next up are the MCP servers Microsoft publishes. Two of them matter here. The Power BI one connects your agent to a Semantic Model so it can edit it. The other one manages your tenant &#8211; listing, editing and creating workspaces, handling role assignments, that kind of thing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Power BI first, since it installs from the extensions pane like the previous one. Search for Power BI MCP and install it. No authorization needed at this stage:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/power-bi-mcp-extension-install.png\" alt=\"power-bi-mcp-extension-install.png\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re on GitHub Copilot, that&#8217;s all you need in VS Code. Different AI, like me? Then you need a different route. On Mac or Windows, open the terminal and run this (it doesn&#8217;t even need the VS Code install above):<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#a6accd;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#252937;color:#969dc4\">Bash<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#a6accd;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>claude mcp add powerbi-modeling-mcp -s user -- npx -y @microsoft\/powerbi-modeling-mcp@latest --start\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki poimandres\" style=\"background-color: #1b1e28\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #91B4D5\">claude<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">mcp<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">add<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">powerbi-modeling-mcp<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">-s<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">user<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">--<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">npx<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">-y<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">@microsoft\/powerbi-modeling-mcp@latest<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">--start<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/power-bi-mcp-add-command-output.png\" alt=\"power-bi-mcp-add-command-output.png\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">After that there&#8217;s nothing else to do &#8211; it gets written into your <code>.claude.json<\/code> automatically. You can check the configuration here:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>macOS: <code>\/Users\/&lt;your_username>\/.claude.json<\/code><\/li>\n\n\n\n<li>Windows: <code>C:\\Users\\&lt;your_username>\\.claude.json<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">(the terminal prints the location too, right after installation), and you should see this:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/claude-json-power-bi-mcp-entry.png\" alt=\"claude-json-power-bi-mcp-entry.png\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Worth verifying it&#8217;s actually visible to Claude. Open the folder you want to run Claude in first &#8211; I&#8217;d suggest a dedicated subfolder created just for this, so it doesn&#8217;t get more permission than it needs. Then type <code>claude<\/code> in the console and select &#8220;Yes, I trust this folder&#8221;:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/claude-trust-folder-prompt.png\" alt=\"claude-trust-folder-prompt.png\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Type <code>\/mcp<\/code>, hit enter, and it should show up in the list:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/mcp-list-power-bi.png\" alt=\"mcp-list-power-bi.png\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">One note on that folder. Trusting it gives the agent read and write access to everything underneath, plus the ability to run commands there, which is why I don&#8217;t launch it in my home directory or at the root of a repo full of client data. A dedicated subfolder keeps the blast radius small. Claude asks before anything destructive, and at some point you&#8217;ll be tempted to silence that with <code>--dangerously-skip-permissions<\/code>. Don&#8217;t. Or if you really have to, do it in a throwaway folder with nothing in it you&#8217;d miss<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fabric MCP<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Different mechanism this time. The Fabric MCP is a remote server Microsoft hosts, so there&#8217;s nothing to install &#8211; you just point Claude at the endpoint. Terminal on Mac, CMD on Windows:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#a6accd;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#252937;color:#969dc4\">Bash<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#a6accd;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>claude mcp add --transport http fabric https:\/\/api.fabric.microsoft.com\/v1\/mcp\/core --scope user\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki poimandres\" style=\"background-color: #1b1e28\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #91B4D5\">claude<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">mcp<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">add<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">--transport<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">http<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">fabric<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">https:\/\/api.fabric.microsoft.com\/v1\/mcp\/core<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">--scope<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">user<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">You&#8217;ll get this back:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/fabric-mcp-add-command-output.png\" alt=\"fabric-mcp-add-command-output.png\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Check <code>.claude.json<\/code> again to make sure it got added properly:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/claude-json-fabric-mcp-entry.png\" alt=\"claude-json-fabric-mcp-entry.png\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Then the same validation as before &#8211; start claude, type <code>\/mcp<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/mcp-list-fabric.png\" alt=\"mcp-list-fabric.png\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Access configuration I&#8217;ll cover in one of the next posts, when we get to where and how to actually use these.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Skills for Microsoft Fabric<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Last piece, and definitely not the least &#8211; the skills Microsoft created and shared. They make development easier, more tuned to the Fabric environment, and the code that comes out is simply better written.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So what is a skill? Nothing more than instructions for the AI on how to code, how to build notebooks, how to write measures. A markdown file with a long prompt telling the AI what to do. That&#8217;s it. What you get out of it is that you stop pasting the same prompt again and again to keep the code structured and useful.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One thing that makes this better than a giant pasted prompt: skills don&#8217;t all load at once. The agent reads each skill&#8217;s short description and only pulls in the full instructions when the task actually matches. You can install a hundred of them without drowning your context window.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Without them you get code that looks plausible but calls the wrong endpoint, misses authentication, or lays out an architecture that doesn&#8217;t match how Fabric items really work, and you spend your time correcting the AI instead of moving faster with it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Microsoft publishes them here: <a href=\"https:\/\/github.com\/microsoft\/skills-for-fabric\" target=\"_blank\" rel=\"noopener\">Skills for Fabric<\/a>. You can download the repo and drop it in your claude folder yourself, but there&#8217;s a simpler way:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Add the Microsoft marketplace (this one has to be run from Claude Code):<br><pre><code>\/plugin marketplace add microsoft\/skills-for-fabric<\/code><\/pre><p>The result should look like this:<br><br><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/plugin-marketplace-add-output.png\" alt=\"plugin-marketplace-add-output.png\"><\/p><\/li>\n\n\n\n<li>Install the Power BI skills:<br><pre><code>\/plugin install powerbi-authoring@fabric-collection<\/code><\/pre><p>Here&#8217;s what a successful install looks like:<br><br><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/powerbi-authoring-plugin-install.png\" alt=\"powerbi-authoring-plugin-install.png\"><br><br>Type <code>\/powerbi-authoring<\/code> and all the skills show up:<br><br><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/powerbi-authoring-skills-list.png\" alt=\"powerbi-authoring-skills-list.png\"><\/p><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Before you get to the Fabric side, one thing worth knowing: you don&#8217;t have to take the whole bundle. There are focused ones:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#a6accd;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#252937;color:#969dc4\">Bash<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#a6accd;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/plugin install fabric-authoring@fabric-collection    # building things\n\/plugin install fabric-consumption@fabric-collection  # querying things\n\/plugin install fabric-operations@fabric-collection   # admin \/ capacity\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki poimandres\" style=\"background-color: #1b1e28\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #91B4D5\">\/plugin<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">install<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">fabric-authoring@fabric-collection<\/span><span style=\"color: #A6ACCD\">    <\/span><span style=\"color: #767C9DB0; font-style: italic\"># building things<\/span><\/span>\n<span class=\"line\"><span style=\"color: #91B4D5\">\/plugin<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">install<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">fabric-consumption@fabric-collection<\/span><span style=\"color: #A6ACCD\">  <\/span><span style=\"color: #767C9DB0; font-style: italic\"># querying things<\/span><\/span>\n<span class=\"line\"><span style=\"color: #91B4D5\">\/plugin<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">install<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">fabric-operations@fabric-collection<\/span><span style=\"color: #A6ACCD\">   <\/span><span style=\"color: #767C9DB0; font-style: italic\"># admin \/ capacity<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Or filter the scope yourself:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#a6accd;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#252937;color:#969dc4\">Bash<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#a6accd;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/plugin install fabric-skills@fabric-collection --filter \"spark-*\"\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki poimandres\" style=\"background-color: #1b1e28\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #91B4D5\">\/plugin<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">install<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">fabric-skills@fabric-collection<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #ADD7FF\">--filter<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #A6ACCD\">&quot;<\/span><span style=\"color: #5DE4C7\">spark-*<\/span><span style=\"color: #A6ACCD\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>If you want everything, install the full Fabric bundle:<br><pre><code>\/plugin install fabric-skills@fabric-collection<\/code><\/pre><p>After installation you should see this:<br><br><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/fabric-skills-plugin-install.png\" alt=\"fabric-skills-plugin-install.png\"><\/p><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">To confirm it worked, type <code>\/fabric-skills<\/code> and check that the skills are listed:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/fabric-skills-list.png\" alt=\"fabric-skills-list.png\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">One more command worth knowing: <code>\/fabric-skills:check-updates<\/code> tells you whether your bundle is behind the repo. That check runs automatically at most once every seven days, so if you&#8217;ve been on the same version a while it&#8217;s worth running by hand.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrap-up<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s the setup. Four sets of tools, each doing a different job: the LLM itself, the Fabric extensions for the live connection, the MCPs so Claude can reach Fabric and Power BI, and the skills bundle so it understands how development actually works in this environment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quick recap:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>VS Code + Claude Code<\/strong> &#8211; the base<\/li>\n\n\n\n<li><strong>Fabric Data Engineering extension<\/strong> &#8211; keeps files local, where the AI can see them<\/li>\n\n\n\n<li><strong>Power BI and Fabric MCPs<\/strong> &#8211; the connection to your tenant<\/li>\n\n\n\n<li><strong>Skills<\/strong> &#8211; Fabric-aware instructions, so you stop re-explaining yourself<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">These two get mixed up a lot, so to be clear: the MCPs connect Claude to Fabric, the skills tell it how Fabric actually works. You want both. MCPs on their own give you an agent that can reach your tenant and still write nonsense into it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Where this series goes next:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Setup<\/strong> &#8211; you&#8217;re reading it<\/li>\n\n\n\n<li><strong>Data Engineering<\/strong> &#8211; notebooks, pipelines, medallion work<\/li>\n\n\n\n<li><strong>Power BI development<\/strong> &#8211; semantic models, DAX, report work<\/li>\n\n\n\n<li><strong>Fabric Apps with Rayfin<\/strong> &#8211; provisioning a full app backend from code<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">In the next posts I&#8217;ll put all of it to work and show what this looks like in practice.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Preview notice, verified August 2026. The Fabric Core MCP Server is in public preview. Endpoints, tool names and configuration can change before GA, so if a command here doesn&#8217;t behave the way I describe, check the Microsoft Learn docs before assuming your setup is broken. I date-stamp every post in this series and update them&#8230;<\/p>\n","protected":false},"author":1,"featured_media":445,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9,19],"tags":[18,17,10],"class_list":["post-442","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-fabric","category-ai","tag-agenticdevelopment","tag-ai","tag-microsoftfabric"],"jetpack_featured_media_url":"https:\/\/dataguide.tech\/wp-content\/uploads\/2026\/08\/Heading-image.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dataguide.tech\/index.php\/wp-json\/wp\/v2\/posts\/442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dataguide.tech\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dataguide.tech\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dataguide.tech\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dataguide.tech\/index.php\/wp-json\/wp\/v2\/comments?post=442"}],"version-history":[{"count":3,"href":"https:\/\/dataguide.tech\/index.php\/wp-json\/wp\/v2\/posts\/442\/revisions"}],"predecessor-version":[{"id":453,"href":"https:\/\/dataguide.tech\/index.php\/wp-json\/wp\/v2\/posts\/442\/revisions\/453"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dataguide.tech\/index.php\/wp-json\/wp\/v2\/media\/445"}],"wp:attachment":[{"href":"https:\/\/dataguide.tech\/index.php\/wp-json\/wp\/v2\/media?parent=442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dataguide.tech\/index.php\/wp-json\/wp\/v2\/categories?post=442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dataguide.tech\/index.php\/wp-json\/wp\/v2\/tags?post=442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}