Dataverse Plugin MCP

Dataverse Plugin MCP

MCP server that lets AI assistants scaffold, build, register, query, and diagnose Microsoft Dataverse plug-ins directly from conversation, orchestrating Power Platform CLI and Azure CLI.

Category
访问服务器

README

Dataverse Plugin MCP

An MCP server that lets an AI assistant (Claude, etc.) scaffold, build, register, query, and diagnose Microsoft Dataverse (Power Platform / Dynamics 365) plug-ins directly from a conversation — no need to leave the editor to open the Plugin Registration Tool or hand-write Web API calls.

Instead of reimplementing the registration logic from scratch, this MCP orchestrates tools you already use and already have authenticated on your machine:

  • Power Platform CLI (pac) — project scaffolding, build, and push of already-registered packages.
  • Azure CLI (az) — reuses your already-authenticated session (same account/tenant as pac) to get a token and talk directly to the Dataverse Web API (query and register SDK message processing steps, images, execution logs, etc.).

Why this exists

Registering a Dataverse plug-in normally means switching between several tools: pac plugin init for the project skeleton, the Plugin Registration Tool (GUI) for the first registration, and either the PRT or manual Web API calls to bind messages/entities/stages and configure pre/post images. This MCP brings that whole flow into tools an AI assistant can call directly, including operations that usually only exist in the GUI (a full assembly diagnostic report, step editing, trace logs).

Prerequisites

Tool Purpose Install
Python 3.11+ Runs the MCP server
uv Manages the environment/dependencies pip install uv or the official installer
Power Platform CLI (pac) Scaffolding, build, push, PRT dotnet tool install --global Microsoft.PowerApps.CLI.Tool
Azure CLI (az) Web API access token official installer
.NET SDK Builds the net462 plug-in projects dotnet.microsoft.com

Authenticate both CLIs once, with the same account that has access to the target Dataverse environment:

pac auth create --environment https://YOUR-ENVIRONMENT.crm.dynamics.com
az login

The server never stores or asks for credentials — it always delegates to these two already-authenticated sessions.

Installation

git clone https://github.com/lucasjesus0311/dataverse-plugin-mcp.git
cd dataverse-plugin-mcp
uv sync

Configure in Claude Code

claude mcp add dataverse-plugins -- uv --directory "PATH/TO/dataverse-plugin-mcp" run dataverse_plugins_server.py

Configure in Claude Desktop

Edit claude_desktop_config.json (under %APPDATA%\Claude\, or if the app was installed from the Microsoft Store, under %LOCALAPPDATA%\Packages\<PackageId>\LocalCache\Roaming\Claude\):

{
  "mcpServers": {
    "dataverse-plugins": {
      "command": "C:\\PATH\\TO\\uv.exe",
      "args": [
        "--directory", "C:\\PATH\\TO\\dataverse-plugin-mcp",
        "run", "dataverse_plugins_server.py"
      ]
    }
  }
}

Use the full path to uv.exe (find it with where uv on Windows or which uv on macOS/Linux) — GUI apps don't always inherit the shell PATH. Fully restart Claude Desktop after saving.

Available tools

24 tools, organized by stage of a plug-in's lifecycle. Full reference with every parameter in docs/TOOLS.md.

Category Tools
Environment list_environments, select_environment
Local development create_plugin_project, build_plugin
Registration open_registration_tool, push_plugin_update
Steps (CRUD) create_step, update_step, delete_step, toggle_step, set_secure_configuration
Images (CRUD) create_step_image, list_images, update_image, delete_image
Query list_registered_plugins, list_plugin_types, list_steps, list_available_messages
Deletion delete_assembly, delete_package
Diagnostics list_execution_logs, configure_tracing, xray_assembly

xray_assembly deserves a callout: it generates a complete report of a registered assembly in a single call — classes, steps with every setting, images, and the latest trace log entries.

⚠️ Security notice

Several tools perform real writes to the configured Dataverse environment (creating/editing/deleting steps, images, assemblies, packages; toggling tracing; updating the running code via push_plugin_update). They act with the same permissions as your pac/az session — always test in a development environment, never directly in production. Each tool's docstring clearly flags when an operation is destructive or irreversible.

Known limitations

  • First-time registration of a package/assembly: there is no CLI command or simple Web API call for this — Microsoft reserves this step for the Plugin Registration Tool or the Visual Studio extension (which reflect over the assembly to auto-discover its classes). Use open_registration_tool() for this one-time step; after that, push_plugin_update() covers every update via CLI.
  • PATCH on sdkmessageprocessingstepimages: the Dataverse Web API rejects direct updates to this table with a generic, undocumented error (0x80040216). update_image() works around this by deleting and recreating the image.
  • $expand on packageid of pluginassemblies: returns 400 Bad Request. The code uses _packageid_value plus a separate lookup instead of $expand.

Project structure

.
├── dataverse_plugins_server.py   # main server (24 tools)
├── docs/
│   └── TOOLS.md                  # full reference for every tool
├── examples/
│   └── hello_world_mcp_server.py # minimal example MCP (3 trivial tools)
├── plugins/                      # C# plug-in projects generated/registered locally
└── pyproject.toml

Minimal example

If you're just getting started with MCP, examples/hello_world_mcp_server.py is a 3-tool trivial server (add, current time, reverse text) — a good starting point before diving into the main server.

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选