- Home
- MCP servers
- Dataverse
Dataverse
- typescript
0
GitHub Stars
typescript
Language
7 months ago
First Indexed
3 months ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
You can interact with Microsoft Dataverse data through natural language by running this MCP server. It exposes Dataverse tables and records via the Model Context Protocol, enabling you to list tables, query records with filters, create new records, and update existing ones using an MCP client or Claude Desktop integration.
How to use
Use an MCP client to connect to the Dataverse MCP Server at the local endpoint http://localhost:8000/mcp or the cloud deployment URL if you publish it. You can ask the client to list tables, explore table schemas, query records with filters and sorting, create new records, and update existing records by GUID. The server offers a natural language interface that translates your requests into Dataverse operations.
How to install
Prerequisites: Python 3.11 or newer, a Dataverse environment with API access, and an Azure AD app registration with Dataverse permissions.
Step by step commands to set up and run the server locally.
pip install fastapi uvicorn requests python-dotenv fastmcp
# Or with uv (recommended)
uv pip install fastapi uvicorn requests python-dotenv fastmcp
chmod +x setup_dataverse.sh
./setup_dataverse.sh
# If you configure manually, create .env.local with these values:
# DATAVERSE_HOST=https://org1bfe9c69.api.crm.dynamics.com
# DATAVERSE_TENANT_ID=your-tenant-id
# DATAVERSE_CLIENT_ID=your-client-id
# DATAVERSE_CLIENT_SECRET=your-client-secret
python test_dataverse.py
# Start the server locally
./watch.sh
# Or explicitly start with the web server
uvicorn server.app:combined_app --reload --port 8000
# Optional deploy flow to Databricks Apps
./deploy.sh --create
Configuration and startup details
The server uses environment variables to connect to Dataverse. Set up a Dataverse host, tenant, and client credentials in a local environment file or export them in your shell.
DATAVERSE_HOST=https://org1bfe9c69.api.crm.dynamics.com
DATAVERSE_TENANT_ID=your-tenant-id
DATAVERSE_CLIENT_ID=your-client-id
DATAVERSE_CLIENT_SECRET=your-client-secret
Server endpoints and health
MCP endpoint (local): http://localhost:8000/mcp Documentation: http://localhost:8000/docs Health: http://localhost:8000/api/health
Troubleshooting
401 Authentication Error: Verify the client secret and API permissions for the Dataverse app registration.
403 Permission Denied: Ensure the app has the proper security roles in the Power Platform Admin Center.
Table Not Found: Use list_tables() to determine the correct logical name of the target table.
Connection Timeout: Check that DATAVERSE_HOST is reachable and that your network allows access to the Dataverse environment.
Notes on deployment
Option A keeps everything on your machine for testing. Option B deploys to Databricks Apps for hosted access. Refer to the Databricks deployment steps for details.
Available tools
health
Server health check endpoint to verify MCP server readiness.
list_tables
List all Dataverse tables available in the environment.
describe_table
Get the schema and columns for a specific table.
read_query
Query records with OData-style filters, selections, and sorting.
create_record
Create a new record in a specified table.
update_record
Update an existing record by GUID.