This skill configures the Dataverse MCP server for GitHub Copilot with your organization's environment URL. Each organization is registered with a unique server name based on the org identifier (e.g.,
DataverseMcporgbc9a965c
). If the user provided a URL it is: $ARGUMENTS.
Instructions
0. Ask for MCP scope
Ask the user whether they want to configure the MCP server globally or for this project only:
Would you like to configure the Dataverse MCP server:
Globally
(available in all projects)
Project-only
(available only in this project)
Based on their choice, set the
CONFIG_PATH
variable:
Global
:
~/.copilot/mcp-config.json
(use the user's home directory)
Project
:
.mcp/copilot/mcp.json
(relative to the current working directory)
Store this path for use in steps 1 and 6.
1. Check already-configured MCP servers
Read the MCP configuration file at
CONFIG_PATH
(determined in step 0) to check for already-configured servers.
The configuration file is a JSON file with the following structure:
{
"mcpServers"
:
{
"ServerName1"
:
{
"type"
:
"http"
,
"url"
:
"https://example.com/api/mcp"
}
}
}
Or it may use
"servers"
instead of
"mcpServers"
as the top-level key.
Extract all
url
values from the configured servers and store them as
CONFIGURED_URLS
. For example:
[
"https://orgfbb52bb7.crm.dynamics.com/api/mcp"
]
If the file doesn't exist or is empty, treat
CONFIGURED_URLS
as empty (
[]
). This step must never block the skill.
2. Ask how to get the environment URL
Ask the user:
How would you like to provide your Dataverse environment URL?
Auto-discover
— List available environments from your Azure account (requires Azure CLI)
Manual entry
— Enter the URL directly
Based on their choice:
If
Auto-discover
Proceed to step 2a
If
Manual entry
Skip to step 2b
2a. Auto-discover environments
Check prerequisites:
Verify Azure CLI (
az
) is installed (check with
which az
or
where az
on Windows)
If not installed, inform the user and fall back to step 2b
Make the API call:
Check if the user is logged into Azure CLI:
az account show
If this fails, prompt the user to log in:
az login
Get an access token for the Power Apps API:
az account get-access-token
--resource
https://service.powerapps.com/
--query
accessToken
--output
tsv
Call the Power Apps API to list environments:
GET https://api.powerapps.com/providers/Microsoft.PowerApps/environments?api-version=2016-11-01
Authorization: Bearer
Accept: application/json
Parse the JSON response and filter for environments where
(user not logged in, network error, no environments found, or any other error), tell the user what went wrong and fall back to step 2b.
2b. Manual entry — ask for the URL
Ask the user to provide their environment URL directly:
Please enter your Dataverse environment URL.
Example:
https://myorg.crm10.dynamics.com
You can find this in the Power Platform Admin Center under Environments.
Then skip to step 4.
3. Ask the user to select an environment
Present the environments as a numbered list. For each environment, check whether any URL in
CONFIGURED_URLS
starts with that environment's
instanceUrl
— if so, append
(already configured)
to the line.
I found the following Dataverse environments on your account. Which one would you like to configure?
My Org (default) —
https://orgfbb52bb7.crm.dynamics.com
(already configured)
Another Env —
https://orgabc123.crm.dynamics.com
Enter the number of your choice, or type "manual" to enter a URL yourself.
If the user selects an already-configured environment, confirm that they want to re-register it (e.g. to change the endpoint type) before proceeding.
If the user types "manual", fall back to step 2b.
4. Confirm the selected URL
Take the
instanceUrl
from the chosen environment (or the manually entered URL) and strip any trailing slash. This is
USER_URL
for the remainder of the skill.
5. Confirm if the user wants "Preview" or "Generally Available (GA)" endpoint
Ask the user:
Which endpoint would you like to use?
Generally Available (GA)
—
/api/mcp
(recommended)
Preview
—
/api/mcp_preview
(latest features, may be unstable)
Based on their choice:
If
GA
set
MCP_URL
to
{USER_URL}/api/mcp
If
Preview
set
MCP_URL
to
{USER_URL}/api/mcp_preview
6. Register the MCP server
Update the MCP configuration file at
CONFIG_PATH
(determined in step 0) to add the new server.
Generate a unique server name
from the
USER_URL
:
Extract the subdomain (organization identifier) from the URL
Example:
https://orgbc9a965c.crm10.dynamics.com
→
orgbc9a965c
Prepend
DataverseMcp
to create the server name
Example:
DataverseMcporgbc9a965c
This is the
SERVER_NAME
.
Update the configuration file:
If
CONFIG_PATH
is for a
project-scoped
configuration (
.mcp/copilot/mcp.json
), ensure the directory exists first:
mkdir
-p
.mcp/copilot
Read the existing configuration file at
CONFIG_PATH
, or create a new empty config if it doesn't exist:
{
}
Determine which top-level key to use:
If the config already has
"servers"
, use that
Otherwise, use
"mcpServers"
Add or update the server entry:
{
"mcpServers"
:
{
"{SERVER_NAME}"
:
{
"type"
:
"http"
,
"url"
:
"{MCP_URL}"
}
}
}
Write the updated configuration back to
CONFIG_PATH
with proper JSON formatting (2-space indentation).
Important notes:
Do NOT overwrite other entries in the configuration file
Preserve the existing structure and formatting
If
SERVER_NAME
already exists, update it with the new
MCP_URL
Proceed to step 7.
7. Confirm success and instruct restart
Tell the user:
✅ Dataverse MCP server configured for GitHub Copilot at
{MCP_URL}
.
Configuration saved to:
{CONFIG_PATH}
IMPORTANT: You must restart your editor for the changes to take effect.
Restart your editor or reload the window, then you will be able to:
List all tables in your Dataverse environment
Query records from any table
Create, update, or delete records
Explore your schema and relationships
8. Troubleshooting
If something goes wrong, help the user check:
The URL format is correct (
https://..dynamics.com
)
They have access to the Dataverse environment
The environment URL matches what's shown in the Power Platform Admin Center
Their Environment Admin has enabled "Dataverse CLI MCP" in the Allowed Clients list
Their Environment has Dataverse MCP enabled, and if they're trying to use the preview endpoint that is enabled
For project-scoped configuration, ensure the
.mcp/copilot/mcp.json
file was created successfully
For global configuration, check permissions on the
~/.copilot/
directory