Skip to main content
Glama
lucamilletti99

API Registry MCP Server

πŸ”Œ Dataverse MCP Server

A Model Context Protocol (MCP) server for Microsoft Dataverse, enabling AI assistants like Claude to interact with Dataverse data through natural language.

Built on: Model Context Protocol | Microsoft Dataverse MCP Spec


What is This?

This MCP server exposes Microsoft Dataverse tables and records through the Model Context Protocol, allowing AI assistants to:

  • πŸ“Š List and explore Dataverse tables (entities)

  • πŸ” Query records with OData filters and sorting

  • ✏️ Create new records in any table

  • πŸ”„ Update existing records by GUID

  • πŸ€– Natural language interface via Claude Desktop, VS Code, or any MCP client


Related MCP server: APIWeaver

Quick Start

1. Prerequisites

  • Python 3.11+

  • Dataverse environment with API access

  • Azure AD app registration with Dataverse permissions

2. Install

# Install dependencies
pip install fastapi uvicorn requests python-dotenv fastmcp

# Or with uv (recommended)
uv pip install fastapi uvicorn requests python-dotenv fastmcp

3. Configure

Run the setup script:

chmod +x setup_dataverse.sh
./setup_dataverse.sh

Or manually create .env.local:

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

4. Test Connection

python test_dataverse.py

Expected output: βœ… All tests passed! Dataverse MCP server is ready.

5. Start Server

Option A: Run Locally

./watch.sh
# Or: uvicorn server.app:combined_app --reload --port 8000

Option B: Deploy to Databricks Apps

./deploy.sh --create

πŸ“– See DATABRICKS_DEPLOYMENT.md for deployment guide.

Server endpoints:

  • πŸ”§ MCP: http://localhost:8000/mcp (local) or https://your-app.databricksapps.com/apps/your-app/mcp (cloud)

  • πŸ“– Docs: http://localhost:8000/docs

  • ❀️ Health: http://localhost:8000/api/health


Documentation

Document

Description

DATAVERSE_QUICKSTART.md

5-minute quick start guide

DATAVERSE_SETUP.md

Detailed Azure AD & Dataverse setup

DATABRICKS_DEPLOYMENT.md

Deploy to Databricks Apps

README_DATAVERSE.md

Complete reference documentation


Available MCP Tools

Phase 1 (Implemented)

Tool

Description

health

Server health check

list_tables

List all Dataverse tables

describe_table

Get table schema and columns

read_query

Query records with OData filters

create_record

Create new records

update_record

Update existing records

Phase 2 (Planned)

  • delete_record - Delete records

  • create_table / update_table / delete_table - Table management

  • list_knowledge_sources / retrieve_knowledge - Copilot Studio integration

  • list_prompts / execute_prompt - Custom prompts


Usage Examples

Claude Desktop

Configure ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "dataverse": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

Then in Claude:

You: "List all custom tables in my Dataverse environment"
Claude: [Calls list_tables with custom_only=True]

You: "Show me accounts with revenue over $1M"
Claude: [Calls read_query with filter]

You: "Create a new account called Fabrikam with $2M revenue"
Claude: [Calls create_record]

cURL

# List tables
curl -X POST http://localhost:8000/mcp/call-tool \
  -H "Content-Type: application/json" \
  -d '{"name": "list_tables", "arguments": {"top": 10}}'

# Query accounts
curl -X POST http://localhost:8000/mcp/call-tool \
  -H "Content-Type: application/json" \
  -d '{
    "name": "read_query",
    "arguments": {
      "table_name": "account",
      "select": ["name", "revenue"],
      "filter_query": "revenue gt 1000000",
      "top": 10
    }
  }'

Python

import requests

response = requests.post('http://localhost:8000/mcp/call-tool', json={
    "name": "describe_table",
    "arguments": {"table_name": "account"}
})

print(response.json())

Project Structure

dataverse_mcp_server/
β”œβ”€β”€ server/
β”‚   β”œβ”€β”€ app.py                      # FastAPI + MCP server
β”‚   β”œβ”€β”€ dataverse_tools.py          # MCP tool implementations
β”‚   β”œβ”€β”€ dataverse/
β”‚   β”‚   β”œβ”€β”€ auth.py                 # OAuth authentication
β”‚   β”‚   β”œβ”€β”€ client.py               # Dataverse Web API client
β”‚   β”‚   └── __init__.py
β”‚   └── routers/                    # FastAPI REST endpoints
β”‚       β”œβ”€β”€ health.py               # Health check
β”‚       β”œβ”€β”€ mcp_info.py             # MCP metadata
β”‚       └── user.py                 # User info
β”œβ”€β”€ client/                         # React frontend (future)
β”œβ”€β”€ test_dataverse.py              # Connection tests
β”œβ”€β”€ setup_dataverse.sh             # Interactive setup
β”œβ”€β”€ watch.sh                       # Dev server with hot reload
β”œβ”€β”€ config.yaml                    # MCP server config
β”œβ”€β”€ env.example                    # Environment template
β”œβ”€β”€ DATAVERSE_QUICKSTART.md        # Quick start guide
β”œβ”€β”€ DATAVERSE_SETUP.md             # Detailed setup
└── README_DATAVERSE.md            # Full reference

Architecture

Authentication: Service Principal (OAuth 2.0 client credentials flow)
API: Dataverse Web API v9.2
Protocol: Model Context Protocol (MCP)
Framework: FastAPI + FastMCP

MCP Clients (Claude, VS Code) 
    ↓ HTTP/MCP
Dataverse MCP Server (FastAPI)
    ↓ HTTPS/OAuth
Microsoft Dataverse

Troubleshooting

Problem

Solution

401 Authentication Error

Check client secret validity and API permissions

403 Permission Denied

Assign security role to app user in Power Platform Admin Center

Table Not Found

Use list_tables() to find correct logical name

Connection Timeout

Verify DATAVERSE_HOST and network connectivity

See DATAVERSE_SETUP.md for detailed troubleshooting.


Development

# Run tests
python test_dataverse.py

# Start dev server
./watch.sh

# Check lints
ruff check server/

# Format code
ruff format server/


License

See LICENSE.md

Security

Report vulnerabilities via SECURITY.md


Questions? See DATAVERSE_QUICKSTART.md or DATAVERSE_SETUP.md

Built with ❀️ for the Dataverse and MCP communities

F
license - not found
-
quality - not tested
D
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage API endpoints, environments, and testing workflows through the GASSAPI backend. Provides semantic documentation tools for endpoint cataloging and automated flow creation for backend-to-frontend development workflows.
    23
    9
  • A
    license
    -
    quality
    F
    maintenance
    Dynamically converts any REST API into MCP tools by registering web API configurations at runtime. Supports multiple authentication methods and automatically generates MCP-compatible tools for AI assistants to interact with external web services.
    49
    MIT
  • F
    license
    -
    quality
    -
    maintenance
    Enables AI agents to dynamically discover and interact with APIs through Swagger/OpenAPI specifications and Postman collections using a strategic four-tool approach. It streamlines API integration by providing universal tools for endpoint discovery, detailed request information, and authenticated execution.
    1
  • A
    license
    -
    quality
    D
    maintenance
    Enables natural language interaction with any Swagger/OpenAPI-defined API, allowing discovery, parameterized calls, and automated testing through large language models.
    5
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.

  • 52 paid x402 API endpoints for AI agents β€” crypto, data, DeFi, market intelligence.

  • Stripe-native marketplace where AI agents discover and pay per call for API services.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lucamilletti99/dataverse_mcp_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server