Guide · Claude Code Setup
Setup Guide Power Platform ≈ reading…

Claude Code Setup Guide for Power Platform

By the end of this guide, you'll have Claude Code installed, the official Power Platform plugins loaded, and your first AI-generated Dataverse table sitting in your dev environment — in under an hour.
In this guide
  • Claude Code CLI installed and signed in
  • Both marketplaces registered: microsoft/power-platform-skills (added) and claude-plugins-official (pre-registered, for Dataverse)
  • PAC CLI installed and authenticated to your tenant
  • The Dataverse MCP client consented at tenant level + allowlisted per environment, validated via /dv-connect
  • The Power Platform plugins (Dataverse, Power Pages, Canvas, Code Apps, Model-Driven, Microsoft Docs) installed — pick what you actually use
  • A CLAUDE.md (or the full Eyedeas Dataverse template) so every prompt follows your conventions
  • Your first AI-generated Dataverse table provisioned to a dev environment

Before You Start

There are two ways to run Claude Code: the desktop app (a graphical interface, no terminal required) or the command line (CLI). They run the same engine and share the same configuration — pick whichever fits how you like to work. For most Power Platform makers, the desktop app is the gentler on-ramp.

PrerequisiteWhyGet it
A Claude paid planPro, Max, Team, or Enterprise. Required for the desktop app; the CLI can also use pay-per-token via the API.claude.com/pricing
A Power Platform dev environmentSomewhere to land what Claude generates — never use productionCreate one in the PPAC
GitRequired for local desktop sessions on Windows; needed for source control either way. Most Macs include it.git-scm.com
Node.js 18+ (CLI path only)The CLI is distributed as an npm package. Not needed for the desktop app — it bundles Claude Code.nodejs.org

1. Install Claude Code

Choose one of the two paths below. Everything after Step 1 in this guide — prompts, slash commands, plugins, MCP — works identically in both.

Option A — Desktop app (recommended · no terminal)

The desktop app gives you Claude Code with a graphical interface: a sidebar for parallel sessions, a visual diff review for every change, an integrated terminal and file editor, live app preview, and GitHub PR monitoring. It bundles Claude Code, so you don't need to install Node.js or the CLI separately.

1. Download and install. Grab the installer for your platform:

  • macOS — universal build (Intel + Apple Silicon)
  • Windows x64 — or the Windows ARM64 installer
  • Linux isn't supported for the desktop app — use Option B (CLI) instead

Run the installer, then launch Claude from your Applications folder (macOS) or Start menu (Windows), and sign in with your Anthropic account.

2. Open the Code tab. The app has three tabs at the top: Chat, Cowork, and Code. Click Code — that's the interactive coding assistant with direct access to your local files. (If it prompts you to upgrade, you'll need a paid plan first.)

