Flowstudio Power Automate Build
github/awesome-copilot
Build, scaffold, and deploy Power Automate cloud flows using the FlowStudio MCP server.
One-step setup and connection diagnostics for a Dataverse environment — installs tools, authenticates, registers MCP, writes .env, and verifies active profiles and linked ERP endpoints.
$ npx skills add microsoft/Dataverse-skills --skill dv-connect -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install microsoft/Dataverse-skills dv-connect --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/microsoft/Dataverse-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/plugins/dataverse/skills/dv-connect .claude/skills/dv-connect && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "dv-connect" agent skill from https://github.com/microsoft/Dataverse-skills/tree/main/.github/plugins/dataverse/skills/dv-connect into .claude/skills/dv-connect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dv-connect", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/microsoft/Dataverse-skills/tree/main/.github/plugins/dataverse/skills/dv-connectType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add microsoft/Dataverse-skills --skill dv-connect -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install microsoft/Dataverse-skills dv-connect --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/Dataverse-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/plugins/dataverse/skills/dv-connect .agents/skills/dv-connect && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dv-connect" agent skill from https://github.com/microsoft/Dataverse-skills/tree/main/.github/plugins/dataverse/skills/dv-connect into .agents/skills/dv-connect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dv-connect", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/Dataverse-skills --skill dv-connect -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install microsoft/Dataverse-skills dv-connect --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/Dataverse-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/plugins/dataverse/skills/dv-connect .cursor/skills/dv-connect && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "dv-connect" agent skill from https://github.com/microsoft/Dataverse-skills/tree/main/.github/plugins/dataverse/skills/dv-connect into .cursor/skills/dv-connect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dv-connect", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/microsoft/Dataverse-skills.git --path .github/plugins/dataverse/skills/dv-connect--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add microsoft/Dataverse-skills --skill dv-connect -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install microsoft/Dataverse-skills dv-connect --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/Dataverse-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/plugins/dataverse/skills/dv-connect .gemini/skills/dv-connect && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "dv-connect" agent skill from https://github.com/microsoft/Dataverse-skills/tree/main/.github/plugins/dataverse/skills/dv-connect into .gemini/skills/dv-connect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dv-connect", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install microsoft/Dataverse-skills dv-connectInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add microsoft/Dataverse-skills --skill dv-connect -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/microsoft/Dataverse-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/plugins/dataverse/skills/dv-connect .github/skills/dv-connect && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "dv-connect" agent skill from https://github.com/microsoft/Dataverse-skills/tree/main/.github/plugins/dataverse/skills/dv-connect into .github/skills/dv-connect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dv-connect", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/Dataverse-skills --skill dv-connect -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install microsoft/Dataverse-skills dv-connect --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/Dataverse-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/plugins/dataverse/skills/dv-connect .opencode/skills/dv-connect && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "dv-connect" agent skill from https://github.com/microsoft/Dataverse-skills/tree/main/.github/plugins/dataverse/skills/dv-connect into .opencode/skills/dv-connect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dv-connect", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
dv-connectOne-step setup and connection diagnostics for a Dataverse environment — installs tools, authenticates, registers MCP, writes .env, and verifies active profiles and linked ERP endpoints.
Dv Connect is an agent skill from microsoft/Dataverse-skills, published by the product's own GitHub organization. One-step setup and connection diagnostics for a Dataverse environment — installs tools, authenticates, registers MCP, writes .env, and verifies active profiles and linked ERP endpoints. Use when starting a new project, switching environments, fixing authentication, troubleshooting MCP, or checking existing Dataverse / Finance and Operations connectivity or linkage.
Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/erp-detection.md`, `references/headless-hosts.md` and `references/helper-scripts.md`).
It sits in Agent Workflows, covering MCP servers. It works with Model Context Protocol and Power Automate. The repository describes itself as: Microsoft Dataverse skills for AI coding agents. Wraps the Dataverse MCP server, Dataverse CLI, Python SDK, and PAC CLI behind specialist skills for building, querying… The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3be592f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pythonclaudepipnpxgemininpmcurlgitnodedotnetazFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
admin.powerplatform.microsoft.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
CLIENT_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Dv Connect loads about 5k tokens when it runs, and up to ~22k if it reads all its reference files. Until then it costs about 95 tokens; SKILL.md has 2,264 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
s, authenticates, registers MCP, writes `.env`, and verifies active profiles and linked ERP endpoints. Use when starting→** install **only** Python + pip deps, `.env`, `scripts/auth.py`, verify `python scripts/auth.py --check`, **skip** CLIalready-configured workspace overwrites `.env`, re-registers MCP, and wastes time.1. **`.env` is present and complete** — file exists at the workspace root and contains non-empty values for `DATAVERSE_U3. **Both auth surfaces match `.env`** — `dataverse auth who` shows a profile whose `Environment Url` matches `DATAVERSE**If all pass:** First ensure `.env` has valid attribution — set `DATAVERSE_PLUGIN_VERSION` to the loaded manifest `versoesn't need a full redo — e.g., if only `.env` and MCP are missing but tools and auth are fine, start at Step 2 or Step## Step 3: Create .envWrite `.env` directly — do not instruct the user to create it:with open(".env", "w") as f:Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from microsoft/Dataverse-skills at commit 3be592f, republished under its MIT licence (© microsoft). 2,264 words, ~5,015 tokens.
.claude/skills/dv-connect/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.One-step, idempotent Dataverse connection. Each step checks if it's already done and skips.
Environment-First Rule — All metadata and plugin registrations are created in the environment via API/scripts, then pulled into the repo. Never hand-write solution XML to create components.
Execute steps in order; do not skip ahead. Exception: Step 0 can short-circuit the flow if the workspace is already set up.
Host entry test (FIRST — before Step 0). A local Windows/macOS host is capable by default, whichever agent drives it — it can run the CLIs, use persistent credentials, and host local MCP servers; an approval/sandbox gate isn't a constraint, and a missing CLI = install it. Constrained only when a runtime can't start, auth can't persist, or the host is explicitly ChatGPT Work Mode / Codex cloud / CI / no-keyring Linux (deterministic table: headless-hosts.md). Constrained → install only Python + pip deps,
.env,scripts/auth.py, verifypython scripts/auth.py --check, skip CLI / PAC / MCP. Capable → normal flow below.
Before touching anything, check whether this workspace is already connected to a Dataverse environment. Repeating setup on an already-configured workspace overwrites .env, re-registers MCP, and wastes time.
Gemini supports GA only. If Preview is requested, explain and stop before setup shortcuts.
Run these checks in order. If all four pass, skip straight to Step 7 (final verification) and stop there.
.env is present and complete — file exists at the workspace root and contains non-empty values for DATAVERSE_URL, TENANT_ID, and MCP_CLIENT_IDdataverse-* entry, or Gemini has its bundled dataverse entry, pointing at DATAVERSE_URL.env — dataverse auth who shows a profile whose Environment Url matches DATAVERSE_URL, AND pac org who against a PAC profile for the same URL succeeds. (DV CLI auth covers Connect / Data / Query / Metadata / MCP / Python; PAC auth covers dv-solution and dv-admin. Both are front-loaded at connect time so neither prompts later.)python -c "from PowerPlatform.Dataverse.client import DataverseClient; import pandas; from importlib.metadata import version; v=version('PowerPlatform-Dataverse-Client'); assert int(v.split('.')[0])>=1, f'SDK {v} is outdated, need >=1.0.0'" exits 0If all pass: First ensure .env has valid attribution — set DATAVERSE_PLUGIN_VERSION to the loaded manifest version and add DATAVERSE_PLUGIN_AGENT (detected host, per Step 3) if absent or a stale unknown/placeholder. Confirm the detected setup (URL, profile, MCP server), and jump to Step 7. Do not otherwise rewrite .env, re-register MCP, or re-run pip install.
If any check fails: Proceed through the normal flow (Steps 1–7), but still use each step's own skip condition. A partially-configured workspace doesn't need a full redo — e.g., if only .env and MCP are missing but tools and auth are fine, start at Step 2 or Step 3.
Check each tool independently -- report all missing tools at once. See tools-setup.md for install commands.
| Tool | Check |
|---|---|
| Python 3 | python --version |
| Git | git --version |
| Node.js | node --version |
| PAC CLI | pac (prints version banner; pac --version is not valid) (see tools-setup.md if not in PATH) |
| Dataverse CLI | npm list -g @microsoft/dataverse |
| .NET SDK | dotnet --version |
| Azure CLI | az --version |
.NET SDK is needed for PAC CLI but NOT for the Dataverse CLI (the npm package bundles its own runtime). Node.js powers the Dataverse CLI npm package (@microsoft/dataverse), which is used as the MCP proxy and for scripted data plane actions. Azure CLI is used as a fallback for environment discovery when PAC CLI isn't available (see mcp-configuration.md Step 3b). GitHub CLI is not needed for connecting — it's used later for ALM/CI/CD scenarios (see dv-solution).
If any tool is missing, install it (see tools-setup.md), then verify. If winget installs a tool but it's not in PATH, ask the user to restart the terminal.
After Python is confirmed, check if deps are already present before installing:
python -c "from PowerPlatform.Dataverse.client import DataverseClient; import azure.identity, msal, msal_extensions, requests, pandas; print('OK')"If it prints OK, skip pip. Otherwise:
pip install --upgrade azure-identity requests PowerPlatform-Dataverse-Client pandas msal msal-extensionsmsal + msal-extensions let scripts/auth.py reuse the dataverse auth create cache -- one sign-in for CLI, MCP, Python.
After Node.js is confirmed, install the Dataverse CLI only if missing (do not re-run on every connect -- on managed devices each @latest fetch can trigger npm-registry security prompts; see tools-setup.md):
npm install -g @microsoft/dataverse@latestSkip condition: All tools present, Python SDK installed, and pandas importable (python -c "import pandas").
Before asking the user for a URL, check what's already available.
Auth tool choice. Two tools, two AAD apps, two caches — front-load both at connect:
dataverse auth create(app0c412cc3-…) covers DV CLI + MCP + Python.pac auth create(PAC's own app) coversdv-solution+dv-admin.
Check for an existing DV CLI profile first, then fall back to PAC for environment discovery if needed:
dataverse auth list
dataverse auth who
pac auth list # PAC profiles are still useful for env discovery / pac org listIf dataverse auth who shows a profile and its environment matches the user's target:
DATAVERSE_URL and TENANT_ID from the profile.If no DV CLI profile exists (or it points at the wrong environment):
Before selecting, check for tenant/region mismatch. If the target URL uses a different region than the authenticated account's environments, create a new profile for the correct tenant rather than reuse the old one:
dataverse auth create --environment <url> # interactive (WAM broker on Windows → no browser tab)
dataverse auth create --environment <url> --deviceCode # headless / remote / SSHIf the user hits an admin-consent error, the CLI prints the correct scope-scoped consent URL to share with a tenant admin — do not synthesize one.
To switch between existing DV CLI profiles:
dataverse auth select --name <profile-name>To create a new environment (requires admin permissions):
pac admin create --name "<name>" --type "<type>" --region "<region>"If this fails with permissions error, guide the user to Power Platform Admin Center to create it, then connect.
Confirm connection:
dataverse auth who
dataverse org who --context "app=dataverse-skills/<ver>;skill=dv-connect;agent=<agent>"Parse the output to extract DATAVERSE_URL, TENANT_ID, and — on ERP-linked envs — ERP_URL (see erp-detection.md).
If neither command shows a tenant ID, fall back to:
curl -sI https://<org>.crm.dynamics.com/api/data/v9.2/ \
| grep -i "WWW-Authenticate" \
| sed -n 's|.*login\.microsoftonline\.com/\([^/]*\).*|\1|p'PAC uses its own AAD app, so a separate sign-in is required for dv-solution and dv-admin — do it now.
pac auth list # skip if a profile for $DATAVERSE_URL exists
pac auth create --name <orgid> --environment <DATAVERSE_URL>Use the same account as Step 2. If PAC CLI is not installed, skip with a note that dv-solution / dv-admin will need it later.
Present authentication options:
How would you like to authenticate with Dataverse?
- Interactive login (recommended) — Sign in via browser. No app registration needed. Token stays cached across sessions.
- CI/CD service principal — Use
CLIENT_SECRETorCLIENT_CERTIFICATE_PATH.
Write .env directly — do not instruct the user to create it:
Use one detected tool_type to derive both MCP_CLIENT_ID and canonical attribution. Set PLUGIN_VERSION from the loaded manifest; Antigravity uses .claude-plugin/plugin.json because native plugin.json has none.
tool_type = "<copilot | claude | cursor | codex | gemini | antigravity | unknown>"
plugin_version = "<plugin manifest version, e.g. 1.5.0>"
mcp_client_id = "aebc6443-996d-45c2-90f0-388ff96faa56" if tool_type == "copilot" else "0c412cc3-0dd6-449b-987f-05b053db9457"
agent_host = {
"copilot": "copilot", "claude": "claude-code", "cursor": "cursor",
"codex": "codex", "gemini": "gemini-cli",
"antigravity": "antigravity-cli",
}.get(tool_type, "unknown")
with open(".env", "w") as f:
f.write(f"DATAVERSE_URL={dataverse_url}\n")
f.write(f"TENANT_ID={tenant_id}\n")
f.write(f"MCP_CLIENT_ID={mcp_client_id}\n")
f.write(f"DATAVERSE_PLUGIN_VERSION={plugin_version}\n")
f.write(f"DATAVERSE_PLUGIN_AGENT={agent_host}\n")
f.write(f"SOLUTION_NAME={solution_name}\n")
f.write(f"PUBLISHER_PREFIX=\n") # filled in when solution is created
f.write(f"PAC_AUTH_PROFILE=nonprod\n")
if client_id:
f.write(f"CLIENT_ID={client_id}\n")
if client_secret:
f.write(f"CLIENT_SECRET={client_secret}\n")Ensure .env is in .gitignore:
import os
GITIGNORE_ENTRIES = [
".env", ".vscode/settings.json", ".claude/mcp_settings.json",
".token_cache.bin", ".dataverse/", "*.snk", "__pycache__/", "*.pyc",
"solutions/*.zip", "plugins/**/bin/", "plugins/**/obj/",
]
gitignore = open(".gitignore").read() if os.path.exists(".gitignore") else ""
missing = [e for e in GITIGNORE_ENTRIES if e not in gitignore]
if missing:
with open(".gitignore", "a") as f:
f.write("\n" + "\n".join(missing) + "\n")Skip condition: .env already exists with all required values.
If this is a new project (no scripts/ directory):
mkdir -p solutions plugins scriptsEnsure scripts/auth.py and scripts/enable-mcp-client.py exist -- see references/helper-scripts.md.
Copy templates/CLAUDE.md to the repo root if it doesn't exist. Replace placeholders ({{DATAVERSE_URL}}, {{SOLUTION_NAME}}, {{PUBLISHER_PREFIX}}) with values from .env.
dataverse auth who
pac org who
python scripts/auth.py --check--check makes a real data-plane call (not just a token) — the only proof the org is actually reachable; a token can be minted while the org domain is blocked. All must resolve the same user/environment, proving the DV CLI cache, the PAC profile (Step 2b), and Python's reuse of the shared cache are wired.
If any fail:
dataverse auth who fails → re-run Step 2.pac org who fails → re-run Step 2b.python scripts/auth.py --check prints a device-code URL → browser/WAM cache has no Python-reusable token. Auto-fix: re-run dataverse auth create --environment <url> --deviceCode, then retry. If it still prompts, check pip show msal msal-extensions. Headless hosts (ChatGPT / Codex cloud / CI): dataverse auth create can't persist here — don't loop (see headless-hosts.md).python scripts/auth.py --check prints NOT REACHABLE with a connection/timeout error → the org domain is blocked by network egress, not auth. Do NOT report success or a count — see headless-hosts.md remediation..env.Before metadata work, also confirm the account has the prvCreateEntity customization privilege — see tools-setup.md.
Skip this step only when the current host points to the selected environment:
gemini mcp list resolves bundled server dataverse to the selected URLagy mcp list contains the selected environmentIf MCP is not configured, follow mcp-configuration.md:
MCP_CLIENT_ID based on tool choice.env/api/mcp)dataverse mcp allow <MCP_CLIENT_ID> over the portal (one-time per tenant/environment)ERP_URL exists, separately allowlist and validate ERPPlugin attribution for MCP: This plugin uses the stdio proxy transport (npx @microsoft/dataverse mcp <url>). When registering it, include DATAVERSE_OPERATION_CONTEXT in the env block so the CLI appends it to its User-Agent on requests to /api/mcp. Build the value from .env:
DATAVERSE_OPERATION_CONTEXT=app=dataverse-skills/{DATAVERSE_PLUGIN_VERSION};skill=mcp-direct;agent={DATAVERSE_PLUGIN_AGENT}For Claude Code (claude mcp add -t stdio), pass it via -e DATAVERSE_OPERATION_CONTEXT=.... For JSON/TOML hosts, add it to the server's environment block.
Important: MCP configuration requires an editor/CLI restart.
For Copilot: Write the JSON config, then:
✅ Dataverse MCP server configured. Restart your editor for changes to take effect.
For Claude: Run the claude mcp add command, then warn the user about the auth popup that will appear on next launch:
✅ Dataverse MCP server registered. Restart Claude Code to enable MCP tools. Remember to use
claude --continueto resume the session without losing context.On restart, a browser window may open to sign in to your Dataverse environment (the MCP proxy authenticating on your behalf). See mcp-configuration.md for details.
For Cursor: Write the JSON config, then:
✅ Dataverse MCP server
dataverse-{orgid}configured in~/.cursor/mcp.json. Reload the Cursor window (Ctrl+Shift+P → "Developer: Reload Window") for the new MCP server to appear under Settings → Tools & MCPs.On first use the
npx @microsoft/dataverseproxy signs in via browser device code, then reuses the shared cache silently. See mcp-configuration.md.
For Codex: Write the TOML config to ~/.codex/config.toml. Codex loads MCP tools only at startup, so don't claim they're callable until the user restarts. Tell the user:
✅ Dataverse MCP server
dataverse-{orgid}configured in~/.codex/config.toml. Restart Codex (CLI) or reload the Codex IDE to load the MCP tools.
After the editor/CLI restarts, both of these must succeed before declaring the setup complete:
Check 1: the host's MCP list shows the Dataverse server connected
claude mcp listgemini extensions list, then gemini mcp listagy mcp list; after restart, /mcp
This proves the MCP server starts, but not that data operations work.Check 2: Agent successfully lists tables via describe/search and returns data
"List the tables in my Dataverse environment."
This proves end-to-end wiring: auth, tenant consent, environment allowlist, and endpoint reachability are all correct. If the agent falls back to PAC CLI or Web API, see mcp-configuration.md troubleshooting.
Only when both checks pass is the setup verified.
Interpreting failures:
npx/Node.js are installed and the MCP registration succeeded.describe/search errors): the server can speak MCP but cannot reach or read Dataverse. Run --validate below to diagnose.Diagnostic — --validate (for failure investigation only):
npx @microsoft/dataverse mcp {DATAVERSE_URL} --validateThis exercises two Dataverse MCP endpoints with a fresh authentication handshake and reports detailed errors (auth, allowlist, consent, endpoint reachability):
{DATAVERSE_URL}/api/mcp. This is the one the plugin actually uses at runtime.{DATAVERSE_URL}/api/mcp_preview. Opt-in per environment; not used by the plugin.Do not use --validate as a success gate on first-time setup. On a freshly configured workspace, the token cache hasn't warmed up, so --validate can fail with MsalClientException or 403 while MCP is actually working fine on subsequent real calls. Reserve --validate for diagnosing a confirmed failure in Check 1 or Check 2.
How to read --validate output:
/api/mcp) result first. If this passes, MCP will work for normal plugin usage regardless of what the Preview endpoint reports.403 Forbidden on the Preview endpoint (/api/mcp_preview) is expected for most environments. Preview is opt-in per environment; if your environment hasn't enabled it, the Preview check will always fail. This does not indicate a broken setup.⚠ Partial success warning in this case. The validator returns exit code 1 (failure) unless BOTH /api/mcp and /api/mcp_preview pass. Because most environments don't enable the Preview endpoint, --validate will exit 1 even when MCP is fully functional via the GA endpoint. Focus on per-endpoint results, not the aggregate status./api/mcp) fails: that's the real signal to investigate — auth, tenant consent, environment allowlist, or endpoint reachability.For what MCP can and can't do (data CRUD + batch up to 25, table/column creation incl. choice/lookup, search/describe, file upload/download) versus the SDK / Web API, see the overview skill's Tool Capabilities matrix.
After verifying MCP works, tell the user:
✅ Connected to Dataverse at
{DATAVERSE_URL}. Tools installed, authenticated, MCP live.You can now:
- Create tables, columns, and relationships (
dv-metadata)- Write and import data (
dv-data)- Query and analyze data (
dv-query)- Export and promote solutions (
dv-solution)To create your first solution, see the
dv-solutionskill. To load sample data (accounts, contacts, opportunities), ask: "Load demo data into my Dataverse environment."
This plugin's skills are natively loaded by GitHub Copilot CLI, Claude Code CLI, Gemini CLI, and Antigravity CLI when installed as a plugin. No manual context loading is needed.
The PAC CLI commands, Python scripts, and XML templates work identically across hosts.
© microsoft, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (references) in .github/plugins/dataverse/skills/dv-connect of microsoft/Dataverse-skills.
Open the folder on GitHubat commit 3be592f
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in microsoft/Dataverse-skills, which our catalogue first saw on October 7, 2026.
Dv Connect next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Dv Connect this skillmicrosoft/Dataverse-skills | 241 | 1 repos | ~5k | Automated safety check: Notes | MIT | |
| Flowstudio Power Automate Buildgithub/awesome-copilot | 40k | 2 repos | ~5k | Automated safety check: Pass | MIT | |
| Flowstudio Power Automate MCPgithub/awesome-copilot | 40k | 1 repos | ~3.4k | Automated safety check: Pass | MIT | |
| MCP Copilot Studio Server Generatorgithub/awesome-copilot | 40k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Power Platform MCP Connector Suitegithub/awesome-copilot | 40k | 1 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Microsoft Docsmicrosoft/ai-agents-for-beginners | 77k | — | ~1.5k | Automated safety check: Pass | MIT |
github/awesome-copilot
Build, scaffold, and deploy Power Automate cloud flows using the FlowStudio MCP server.
github/awesome-copilot
Foundation skill for Power Automate via FlowStudio MCP — auth setup, the reusable MCP helper (Python + Node.js), tool discovery via listskills / toolsearch, and oversized-response handling.
github/awesome-copilot
Generate a complete MCP server implementation optimized for Copilot Studio integration with proper schema constraints and streamable HTTP support
github/awesome-copilot
Generate complete Power Platform custom connector with MCP integration for Copilot Studio - includes schema generation, troubleshooting, and validation
microsoft/ai-agents-for-beginners
Küsib ametlikku Microsofti dokumentatsiooni, et leida mõisteid, juhendeid ja koodinäiteid Azure'i, .NET-i, Agent Frameworki, Aspire'i, VS Code'i, GitHubi ja muu kohta.
LeoYeAI/openclaw-master-skills
Connect to and operate Power Automate cloud flows via a FlowStudio MCP server.
microsoft/Dataverse-skills
Environment-level Dataverse administration — bulk delete, retention/archival, organization settings, OrgDB settings, recycle bin, audit, and the 37 allowlisted PPAC toggles.
microsoft/Dataverse-skills
Record-level CRUD and bulk operations — create, update, delete, upsert, CSV import, multi-table foreign-key loads, AI-generated sample data.
microsoft/Dataverse-skills
Bulk reads, multi-page iteration, and analytics over Dataverse data.
microsoft/Dataverse-skills
X++ code development lifecycle for Finance and Operations — scaffold models, author classes, custom services/APIs, and data entities, install matching SDKs, compile deployable packages, deploy…
microsoft/Dataverse-skills
Dataverse schema authoring and inspection — tables, columns, relationships, forms, and views.
microsoft/Dataverse-skills
Foundational cross-cutting context for Dataverse / Power Platform work — scope and the skill map, the tool-capability reference, the safety rules, and the safe change lifecycle.
Works with
Categories
One-step setup and connection diagnostics for a Dataverse environment — installs tools, authenticates, registers MCP, writes .env, and verifies active profiles and linked ERP endpoints. Dv Connect is an agent skill from microsoft/Dataverse-skills, published by the product's own GitHub organization.env, and verifies active profiles and linked ERP endpoints.
Dv Connect fits situations like: starting a new project; switching environments; fixing authentication; troubleshooting MCP.
Run `npx skills add microsoft/Dataverse-skills --skill dv-connect -a claude-code`. Or copy the skill folder (.github/plugins/dataverse/skills/dv-connect in microsoft/Dataverse-skills) into .claude/skills/dv-connect in your project. Claude Code loads it when a task matches its description.
Run `npx skills add microsoft/Dataverse-skills --skill dv-connect -a codex`. Or copy the skill folder (.github/plugins/dataverse/skills/dv-connect in microsoft/Dataverse-skills) into .agents/skills/dv-connect in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft/Dataverse-skills --skill dv-connect -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dv-connect, .gemini/skills/dv-connect, .github/skills/dv-connect and .opencode/skills/dv-connect in your project.
Going by SKILL.md and its folder, Dv Connect needs the command-line tools its instructions call (python, claude, pip, npx, gemini and npm) and credentials named CLIENT_SECRET. Our summary lists: Python 3; Node.js; A credential in CLIENT_SECRET.
SKILL.md names 1 domain. As links in the text: admin.powerplatform.microsoft.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Dv Connect is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 17k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Dv Connect: Flowstudio Power Automate Build (github/awesome-copilot, 40k stars), Flowstudio Power Automate MCP (github/awesome-copilot, 40k stars), MCP Copilot Studio Server Generator (github/awesome-copilot, 40k stars) and Power Platform MCP Connector Suite (github/awesome-copilot, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
microsoft (a GitHub organization, an official publisher) maintains it in microsoft/Dataverse-skills, which has 241 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 5, 2026.
Source: microsoft/Dataverse-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.