The most complete MCP server for Microsoft Dataverse.
MCP Dataverse
The most complete MCP server for Microsoft Dataverse.
73 tools · 4 resources · 10 guided workflows · Zero config auth
Why MCP Dataverse?
AI agents hallucinate schema, guess column names, and build broken OData queries. This server gives them real-time access to your Dataverse environment — schema, records, metadata, solutions — through the Model Context Protocol.
- No Azure AD app registration — device code flow, zero pre-configuration
- Works with any MCP client — VS Code, Claude, Cursor, Windsurf, Gemini, Codex CLI
- Atomic tools — each tool does one thing well; the AI picks the right one
- Structured outputs — every response returns
{summary, data, suggestions} - Guardrails — destructive operations require explicit confirmation
- Encrypted tokens — AES-256-GCM cached credentials, never logged
Install
npx mcp-dataverse install
The interactive wizard configures your environment, registers the server in VS Code, and authenticates your Microsoft account in under 2 minutes.
Requires Node.js 20+. For other clients (Claude, Cursor, Windsurf…) see Multi-Client Setup.
Authentication
No PAC CLI, no app registration, no client secret. Uses Microsoft's device code flow (MSAL):
- First tool call → a sign-in code appears in the MCP Output panel (
View → Output → MCP) - Open
https://microsoft.com/devicelogin→ enter the code → sign in with your work account - Done. Token is cached encrypted — all future starts are silent
Re-authenticate after ~90 days of inactivity: npx mcp-dataverse-auth
Capabilities
| Category | Count | Description |
|---|---|---|
| Metadata | 8 | Tables, schema, relationships, option sets, entity keys |
| Query | 3 | OData, FetchXML, paginated retrieval |
| CRUD | 6 | Get, create, update, delete, upsert, assign |
| Actions & Functions | 6 | Bound/unbound Dataverse actions and functions |
| Batch | 1 | Up to 1000 operations atomically |
| Solutions | 3 | List solutions, components, publish customizations |
| Search | 1 | Full-text Relevance Search |
| Users & Teams | 3 | Users, roles, teams |
| Files | 2 | Upload/download file and image columns |
| + more | … | Audit, trace logs, delta tracking, impersonation, annotations… |
| Assistance | 4 | Tool router, workflow guide |
HTTP Transport
Run as an HTTP server for multi-client use:
MCP_TRANSPORT=http MCP_HTTP_PORT=3000 MCP_HTTP_SECRET=mysecret node dist/server.js
Connect using VS Code / Copilot with:
{
"servers": {
"dataverse": {
"type": "http",
"url": "http://localhost:3000/mcp",
"headers": {
"Authorization": "Bearer mysecret"
}
}
}
}
Troubleshooting
| Symptom | Fix |
|---|---|
| No sign-in prompt | Open View → Output → MCP — the device code is displayed there |
No MSAL accounts found |
Run npx mcp-dataverse-auth then restart the server |
Authentication timed out |
Restart the MCP server — a fresh code is generated automatically |
| Server not appearing in Agent mode | Run npx mcp-dataverse install or npx mcp-dataverse doctor |
Tools (4)
metadata_toolsAccess tables, schema, relationships, option sets, and entity keys.query_toolsExecute OData and FetchXML queries for paginated data retrieval.crud_toolsPerform create, read, update, delete, upsert, and assign operations on records.action_toolsExecute bound and unbound Dataverse actions and functions.Environment Variables
MCP_TRANSPORTTransport protocol for the server (e.g., http)MCP_HTTP_PORTPort for the HTTP serverMCP_HTTP_SECRETSecret token for HTTP authenticationConfiguration
{"servers": {"dataverse": {"type": "http", "url": "http://localhost:3000/mcp", "headers": {"Authorization": "Bearer mysecret"}}}}