-
Notifications
You must be signed in to change notification settings - Fork 0
First Steps
Five minutes, four prompts. Type these into your AI client after finishing Client-Setup. Nothing here writes to Dataverse — the default configuration registers read-only tools only.
Have your environment URL to hand (https://yourorg.crm.dynamics.com). Include it in the first prompt; most clients carry it through the rest of the conversation.
Using the Dataverse tools, tell me who I am in
https://yourorg.crm.dynamics.com.
This calls dataverse_whoami and triggers the first sign-in — a browser window under interactive auth. It returns exactly three fields:
{
"UserId": "00000000-0000-0000-0000-000000000000",
"BusinessUnitId": "00000000-0000-0000-0000-000000000000",
"OrganizationId": "00000000-0000-0000-0000-000000000000"
}Three GUIDs back means auth, network, URL validation and Dataverse privileges are all working. If instead you get {"error": true, ...}, go to Troubleshooting.
Don't know the URL? Ask "list the Power Platform environments I can administer" — dataverse_list_environments returns an instance_url per environment, which is the dataverse_url every other tool wants.
List the custom tables in that environment.
dataverse_list_tables with filter: "IsCustomEntity eq true". Each entry carries the two names you need later — LogicalName for metadata calls, EntitySetName for record queries:
{
"tables": [
{ "LogicalName": "new_project", "EntitySetName": "new_projects", "IsCustomEntity": true, "IsManaged": false }
],
"count": 1,
"has_more": false
}(trimmed — the real response also carries SchemaName and a localised DisplayName object)
Show me the 10 most recently modified active accounts — name and city only.
dataverse_query_table with entity_set_name: "accounts", select: ["name", "address1_city"], filter: "statecode eq 0", orderby: ["modifiedon desc"], top: 10. Records come back under records, with count and has_more.
Always say which columns you want. Left to itself the tool selects only createdon and modifiedon.
For joins, aggregation or anything OData $filter cannot express, ask for FetchXML instead — dataverse_execute_fetchxml.
What's in the
MyAppsolution?
dataverse_get_solution resolves it by unique name, then dataverse_list_solution_components lists what it contains with the component type codes resolved to names.
Follow-ups that work well: "what depends on the new_status global choice?" (dataverse_analyze_dependencies), "show me the forms on new_project", "why did last night's import job fail?" (dataverse_get_import_job_results).
- Tool-Index — all 200 tools, searchable.
- Safety-and-Permissions — before you ask an agent to change anything. Write and delete tools are not registered until you opt in, and that is the guardrail worth understanding first.
- Tool-Categories — if your client is struggling with 200 tools loaded at once.
dataverse-mcp 3.9.1 — Repository · PyPI · Issues · Changelog · MIT
Get started
Configure
Tools
- Tool-Index
- Tools-Core
- Tools-Schema
- Tools-Solutions
- Tools-Plugins
- Tools-Security
- Tools-Custom-APIs
- Tools-Apps
- Tools-Variables
- Tools-Flows
- Tools-Views
- Tools-Forms
- Tools-Connections
- Tools-Web-Resources
- Tools-Jobs
Understand