3. Open your project. Choose Local to run on your machine using your files directly, click Select folder, and pick your Power Platform project directory. (You can also pick Remote to run in Anthropic's cloud, or SSH for a remote machine — Local is right for getting started.)

4. Pick a model and go. Choose a model from the dropdown next to the send button (Sonnet is a good default), type what you want, and send. By default you're in Ask permissions mode: Claude shows a diff of every proposed change with Accept / Reject buttons, and nothing touches your files until you approve.

On Windows, Git must be installed for local sessions to work. Most Macs include Git already.

Option B — Command line (CLI)

Prefer the terminal, or on Linux? Install the CLI via npm:

bash
npm install -g @anthropic-ai/claude-code

Verify the install and sign in:

bash
claude --version
claude

The first claude command opens an interactive session in the current directory and walks you through authentication. A browser tab pops open — sign in, return to the terminal, and you'll see Claude's prompt.

Tip — always run claude from inside the project folder you want it to work on. Claude Code reads your CLAUDE.md, .claude/settings.json, and the file tree relative to the directory it's launched in. (The desktop app handles this for you when you "Select folder".)

Desktop and CLI share everything — CLAUDE.md files, MCP servers, hooks, skills, and settings. You can even run both on the same project at once. Set up your project once and switch surfaces freely.

2. Claude Code 101 — The Essentials

Before installing plugins, ten minutes on the core mental model will pay back the rest of the day. There are four things to understand: prompts, slash commands, skills, and plugins.

Prompts

When Claude Code is running, anything you type that doesn't start with / is a prompt. Claude reads your prompt, reads any files it thinks are relevant, and either replies in chat, edits files, or runs commands — depending on what you asked for. The biggest mistake new users make is being too terse. "Make a Canvas app" produces vague output. "Generate a Canvas app for field technicians with three screens: a work-order list filtered by status, a work-order detail screen, and a complete-work-order screen with signature capture. Use tablet layout. Every gallery needs an empty-state message." produces a deployable scaffold.

Slash commands

Slash commands trigger specific Claude Code behaviors. In the CLI you type them directly; in the desktop app you type / or click +Slash commands to browse them. The built-in ones include:

  • /help — list everything available in your current session
  • /clear — wipe the conversation history (useful after you've finished one task and want to start fresh without spending tokens re-reading prior context)
  • /init — create a CLAUDE.md in the current project, pre-filled with what Claude learned by scanning the codebase
  • /model — switch between Claude models (Sonnet, Opus, Haiku) for the current session
  • /agents — list and invoke sub-agents (specialised helpers)
  • /config — open the settings UI

Skills and plugins

This is the part that makes Claude Code powerful for Power Platform.

  • A skill is a markdown file that teaches Claude how to do one specific task. The Power Pages skill /integrate-webapi knows how to wire the Web API into your code, configure table permissions, and deploy. The Dataverse skill dv-metadata knows how to create tables, columns, and relationships the right way.
  • A plugin is a bundle of related skills published as a versioned package. Microsoft publishes one plugin per Power Platform asset type — Canvas Apps, Power Pages, Dataverse, Model-Driven Apps, and Code Apps — plus a Microsoft Docs plugin that gives Claude access to official documentation.
  • When you invoke a skill (e.g. /create-site), Claude loads only that skill's instructions for the current task. You don't pay context tokens for the rest of the plugin.

CLAUDE.md — your project's instructions

Drop a file called CLAUDE.md in the root of your project. Anything in it gets loaded into every Claude session you start in that directory. This is where you encode your project's conventions — table prefixes, environment URLs, rules like "never deploy to Prod from here." We'll look at a Power Platform-ready sample in §6.

3. Add the Marketplaces

Claude Code's skills don't ship pre-loaded — they live in plugin marketplaces. For Power Platform you'll work with two:

MarketplaceWhat's insideHow you get it
microsoft/power-platform-skillsCanvas Apps · Power Pages · Code Apps · Model-Driven Apps · Microsoft Docs pluginsYou add this marketplace (one-time)
claude-plugins-officialThe Dataverse plugin (Connect, Build, Operate skills + Dataverse MCP)Pre-registered in Claude Code — nothing to add

3a. Power Platform AI skills marketplace

Microsoft's marketplace for the Power Platform plugins. Add it once per machine.

Inside Claude Code (desktop or CLI session):

claude-code
/plugin marketplace add microsoft/power-platform-skills

From your terminal (non-interactive):

bash
claude plugin marketplace add microsoft/power-platform-skills

Confirm it registered:

bash
claude plugin marketplace list

You should see power-platform-skills in the list. That's the marketplace name you'll reference when installing plugins from it (in §5).

3b. Dataverse skills (Claude official marketplace)

The Dataverse plugin — built by Microsoft, listed in Anthropic's official Claude Code marketplace — is pre-registered. You don't need to add anything; you can install directly from it:

claude-code
# Verify it's there (it ships pre-registered)
/plugin marketplace list

# Browse and install in the UI
/plugin
# → Discover → search "dataverse"

The Dataverse plugin contains three skill groups — Connect (auth + MCP setup), Build (tables, columns, relationships, forms, views), and Operate (data load, queries, bulk import) — wrapping the Dataverse MCP server, PAC CLI, Python SDK, and Web API. (Source: microsoft/Dataverse-skills.)

Marketplaces are just GitHub repos that follow Claude Code's marketplace format. You can add as many as you want — Microsoft's, your team's enterprise marketplace, community ones — and install plugins from any of them.

4. Connect to Dataverse — MCP Server & PAC CLI

For Claude to actually do Dataverse work, you need two things wired up: PAC CLI (authenticates you to the tenant, used for deployments and solution work) and the Dataverse MCP server (lets Claude read your live schema at query time so generated code references real tables, not invented ones).

Both are needed — they cover different jobs:

  • PAC CLI is required even if you go all-in on MCP. The Dataverse plugin's /dv-connect uses it for auth discovery (pac auth list, pac env list), and your day-to-day solution work (pac solution export, pac pages upload, pac canvas unpack) all run through it.
  • Dataverse MCP is for reading schema at query time. Without it, Claude guesses table and column names. With it, it sees what actually exists.

4a. Install PAC CLI (first)

bash
# Cross-platform via dotnet
dotnet tool install --global Microsoft.PowerApps.CLI.Tool

# Verify
pac --version

# Authenticate to your dev environment (interactive sign-in)
pac auth create --environment https://your-dev.crm.dynamics.com
pac auth list

4b. Register the Dataverse MCP client (tenant-level)

The Dataverse MCP server is a proxy that talks to your tenant via the @microsoft/dataverse npm package. Before it can connect to any environment, two admin actions are required:

  1. Tenant admin consent. An Azure AD Global Admin or Privileged Role Admin must approve the MCP client app for your tenant — one-time per tenant. The Dataverse plugin's /dv-connect generates the consent URL for you; the admin opens it and clicks Accept. Without consent, the MCP server cannot authenticate.
  2. Per-environment allowlist. Each Dataverse environment the MCP should talk to must explicitly allow the MCP client ID. In the Power Platform Admin Center → pick your environment → Settings → Product → Features → MCP Server → Allowed clients, and add the MCP client ID. Repeat for Dev/UAT/Prod as needed.

Not a tenant admin? Capture the consent URL from /dv-connect and forward it to your admin — they only need 30 seconds. You can keep working on local setup while waiting.

4c. Run /dv-connect (orchestrates everything)

Once PAC CLI is authenticated and the MCP client is consented + allowlisted, the Dataverse plugin's Connect skill ties it all together in one command:

claude-code
/dv-connect

It runs five idempotent steps (you can run it again any time — it only does what's needed):

  1. Toolchain check — verifies Python 3, PAC CLI, .NET SDK, Azure CLI, Node.js, Dataverse CLI, and Git. Installs anything missing via your package manager.
  2. Python SDK installpip install --upgrade azure-identity requests PowerPlatform-Dataverse-Client pandas.
  3. PAC CLI auth — confirms (or creates) an auth profile for the target tenant/region.
  4. Environment discoverypac env list, lets you pick one, stores credentials in your OS credential manager.
  5. MCP registration + validation — runs claude mcp add with stdio transport pointing at the @microsoft/dataverse proxy, generates any pending admin-consent URLs, and runs npx @microsoft/dataverse mcp {DATAVERSE_URL} --validate to confirm end-to-end connectivity.

When it succeeds, you'll see something like:

text
✓ Authenticated to https://contoso-dev.crm.dynamics.com
✓ MCP server "dataverse" registered (stdio · @microsoft/dataverse)
✓ Validation passed: 247 tables, 3,891 columns
✓ Ready

5. Install the Power Platform Plugins — A Quick Tour

With the marketplaces added (§3) and Dataverse connected (§4), install the plugins you'll actually use. Each one bundles focused skills for one asset type.

Desktop app: click the + button next to the prompt box → Plugins, browse, install. No commands needed.

CLI / slash command:

claude-code
# From the official Claude marketplace (pre-registered)
/plugin install dataverse@claude-plugins-official

# From the microsoft/power-platform-skills marketplace
/plugin install power-pages@power-platform-skills
/plugin install canvas-apps@power-platform-skills
/plugin install code-apps-preview@power-platform-skills
/plugin install model-apps@power-platform-skills
/plugin install microsoft-docs@power-platform-skills

# List what you have installed
claude plugin list

Restart your Claude Code session (or run /reload) and the new skills appear when you type /. Here's what each plugin gives you:

Dataverse

Reads your real schema (via MCP) and creates/modifies metadata via Python SDK + Web API.

  • /dv-connect — auth + MCP setup orchestration (see §4)
  • /dv-metadata — create tables, columns, relationships, forms, views
  • /dv-data — bulk create / update / delete / upsert via Python SDK
  • /dv-query — bulk reads, analytics, multi-page Web API iteration
  • /dv-solution — export, import, pack, unpack solutions across environments

Power Pages

Both classic Liquid portals and the new Code Sites (SPA).

  • /create-site — scaffold a React / Angular / Vue / Astro Code Site
  • /integrate-webapi — typed API client, CRUD service, table permissions, CSRF tokens — for a chosen table
  • /setup-auth — Entra ID login + role-based authorisation
  • /add-server-logic — secure server-side JavaScript
  • /audit-permissions — pre-deploy security audit
  • /deploy-site — push via PAC CLI

Canvas Apps

Generates pa.yaml — the source-controllable Canvas representation.

  • /generate-canvas-app — full app from a requirements prompt
  • /edit-canvas-app — targeted screen / formula changes
  • /add-data-source — wire a new connection

Code Apps (Preview)

React + Vite + Fluent UI v9 surface with one skill per connector.

  • /create-code-app — TypeScript scaffold
  • /add-dataverse, /add-sharepoint, /add-onedrive, /add-excel, /add-office365, /add-teams, /add-mcscopilot, /add-azuredevops — typed services per connector
  • /deploy — build & push

Model-Driven Apps

Generative pages (React-based pages inside model-driven apps).

  • /genpage — React 17 + TypeScript + Fluent UI v9 page

Microsoft Docs

Live access to Microsoft documentation — verify API signatures, fix SDK errors, look up code samples.

  • /microsoft-docs, /microsoft-code-reference, /microsoft-skill-creator

Start with Dataverse + Microsoft Docs, add the asset-type plugins as the work demands. Each plugin you skip is one fewer thing competing for context in your session.

6. Sample CLAUDE.md File

Plugins teach Claude how to build each asset type. A CLAUDE.md teaches it your conventions — so every prompt automatically follows your team's rules. The lightweight version is a short file in your project root with the basics:

markdown
# Contoso Field Service — Power Platform

## Naming conventions
- Tables prefix: `fs_`
- Solutions: PascalCase, no spaces

## Environment URLs
- Dev:  https://contoso-dev.crm.dynamics.com
- UAT:  https://contoso-uat.crm.dynamics.com
- Prod: https://contoso.crm.dynamics.com  (never deploy here from Claude)

## Standards
- Wrap every Patch() in IfError()
- Every gallery needs an empty-state message
- No hard-coded GUIDs — use environment variables

For Dataverse work specifically, use the full Eyedeas standards template — it locks in solution + publisher rules, OOB statuscode, global option sets, 2-column form sections, sub-grids on their own tabs, header Owner / Status Reason, and the gen-pages-for-dashboards default. Copy-paste-ready:

📘 Read the Dataverse CLAUDE.md template →

Drop the same content into .github/copilot-instructions.md if you also use GitHub Copilot — both assistants will follow the same rules (see the GitHub Copilot Setup Guide).

7. Your First AI-Generated Asset

Time to verify everything works. Open a fresh project folder, start Claude Code, and run this prompt:

prompt
/dv-metadata

Create a Dataverse table for tracking field-service work orders.

Columns:
- Title (text, required)
- Description (multiline text)
- Status (choice: Draft / Scheduled / In Progress / Complete)
- Priority (choice: Low / Medium / High / Critical)
- Due date (date)
- Assigned technician (lookup to systemuser)

Use the fs_ prefix. Solution: ContosoFieldService.
Generate the create commands and deploy to my dev environment.

What you'll see Claude do:

  1. Read your .env for the target environment URL
  2. Generate the Python SDK calls to create the table and columns
  3. Run the commands — you'll see them stream in your terminal
  4. Confirm with PAC CLI that the table exists
  5. Summarise what was created and the next suggested step

Open make.powerapps.com in your dev environment. The fs_workorder table will be there, complete with the columns and choices you described.

If it worked, your setup is done. If something failed, the error message usually tells you what to fix — auth tokens expired, MCP server not running, or PAC CLI not authenticated.

  • Two surfaces, one engine. Run Claude Code as the desktop app (graphical, no terminal) or the CLI (terminal). Either way it works against a project folder and reads that folder's contents — and they share the same config, so you can switch freely.
  • Two marketplaces, not one. Microsoft's power-platform-skills (you add it) carries Canvas, Power Pages, Code Apps, Model-Driven, MS Docs. The Dataverse plugin lives in the pre-registered claude-plugins-official marketplace — install it directly.
  • PAC CLI is required even with MCP. MCP reads schema; PAC CLI handles auth, env discovery, and every deploy/solution command. Install PAC CLI before /dv-connect.
  • Dataverse MCP needs admin consent + per-env allowlist. A tenant Global Admin approves the MCP client once, and each environment must allowlist the client ID in PPAC → Features → MCP Server. No shortcut.
  • Plugins are scoped tool packs. Install the ones for the asset types you actually build. Each one is a focused set of skills, not a runtime overhead.
  • CLAUDE.md locks in your standards. Use the full Dataverse Eyedeas template for Dataverse work; a short project CLAUDE.md for everything else.
  • The Dataverse MCP server is the trust anchor. Without it, Claude generates code against guessed schemas. With it, generated code references real tables and columns.
  • CLAUDE.md is your project's memory. Encode naming conventions, env URLs, and rules once — every prompt benefits.
  • PAC CLI does the actual work. Plugins compose pac commands. If something breaks at the deploy step, run the pac command directly to see the raw error.
  • Always use a dev environment. Never let Claude touch Production directly. Promote through your normal solution pipeline.

Where to Next

Now that the toolchain works:

  • Read Chapter 1 — The Shift for the mental model that makes the rest of the book click.
  • Read Chapter 2 — Your AI Dev Team for the deeper version of this guide, including GitHub Copilot side-by-side with Claude Code.
  • Try one of the asset-type chapters next: Dataverse, Power Automate, Canvas Apps, Power Pages, or Copilot Studio. (Linked in Book Chapters.)
  • Write your first CLAUDE.md for a real project of yours.