mcp-consultant-tools 3.1.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +125 -12
- package/build/AzureDevOpsService.js +2 -1
- package/build/PowerPlatformService.js +1551 -8
- package/build/index.js +2921 -180
- package/build/types/app-module.js +78 -0
- package/build/types/customization.js +74 -0
- package/build/utils/audit-logger.js +281 -0
- package/build/utils/bestPractices.js +337 -0
- package/build/utils/iconManager.js +341 -0
- package/build/utils/rate-limiter.js +240 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,12 +5,26 @@ A Model Context Protocol (MCP) server providing intelligent access to PowerPlatf
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
7
|
This MCP server enables AI assistants to:
|
|
8
|
-
- **PowerPlatform/Dataverse
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
8
|
+
- **PowerPlatform/Dataverse** (70+ tools):
|
|
9
|
+
- **READ**: Explore entity metadata, query records, inspect plugins, analyze workflows and flows
|
|
10
|
+
- **WRITE** *(Optional, Feature-Flagged)*:
|
|
11
|
+
- Entities & attributes (all 11 user-creatable types)
|
|
12
|
+
- Global option sets, forms, views
|
|
13
|
+
- Business rules, web resources
|
|
14
|
+
- Solutions, publishers, import/export
|
|
15
|
+
- Publishing & validation
|
|
16
|
+
- **Azure DevOps** (12 tools): Search wikis, manage work items, execute WIQL queries
|
|
17
|
+
- **Figma** (2 tools): Extract design data in simplified, AI-friendly format
|
|
11
18
|
|
|
12
19
|
All integrations are **optional** - configure only the services you need.
|
|
13
20
|
|
|
21
|
+
**Total: 86+ MCP tools** providing comprehensive access to your development lifecycle.
|
|
22
|
+
|
|
23
|
+
## Known limitations
|
|
24
|
+
- Cannot create Model-Driven-Apps
|
|
25
|
+
- Cannot add Customer fields
|
|
26
|
+
- Adds icon to solution, but does not update the table correctly. Icon name: 'Icon for {table name}'
|
|
27
|
+
|
|
14
28
|
## Quick Start
|
|
15
29
|
|
|
16
30
|
### Installation
|
|
@@ -44,12 +58,20 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
|
|
|
44
58
|
"POWERPLATFORM_CLIENT_ID": "your-client-id",
|
|
45
59
|
"POWERPLATFORM_CLIENT_SECRET": "your-client-secret",
|
|
46
60
|
"POWERPLATFORM_TENANT_ID": "your-tenant-id",
|
|
61
|
+
"POWERPLATFORM_ENABLE_CUSTOMIZATION": "false",
|
|
62
|
+
"POWERPLATFORM_DEFAULT_SOLUTION": "",
|
|
47
63
|
|
|
48
64
|
"AZUREDEVOPS_ORGANIZATION": "your-org",
|
|
49
65
|
"AZUREDEVOPS_PAT": "your-pat",
|
|
50
66
|
"AZUREDEVOPS_PROJECTS": "Project1,Project2",
|
|
51
|
-
|
|
52
|
-
"
|
|
67
|
+
"AZUREDEVOPS_API_VERSION": "7.1",
|
|
68
|
+
"AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE": "false",
|
|
69
|
+
"AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE": "false",
|
|
70
|
+
"AZUREDEVOPS_ENABLE_WIKI_WRITE": "false",
|
|
71
|
+
|
|
72
|
+
"FIGMA_API_KEY": "your-figma-token",
|
|
73
|
+
"FIGMA_OAUTH_TOKEN": "",
|
|
74
|
+
"FIGMA_USE_OAUTH": "false"
|
|
53
75
|
}
|
|
54
76
|
}
|
|
55
77
|
}
|
|
@@ -72,7 +94,21 @@ Create `.vscode/mcp.json` in your project:
|
|
|
72
94
|
"POWERPLATFORM_URL": "https://yourenvironment.crm.dynamics.com",
|
|
73
95
|
"POWERPLATFORM_CLIENT_ID": "your-client-id",
|
|
74
96
|
"POWERPLATFORM_CLIENT_SECRET": "your-client-secret",
|
|
75
|
-
"POWERPLATFORM_TENANT_ID": "your-tenant-id"
|
|
97
|
+
"POWERPLATFORM_TENANT_ID": "your-tenant-id",
|
|
98
|
+
"POWERPLATFORM_ENABLE_CUSTOMIZATION": "false",
|
|
99
|
+
"POWERPLATFORM_DEFAULT_SOLUTION": "",
|
|
100
|
+
|
|
101
|
+
"AZUREDEVOPS_ORGANIZATION": "your-org",
|
|
102
|
+
"AZUREDEVOPS_PAT": "your-pat",
|
|
103
|
+
"AZUREDEVOPS_PROJECTS": "Project1,Project2",
|
|
104
|
+
"AZUREDEVOPS_API_VERSION": "7.1",
|
|
105
|
+
"AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE": "false",
|
|
106
|
+
"AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE": "false",
|
|
107
|
+
"AZUREDEVOPS_ENABLE_WIKI_WRITE": "false",
|
|
108
|
+
|
|
109
|
+
"FIGMA_API_KEY": "your-figma-token",
|
|
110
|
+
"FIGMA_OAUTH_TOKEN": "",
|
|
111
|
+
"FIGMA_USE_OAUTH": "false"
|
|
76
112
|
}
|
|
77
113
|
}
|
|
78
114
|
}
|
|
@@ -85,9 +121,9 @@ Reload VS Code window after saving.
|
|
|
85
121
|
|
|
86
122
|
## Available Tools
|
|
87
123
|
|
|
88
|
-
### PowerPlatform/Dataverse (
|
|
124
|
+
### PowerPlatform/Dataverse (72 tools)
|
|
89
125
|
|
|
90
|
-
**Entity & Data:**
|
|
126
|
+
**Entity & Data (Read - 7 tools):**
|
|
91
127
|
- `get-entity-metadata` - Get entity metadata
|
|
92
128
|
- `get-entity-attributes` - Get entity fields/attributes
|
|
93
129
|
- `get-entity-attribute` - Get specific attribute details
|
|
@@ -96,13 +132,84 @@ Reload VS Code window after saving.
|
|
|
96
132
|
- `get-record` - Get a specific record
|
|
97
133
|
- `query-records` - Query records with OData filters
|
|
98
134
|
|
|
99
|
-
**
|
|
135
|
+
**Entity Management (Write - 8 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
|
|
136
|
+
- `create-entity` - Create new custom entity (table)
|
|
137
|
+
- `update-entity` - Update entity metadata
|
|
138
|
+
- `update-entity-icon` - Set entity icon using Fluent UI System Icons
|
|
139
|
+
- `delete-entity` - Delete custom entity
|
|
140
|
+
- `create-attribute` - Create new attribute (column) - supports all 11 user-creatable types
|
|
141
|
+
- `update-attribute` - Update attribute metadata
|
|
142
|
+
- `delete-attribute` - Delete attribute
|
|
143
|
+
- `create-global-optionset-attribute` - Create attribute using global option set
|
|
144
|
+
|
|
145
|
+
**Relationships (Write - 4 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
|
|
146
|
+
- `create-one-to-many-relationship` - Create 1:N relationship
|
|
147
|
+
- `create-many-to-many-relationship` - Create N:N relationship
|
|
148
|
+
- `update-relationship` - Update relationship metadata
|
|
149
|
+
- `delete-relationship` - Delete relationship
|
|
150
|
+
|
|
151
|
+
**Global Option Sets (Write - 5 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
|
|
152
|
+
- `update-global-optionset` - Update option set metadata
|
|
153
|
+
- `add-optionset-value` - Add new value to option set
|
|
154
|
+
- `update-optionset-value` - Update existing value
|
|
155
|
+
- `delete-optionset-value` - Delete value
|
|
156
|
+
- `reorder-optionset-values` - Reorder values
|
|
157
|
+
|
|
158
|
+
**Forms (Write - 6 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
|
|
159
|
+
- `create-form` - Create new form (Main, QuickCreate, QuickView, Card)
|
|
160
|
+
- `update-form` - Update form XML and metadata
|
|
161
|
+
- `delete-form` - Delete form
|
|
162
|
+
- `activate-form` - Activate form
|
|
163
|
+
- `deactivate-form` - Deactivate form
|
|
164
|
+
- `get-forms` - Get all forms for entity
|
|
165
|
+
|
|
166
|
+
**Views (Write - 6 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
|
|
167
|
+
- `create-view` - Create new view with FetchXML
|
|
168
|
+
- `update-view` - Update view query and layout
|
|
169
|
+
- `delete-view` - Delete view
|
|
170
|
+
- `set-default-view` - Set view as default
|
|
171
|
+
- `get-view-fetchxml` - Get view FetchXML
|
|
172
|
+
- `get-views` - Get all views for entity
|
|
173
|
+
|
|
174
|
+
**Business Rules (Read-only - 2 tools):**
|
|
175
|
+
- `get-business-rules` - List all business rules (for troubleshooting)
|
|
176
|
+
- `get-business-rule` - Get business rule definition (for troubleshooting)
|
|
177
|
+
|
|
178
|
+
**Web Resources (Write - 6 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
|
|
179
|
+
- `create-web-resource` - Create web resource (JS, CSS, HTML, images)
|
|
180
|
+
- `update-web-resource` - Update web resource content
|
|
181
|
+
- `delete-web-resource` - Delete web resource
|
|
182
|
+
- `get-web-resource` - Get web resource by ID
|
|
183
|
+
- `get-web-resources` - Get web resources by name pattern
|
|
184
|
+
- `get-webresource-dependencies` - Get web resource dependencies
|
|
185
|
+
|
|
186
|
+
**Solution Management (Write - 7 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
|
|
187
|
+
- `create-publisher` - Create new solution publisher
|
|
188
|
+
- `get-publishers` - Get all publishers
|
|
189
|
+
- `create-solution` - Create new solution
|
|
190
|
+
- `add-solution-component` - Add component to solution
|
|
191
|
+
- `remove-solution-component` - Remove component from solution
|
|
192
|
+
- `export-solution` - Export solution (managed/unmanaged)
|
|
193
|
+
- `import-solution` - Import solution from base64 zip
|
|
194
|
+
|
|
195
|
+
**Publishing & Validation (Write - 8 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
|
|
196
|
+
- `publish-customizations` - Publish all pending customizations
|
|
197
|
+
- `publish-entity` - Publish specific entity
|
|
198
|
+
- `check-dependencies` - Check component dependencies
|
|
199
|
+
- `check-entity-dependencies` - Check entity dependencies
|
|
200
|
+
- `check-delete-eligibility` - Check if component can be deleted
|
|
201
|
+
- `get-entity-customization-info` - Check if entity is customizable
|
|
202
|
+
- `validate-schema-name` - Validate schema name against rules
|
|
203
|
+
- `preview-unpublished-changes` - Preview unpublished customizations
|
|
204
|
+
- `validate-solution-integrity` - Validate solution for missing dependencies
|
|
205
|
+
|
|
206
|
+
**Plugins (Read - 4 tools):**
|
|
100
207
|
- `get-plugin-assemblies` - List plugin assemblies
|
|
101
208
|
- `get-plugin-assembly-complete` - Full assembly details with validation
|
|
102
209
|
- `get-entity-plugin-pipeline` - Plugin execution order for entity
|
|
103
210
|
- `get-plugin-trace-logs` - Query plugin execution logs
|
|
104
211
|
|
|
105
|
-
**Workflows & Flows:**
|
|
212
|
+
**Workflows & Flows (Read - 5 tools):**
|
|
106
213
|
- `get-flows` - List Power Automate flows
|
|
107
214
|
- `get-flow-definition` - Get flow definition and logic
|
|
108
215
|
- `get-flow-runs` - Get flow run history
|
|
@@ -134,7 +241,7 @@ Reload VS Code window after saving.
|
|
|
134
241
|
|
|
135
242
|
## Available Prompts
|
|
136
243
|
|
|
137
|
-
The server includes **
|
|
244
|
+
The server includes **13 prompts** that provide formatted, context-rich output:
|
|
138
245
|
|
|
139
246
|
**PowerPlatform:**
|
|
140
247
|
- `entity-overview` - Comprehensive entity overview
|
|
@@ -145,6 +252,7 @@ The server includes **12 prompts** that provide formatted, context-rich output:
|
|
|
145
252
|
- `entity-plugin-pipeline-report` - Visual plugin execution pipeline
|
|
146
253
|
- `flows-report` - Power Automate flows report
|
|
147
254
|
- `workflows-report` - Classic workflows report
|
|
255
|
+
- `business-rules-report` - Business rules report (read-only)
|
|
148
256
|
|
|
149
257
|
**Azure DevOps:**
|
|
150
258
|
- `wiki-search-results` - Formatted wiki search results
|
|
@@ -155,7 +263,7 @@ The server includes **12 prompts** that provide formatted, context-rich output:
|
|
|
155
263
|
## Documentation
|
|
156
264
|
|
|
157
265
|
- **[SETUP.md](SETUP.md)** - Complete setup guide with credentials, troubleshooting, and security
|
|
158
|
-
- **[TOOLS.md](TOOLS.md)** - Full reference for all
|
|
266
|
+
- **[TOOLS.md](TOOLS.md)** - Full reference for all 86+ tools and 12 prompts
|
|
159
267
|
- **[USAGE.md](USAGE.md)** - Examples and use cases for all integrations
|
|
160
268
|
- **[CLAUDE.md](CLAUDE.md)** - Architecture details and development guide
|
|
161
269
|
|
|
@@ -220,6 +328,11 @@ All integrations are optional and can be configured independently:
|
|
|
220
328
|
**PowerPlatform:**
|
|
221
329
|
- Requires Azure AD app registration
|
|
222
330
|
- Uses OAuth authentication with automatic token refresh
|
|
331
|
+
- **Customization tools** (optional, opt-in):
|
|
332
|
+
- Set `POWERPLATFORM_ENABLE_CUSTOMIZATION=true` to enable write operations
|
|
333
|
+
- Create entities, attributes, and publish customizations
|
|
334
|
+
- Specify `POWERPLATFORM_DEFAULT_SOLUTION` to auto-add customizations to a solution
|
|
335
|
+
- **WARNING:** These tools make permanent changes to your CRM environment. Use with caution.
|
|
223
336
|
|
|
224
337
|
**Azure DevOps:**
|
|
225
338
|
- Requires Personal Access Token (PAT)
|
|
@@ -163,7 +163,8 @@ export class AzureDevOpsService {
|
|
|
163
163
|
let wikiPath = pagePath;
|
|
164
164
|
if (pagePath.endsWith('.md')) {
|
|
165
165
|
wikiPath = this.convertGitPathToWikiPath(pagePath);
|
|
166
|
-
|
|
166
|
+
// Log to stderr (not stdout) to avoid breaking MCP protocol
|
|
167
|
+
console.error(`Auto-converted git path to wiki path: ${pagePath} -> ${wikiPath}`);
|
|
167
168
|
}
|
|
168
169
|
const response = await this.makeRequest(`${project}/_apis/wiki/wikis/${wikiId}/pages?path=${encodeURIComponent(wikiPath)}&includeContent=${includeContent}&api-version=${this.apiVersion}`);
|
|
169
170
|
// The API returns the page data directly (not wrapped in a 'page' property)
|