mcp-consultant-tools 3.0.0 → 4.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 CHANGED
@@ -1,65 +1,70 @@
1
1
  # MCP Consultant Tools
2
2
 
3
- A Model Context Protocol (MCP) server that provides intelligent access to PowerPlatform/Dataverse entities, Azure DevOps, and Figma designs. This tool offers context-aware assistance, entity exploration, and metadata access across multiple platforms.
3
+ A Model Context Protocol (MCP) server providing intelligent access to PowerPlatform/Dataverse, Azure DevOps, and Figma through an AI-friendly interface.
4
4
 
5
- Key features:
6
- - **PowerPlatform/Dataverse**: Rich entity metadata exploration with formatted, context-aware prompts, advanced OData query support, comprehensive relationship mapping
7
- - **Azure DevOps**: Wiki search, work item management, WIQL queries, and team collaboration tools
8
- - **Figma**: Design data extraction with simplified AI-friendly format, component analysis, and style deduplication
9
- - AI-assisted query building and data modeling through AI agent
10
- - Full access to entity attributes, relationships, and global option sets
5
+ ## Overview
11
6
 
12
- ## Installation
7
+ This MCP server enables AI assistants to:
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
13
18
 
14
- You can install and run this tool in two ways:
19
+ All integrations are **optional** - configure only the services you need.
15
20
 
16
- ### Option 1: Install globally
21
+ **Total: 86+ MCP tools** providing comprehensive access to your development lifecycle.
17
22
 
18
- ```bash
19
- npm install -g mcp-consultant-tools
20
- ```
23
+ ## Quick Start
24
+
25
+ ### Installation
21
26
 
22
- Then run it:
27
+ Run directly with npx (no installation needed):
23
28
 
24
29
  ```bash
25
- mcp-consultant-tools
30
+ npx mcp-consultant-tools@latest
26
31
  ```
27
32
 
28
- ### Option 2: Run directly with npx
29
-
30
- Run without installing:
33
+ Or install globally:
31
34
 
32
35
  ```bash
33
- npx mcp-consultant-tools
36
+ npm install -g mcp-consultant-tools
34
37
  ```
35
38
 
36
- ## Configuration
39
+ ### Configuration
37
40
 
38
- This is an MCP server designed to work with MCP-compatible clients like Claude Desktop, Cursor, or Claude Code (VS Code extension).
41
+ #### Claude Desktop
39
42
 
40
- ### Quick Start: VS Code (Claude Code) Configuration
41
-
42
- For VS Code with Claude Code extension, create a `.vscode/mcp.json` file in your repository:
43
+ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
43
44
 
44
45
  ```json
45
46
  {
46
- "servers": {
47
+ "mcpServers": {
47
48
  "mcp-consultant-tools": {
48
49
  "command": "npx",
49
- "args": ["-y", "mcp-consultant-tools"],
50
+ "args": ["-y", "mcp-consultant-tools@latest"],
50
51
  "env": {
51
52
  "POWERPLATFORM_URL": "https://yourenvironment.crm.dynamics.com",
52
- "POWERPLATFORM_CLIENT_ID": "your-azure-app-client-id",
53
- "POWERPLATFORM_CLIENT_SECRET": "your-azure-app-client-secret",
54
- "POWERPLATFORM_TENANT_ID": "your-azure-tenant-id",
55
- "AZUREDEVOPS_ORGANIZATION": "your-organization-name",
56
- "AZUREDEVOPS_PAT": "your-personal-access-token",
53
+ "POWERPLATFORM_CLIENT_ID": "your-client-id",
54
+ "POWERPLATFORM_CLIENT_SECRET": "your-client-secret",
55
+ "POWERPLATFORM_TENANT_ID": "your-tenant-id",
56
+ "POWERPLATFORM_ENABLE_CUSTOMIZATION": "false",
57
+ "POWERPLATFORM_DEFAULT_SOLUTION": "",
58
+
59
+ "AZUREDEVOPS_ORGANIZATION": "your-org",
60
+ "AZUREDEVOPS_PAT": "your-pat",
57
61
  "AZUREDEVOPS_PROJECTS": "Project1,Project2",
58
62
  "AZUREDEVOPS_API_VERSION": "7.1",
59
- "AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE": "true",
63
+ "AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE": "false",
60
64
  "AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE": "false",
61
65
  "AZUREDEVOPS_ENABLE_WIKI_WRITE": "false",
62
- "FIGMA_API_KEY": "your-figma-personal-access-token",
66
+
67
+ "FIGMA_API_KEY": "your-figma-token",
63
68
  "FIGMA_OAUTH_TOKEN": "",
64
69
  "FIGMA_USE_OAUTH": "false"
65
70
  }
@@ -68,67 +73,35 @@ For VS Code with Claude Code extension, create a `.vscode/mcp.json` file in your
68
73
  }
69
74
  ```
70
75
 
71
- **After configuration:**
72
- 1. Save the `.vscode/mcp.json` file
73
- 2. Reload VS Code window
74
- 3. The MCP server will be available in Claude Code
76
+ Restart Claude Desktop after saving.
75
77
 
76
- **Note:** You can omit PowerPlatform, Azure DevOps, or Figma credentials if you only need certain integrations (see Environment Variables Reference below).
78
+ #### VS Code (Claude Code)
77
79
 
78
- ### Quick Start: Claude Desktop Configuration
79
-
80
- Add this to your Claude Desktop config file at `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
80
+ Create `.vscode/mcp.json` in your project:
81
81
 
82
82
  ```json
83
83
  {
84
- "mcpServers": {
84
+ "servers": {
85
85
  "mcp-consultant-tools": {
86
86
  "command": "npx",
87
- "args": ["-y", "mcp-consultant-tools"],
87
+ "args": ["-y", "mcp-consultant-tools@latest"],
88
88
  "env": {
89
89
  "POWERPLATFORM_URL": "https://yourenvironment.crm.dynamics.com",
90
- "POWERPLATFORM_CLIENT_ID": "your-azure-app-client-id",
91
- "POWERPLATFORM_CLIENT_SECRET": "your-azure-app-client-secret",
92
- "POWERPLATFORM_TENANT_ID": "your-azure-tenant-id",
93
- "AZUREDEVOPS_ORGANIZATION": "your-organization-name",
94
- "AZUREDEVOPS_PAT": "your-personal-access-token",
90
+ "POWERPLATFORM_CLIENT_ID": "your-client-id",
91
+ "POWERPLATFORM_CLIENT_SECRET": "your-client-secret",
92
+ "POWERPLATFORM_TENANT_ID": "your-tenant-id",
93
+ "POWERPLATFORM_ENABLE_CUSTOMIZATION": "false",
94
+ "POWERPLATFORM_DEFAULT_SOLUTION": "",
95
+
96
+ "AZUREDEVOPS_ORGANIZATION": "your-org",
97
+ "AZUREDEVOPS_PAT": "your-pat",
95
98
  "AZUREDEVOPS_PROJECTS": "Project1,Project2",
96
99
  "AZUREDEVOPS_API_VERSION": "7.1",
97
- "AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE": "true",
100
+ "AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE": "false",
98
101
  "AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE": "false",
99
102
  "AZUREDEVOPS_ENABLE_WIKI_WRITE": "false",
100
- "FIGMA_API_KEY": "your-figma-personal-access-token",
101
- "FIGMA_OAUTH_TOKEN": "",
102
- "FIGMA_USE_OAUTH": "false"
103
- }
104
- }
105
- }
106
- }
107
- ```
108
-
109
- ### Local Development Configuration
110
-
111
- For local development and testing, you can run the server directly from your cloned repository using Node.js. Add this to your Claude Desktop config:
112
103
 
113
- ```json
114
- {
115
- "mcpServers": {
116
- "mcp-consultant-tools-dev": {
117
- "command": "node",
118
- "args": ["/absolute/path/to/mcp-consultant-tools/build/index.js"],
119
- "env": {
120
- "POWERPLATFORM_URL": "https://yourenvironment.crm.dynamics.com",
121
- "POWERPLATFORM_CLIENT_ID": "your-azure-app-client-id",
122
- "POWERPLATFORM_CLIENT_SECRET": "your-azure-app-client-secret",
123
- "POWERPLATFORM_TENANT_ID": "your-azure-tenant-id",
124
- "AZUREDEVOPS_ORGANIZATION": "your-organization-name",
125
- "AZUREDEVOPS_PAT": "your-personal-access-token",
126
- "AZUREDEVOPS_PROJECTS": "Project1,Project2",
127
- "AZUREDEVOPS_API_VERSION": "7.1",
128
- "AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE": "true",
129
- "AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE": "false",
130
- "AZUREDEVOPS_ENABLE_WIKI_WRITE": "false",
131
- "FIGMA_API_KEY": "your-figma-personal-access-token",
104
+ "FIGMA_API_KEY": "your-figma-token",
132
105
  "FIGMA_OAUTH_TOKEN": "",
133
106
  "FIGMA_USE_OAUTH": "false"
134
107
  }
@@ -137,847 +110,330 @@ For local development and testing, you can run the server directly from your clo
137
110
  }
138
111
  ```
139
112
 
140
- **Important:** Replace `/absolute/path/to/mcp-consultant-tools` with the actual path to your cloned repository (e.g., `/Users/yourname/Repo/mcp-consultant-tools`).
141
-
142
- ### Environment Variables Reference
143
-
144
- **Note:** All integrations (PowerPlatform, Azure DevOps, Figma) are optional. You can configure only the services you need:
145
- - PowerPlatform only: Set `POWERPLATFORM_*` variables
146
- - Azure DevOps only: Set `AZUREDEVOPS_*` variables
147
- - Figma only: Set `FIGMA_*` variables
148
- - Any combination: Set only the variables you need
149
-
150
- **PowerPlatform/Dataverse (Optional):**
151
- - `POWERPLATFORM_URL`: Your PowerPlatform environment URL
152
- - `POWERPLATFORM_CLIENT_ID`: Azure AD app registration client ID
153
- - `POWERPLATFORM_CLIENT_SECRET`: Azure AD app registration client secret
154
- - `POWERPLATFORM_TENANT_ID`: Azure tenant ID
155
-
156
- **Azure DevOps (Optional):**
157
- - `AZUREDEVOPS_ORGANIZATION`: Your Azure DevOps organization name
158
- - `AZUREDEVOPS_PAT`: Personal Access Token with appropriate scopes
159
- - `AZUREDEVOPS_PROJECTS`: Comma-separated list of allowed projects
160
- - `AZUREDEVOPS_API_VERSION`: API version (default: "7.1")
161
- - `AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE`: Enable work item write operations (default: "false")
162
- - `AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE`: Enable work item delete operations (default: "false")
163
- - `AZUREDEVOPS_ENABLE_WIKI_WRITE`: Enable wiki write operations (default: "false")
164
-
165
- **Figma (Optional):**
166
- - `FIGMA_API_KEY`: Figma Personal Access Token (generate at: https://www.figma.com/developers/api#authentication)
167
- - `FIGMA_OAUTH_TOKEN`: Alternative to API key for OAuth authentication
168
- - `FIGMA_USE_OAUTH`: Set to "true" if using OAuth token instead of API key (default: "false")
169
-
170
- **How to get a Figma API Key:**
171
- 1. Go to https://www.figma.com/developers/api#authentication
172
- 2. Scroll to "Personal Access Tokens"
173
- 3. Click "Get personal access token"
174
- 4. Log in to Figma
175
- 5. Generate new token and copy it to your config
176
-
177
- **After configuration:**
178
- 1. Save the config file
179
- 2. Completely restart Claude Desktop (quit and reopen)
180
- 3. The MCP server will be available in Claude Desktop
181
-
182
- ## Usage
183
-
184
- Once configured, the MCP server will expose tools for retrieving PowerPlatform entity metadata and records.
185
-
186
- ### Available Tools
187
-
188
- The server provides **30 tools** across PowerPlatform, Azure DevOps, and Figma integrations.
189
-
190
- ### PowerPlatform/Dataverse Tools
191
-
192
- #### Entity Metadata & Data Tools
193
- - `get-entity-metadata`: Get metadata about a PowerPlatform entity
194
- - `get-entity-attributes`: Get attributes/fields of a PowerPlatform entity
195
- - `get-entity-attribute`: Get a specific attribute/field of a PowerPlatform entity
196
- - `get-entity-relationships`: Get relationships for a PowerPlatform entity
197
- - `get-global-option-set`: Get a global option set definition
198
- - `get-record`: Get a specific record by entity name and ID
199
- - `query-records`: Query records using an OData filter expression
200
-
201
- #### Plugin Registration & Validation Tools
202
- - `get-plugin-assemblies`: List all plugin assemblies in the environment
203
- - `get-plugin-assembly-complete`: Get comprehensive plugin assembly information including all types, steps, images, and automatic validation
204
- - `get-entity-plugin-pipeline`: Get all plugins that execute on a specific entity, organized by message and execution order
205
- - `get-plugin-trace-logs`: Query plugin trace logs with filtering and exception parsing
206
-
207
- #### Workflow & Power Automate Flow Tools
208
- - `get-flows`: List all Power Automate cloud flows (category = 5)
209
- - `get-flow-definition`: Get complete flow definition including JSON logic from clientdata field
210
- - `get-flow-runs`: Get flow run history with status, duration, and error details
211
- - `get-workflows`: List all classic Dynamics workflows (category = 0)
212
- - `get-workflow-definition`: Get complete workflow definition including XAML and trigger configuration
213
-
214
- ### Azure DevOps Tools
215
-
216
- #### Wiki Tools
217
- - `get-wikis`: List all wikis in a project
218
- - `search-wiki-pages`: Full-text search across wiki pages with highlighting
219
- - `get-wiki-page`: Get specific wiki page content and metadata
220
- - `create-wiki-page`: Create new wiki page (requires `AZUREDEVOPS_ENABLE_WIKI_WRITE=true`)
221
- - `update-wiki-page`: Update existing wiki page (requires `AZUREDEVOPS_ENABLE_WIKI_WRITE=true`)
222
-
223
- #### Work Item Tools
224
- - `get-work-item`: Get work item by ID with full details
225
- - `query-work-items`: Execute WIQL queries to find work items
226
- - `get-work-item-comments`: Get discussion comments for a work item
227
- - `add-work-item-comment`: Add comment to work item (requires `AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true`)
228
- - `update-work-item`: Update work item fields using JSON Patch (requires `AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true`)
229
- - `create-work-item`: Create new work item (requires `AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true`)
230
- - `delete-work-item`: Delete work item (requires `AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE=true`)
231
-
232
- ### Figma Tools
233
- - `get-figma-data`: Get comprehensive Figma design data including layout, text, styles, and components. Fetches from Figma API and transforms into simplified, AI-friendly format. Can fetch entire files or specific nodes.
234
- - `download-figma-images`: Placeholder for future image download functionality (Coming in v2)
235
-
236
- ## MCP Prompts
237
-
238
- The server includes **12 prompts** that provide formatted, context-rich information across all integrations.
239
-
240
- ### Available Prompts
241
-
242
- #### Entity Prompts
243
- 1. **entity-overview**: Comprehensive overview of a PowerPlatform entity
244
- 2. **attribute-details**: Detailed information about a specific entity attribute
245
- 3. **query-template**: OData query template for an entity with example filters
246
- 4. **relationship-map**: Visual map of entity relationships
247
-
248
- #### PowerPlatform Plugin Prompts
249
- 5. **plugin-deployment-report**: Generate a comprehensive deployment report for a plugin assembly with validation warnings
250
- 6. **entity-plugin-pipeline-report**: Generate a visual execution pipeline showing all plugins for an entity in order
251
-
252
- #### PowerPlatform Workflow & Flow Prompts
253
- 7. **flows-report**: Comprehensive report of all Power Automate flows grouped by state
254
- 8. **workflows-report**: Comprehensive report of all classic Dynamics workflows grouped by state
255
-
256
- #### Azure DevOps Prompts
257
- 9. **wiki-search-results**: Search Azure DevOps wiki pages with formatted results and content snippets
258
- 10. **wiki-page-content**: Get a formatted wiki page with navigation context and sub-pages
259
- 11. **work-item-summary**: Get a comprehensive summary of a work item with details and comments
260
- 12. **work-items-query-report**: Execute a WIQL query and get results grouped by state/type
261
-
262
- ## Prompt Examples
263
-
264
- Here are some examples of how you can interact with assistant using the PowerPlatform MCP prompts:
265
-
266
- ### 1. Entity Understanding
267
-
268
- You can ask assistant about entities in natural language:
269
-
270
- ```
271
- User: "Tell me about the Account entity in our PowerPlatform environment"
272
-
273
- Response:
274
- [uses ENTITY_OVERVIEW prompt internally]
275
-
276
- Here's what I found about the Account entity:
277
- - It's a core business entity representing customers and potential customers
278
- - The primary identifier is 'accountid' and the primary name field is 'name'
279
- - Key fields include:
280
- * name (Account Name)
281
- * emailaddress1 (Email)
282
- * telephone1 (Main Phone)
283
- * revenue (Annual Revenue)
284
- - It has 42 one-to-many relationships and 8 many-to-many relationships
285
- ```
286
-
287
- ### 2. Building Queries
288
-
289
- You can ask for help constructing queries:
290
-
291
- ```
292
- User: "Help me write a query to find active accounts with revenue over $1M in California"
293
-
294
- Response:
295
- [uses QUERY_TEMPLATE prompt internally]
296
-
297
- Here's the OData query you need:
298
- accounts?$select=name,revenue,statecode,address1_stateorprovince
299
- &$filter=statecode eq 0
300
- and revenue gt 1000000
301
- and address1_stateorprovince eq 'California'
302
- &$orderby=revenue desc
303
-
304
- This query:
305
- 1. Selects relevant fields
306
- 2. Filters for active accounts (statecode eq 0)
307
- 3. Checks revenue > $1M
308
- 4. Filters for California location
309
- 5. Orders by revenue highest to lowest
310
- ```
311
-
312
- ### 3. Understanding Relationships
313
-
314
- You can explore entity relationships naturally:
315
-
316
- ```
317
- User: "How are Accounts and Contacts related in our system?"
318
-
319
- Response:
320
- [uses RELATIONSHIP_MAP prompt for both entities internally]
321
-
322
- Here are the key relationships between Accounts and Contacts:
323
-
324
- 1. Primary Contact (One-to-Many):
325
- - account_primary_contact: Account (1) → Contact (N)
326
- - An account can have many contacts, but one designated as primary
327
-
328
- 2. Customer Relationship:
329
- - contact_customer_accounts: Contact (N) ← Account (1)
330
- - Contacts can be associated with customer accounts
331
-
332
- 3. Additional Relationships:
333
- - accountleads_association: For lead tracking
334
- - account_connections: For relationship management
335
- ```
336
-
337
- ### 4. Field/Attribute Investigation
338
-
339
- You can ask about specific fields:
340
-
341
- ```
342
- User: "What kind of field is the revenue field on Account?"
343
-
344
- Response:
345
- [uses ATTRIBUTE_DETAILS prompt internally]
346
-
347
- The revenue field on Account is:
348
- - Data Type: Money
349
- - Format: Currency
350
- - Not required
351
- - Searchable: Yes
352
- - Used for: Tracking annual revenue for the account
353
- - Can be used in advanced find and filtered views
354
- ```
355
-
356
- ### 5. Complex Data Modeling
357
-
358
- You can get help with data modeling decisions:
359
-
360
- ```
361
- User: "I need to design a solution for tracking product reviews. Which entities should I relate to?"
362
-
363
- Response:
364
- [uses multiple ENTITY_OVERVIEW and RELATIONSHIP_MAP prompts internally]
365
-
366
- Based on the existing data model, here's a suggested approach:
367
-
368
- 1. Product (existing entity):
369
- - Already has relationships with:
370
- * Price lists
371
- * Product categories
372
- * Inventory units
373
-
374
- 2. New Review entity should relate to:
375
- - Product (N:1) - Each review is for one product
376
- - Contact (N:1) - Reviews are written by contacts
377
- - Account (N:1) - Optional link to company if B2B review
378
-
379
- Here's a sample lookup field structure...
380
- [continues with detailed implementation guidance]
381
- ```
382
-
383
- ### 6. Debugging Assistance
384
-
385
- You can get help troubleshooting:
386
-
387
- ```
388
- User: "Why am I getting 'invalid property' when querying account.customertypecode?"
389
-
390
- Response:
391
- [uses ATTRIBUTE_DETAILS prompt internally]
392
-
393
- I see the issue. The field 'customertypecode' is actually named 'customertype' in your environment. Here's the correct field information:
394
- - Logical Name: customertype
395
- - Type: OptionSetValue
396
- - Valid Values:
397
- * 1 = Competitor
398
- * 2 = Consultant
399
- * 3 = Customer
400
- * 4 = Investor
401
- * 5 = Partner
402
- * 6 = Influencer
403
-
404
- Try updating your query to use 'customertype' instead of 'customertypecode'.
405
- ```
406
-
407
- These examples show how AI assistant can leverage the MCP prompts to provide context-aware, accurate assistance for PowerPlatform development tasks. The AI understands your environment's specific configuration and can help with both simple queries and complex architectural decisions.
408
-
409
- ## Plugin Registration & Validation
410
-
411
- The server includes powerful tools for plugin discovery, validation, and troubleshooting. These tools eliminate the need for the Plugin Registration Tool for most inspection tasks and enable AI-assisted PR reviews.
412
-
413
- ### Use Cases
414
-
415
- #### 1. Discover Plugin Assemblies
416
- ```javascript
417
- // List all custom (unmanaged) plugin assemblies
418
- await mcpClient.invoke("get-plugin-assemblies", {
419
- includeManaged: false
420
- });
421
- ```
422
-
423
- **Output:**
424
- ```json
425
- {
426
- "totalCount": 10,
427
- "assemblies": [
428
- {
429
- "name": "MyCompany.Plugins",
430
- "version": "1.0.0.5",
431
- "isolationMode": "Sandbox",
432
- "modifiedOn": "2024-01-15T10:30:00Z",
433
- "modifiedBy": "John Doe"
434
- }
435
- ]
436
- }
437
- ```
438
-
439
- #### 2. Validate Plugin Deployment (PR Review)
440
- ```javascript
441
- // Get comprehensive assembly info with automatic validation
442
- await mcpClient.invoke("get-plugin-assembly-complete", {
443
- assemblyName": "MyCompany.Plugins",
444
- includeDisabled: false
445
- });
446
- ```
447
-
448
- **Returns:**
449
- - Assembly metadata (version, isolation mode, last modified)
450
- - All plugin types (class names)
451
- - All registered steps with:
452
- - Stage (PreValidation/PreOperation/PostOperation)
453
- - Mode (Synchronous/Asynchronous)
454
- - Execution rank
455
- - Filtering attributes
456
- - Pre/Post images with column lists
457
- - **Automatic validation** detecting:
458
- - Missing filtering attributes (performance issue)
459
- - Missing images (potential runtime errors)
460
- - Disabled steps
461
- - Configuration issues
462
-
463
- #### 3. View Entity Plugin Pipeline
464
- ```javascript
465
- // See all plugins that run on an entity in execution order
466
- await mcpClient.invoke("get-entity-plugin-pipeline", {
467
- entityName": "account",
468
- messageFilter": "Update" // Optional: filter by message
469
- });
470
- ```
471
-
472
- **Shows:**
473
- - All plugins organized by stage and rank
474
- - Execution order
475
- - Filtering attributes per step
476
- - Images configured
477
- - Assembly versions
478
-
479
- #### 4. Troubleshoot with Trace Logs
480
- ```javascript
481
- // Query recent plugin failures
482
- await mcpClient.invoke("get-plugin-trace-logs", {
483
- entityName: "account",
484
- exceptionOnly: true,
485
- hoursBack: 24,
486
- maxRecords: 50
487
- });
488
- ```
489
-
490
- **Returns:**
491
- - Parsed exception details
492
- - Exception type and message
493
- - Stack traces
494
- - Execution duration
495
- - Correlation IDs for further investigation
496
-
497
- ### Plugin Validation for PR Reviews
498
-
499
- When reviewing plugin PRs, use the `plugin-deployment-report` prompt for a human-readable validation report:
113
+ Reload VS Code window after saving.
114
+
115
+ **Note:** Omit credentials for integrations you don't need. See [SETUP.md](SETUP.md) for complete configuration options.
116
+
117
+ ## Available Tools
118
+
119
+ ### PowerPlatform/Dataverse (72 tools)
120
+
121
+ **Entity & Data (Read - 7 tools):**
122
+ - `get-entity-metadata` - Get entity metadata
123
+ - `get-entity-attributes` - Get entity fields/attributes
124
+ - `get-entity-attribute` - Get specific attribute details
125
+ - `get-entity-relationships` - Get entity relationships
126
+ - `get-global-option-set` - Get option set definitions
127
+ - `get-record` - Get a specific record
128
+ - `query-records` - Query records with OData filters
129
+
130
+ **Entity Management (Write - 7 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
131
+ - `create-entity` - Create new custom entity (table)
132
+ - `update-entity` - Update entity metadata
133
+ - `delete-entity` - Delete custom entity
134
+ - `create-attribute` - Create new attribute (column) - supports all 11 user-creatable types
135
+ - `update-attribute` - Update attribute metadata
136
+ - `delete-attribute` - Delete attribute
137
+ - `create-global-optionset-attribute` - Create attribute using global option set
138
+
139
+ **Relationships (Write - 4 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
140
+ - `create-one-to-many-relationship` - Create 1:N relationship
141
+ - `create-many-to-many-relationship` - Create N:N relationship
142
+ - `update-relationship` - Update relationship metadata
143
+ - `delete-relationship` - Delete relationship
144
+
145
+ **Global Option Sets (Write - 5 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
146
+ - `update-global-optionset` - Update option set metadata
147
+ - `add-optionset-value` - Add new value to option set
148
+ - `update-optionset-value` - Update existing value
149
+ - `delete-optionset-value` - Delete value
150
+ - `reorder-optionset-values` - Reorder values
151
+
152
+ **Forms (Write - 6 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
153
+ - `create-form` - Create new form (Main, QuickCreate, QuickView, Card)
154
+ - `update-form` - Update form XML and metadata
155
+ - `delete-form` - Delete form
156
+ - `activate-form` - Activate form
157
+ - `deactivate-form` - Deactivate form
158
+ - `get-forms` - Get all forms for entity
159
+
160
+ **Views (Write - 6 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
161
+ - `create-view` - Create new view with FetchXML
162
+ - `update-view` - Update view query and layout
163
+ - `delete-view` - Delete view
164
+ - `set-default-view` - Set view as default
165
+ - `get-view-fetchxml` - Get view FetchXML
166
+ - `get-views` - Get all views for entity
167
+
168
+ **Business Rules (Read-only - 2 tools):**
169
+ - `get-business-rules` - List all business rules (for troubleshooting)
170
+ - `get-business-rule` - Get business rule definition (for troubleshooting)
171
+
172
+ **Web Resources (Write - 6 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
173
+ - `create-web-resource` - Create web resource (JS, CSS, HTML, images)
174
+ - `update-web-resource` - Update web resource content
175
+ - `delete-web-resource` - Delete web resource
176
+ - `get-web-resource` - Get web resource by ID
177
+ - `get-web-resources` - Get web resources by name pattern
178
+ - `get-webresource-dependencies` - Get web resource dependencies
179
+
180
+ **Solution Management (Write - 7 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
181
+ - `create-publisher` - Create new solution publisher
182
+ - `get-publishers` - Get all publishers
183
+ - `create-solution` - Create new solution
184
+ - `add-solution-component` - Add component to solution
185
+ - `remove-solution-component` - Remove component from solution
186
+ - `export-solution` - Export solution (managed/unmanaged)
187
+ - `import-solution` - Import solution from base64 zip
188
+
189
+ **Publishing & Validation (Write - 8 tools) - Requires POWERPLATFORM_ENABLE_CUSTOMIZATION=true:**
190
+ - `publish-customizations` - Publish all pending customizations
191
+ - `publish-entity` - Publish specific entity
192
+ - `check-dependencies` - Check component dependencies
193
+ - `check-entity-dependencies` - Check entity dependencies
194
+ - `check-delete-eligibility` - Check if component can be deleted
195
+ - `get-entity-customization-info` - Check if entity is customizable
196
+ - `validate-schema-name` - Validate schema name against rules
197
+ - `preview-unpublished-changes` - Preview unpublished customizations
198
+ - `validate-solution-integrity` - Validate solution for missing dependencies
199
+
200
+ **Plugins (Read - 4 tools):**
201
+ - `get-plugin-assemblies` - List plugin assemblies
202
+ - `get-plugin-assembly-complete` - Full assembly details with validation
203
+ - `get-entity-plugin-pipeline` - Plugin execution order for entity
204
+ - `get-plugin-trace-logs` - Query plugin execution logs
205
+
206
+ **Workflows & Flows (Read - 5 tools):**
207
+ - `get-flows` - List Power Automate flows
208
+ - `get-flow-definition` - Get flow definition and logic
209
+ - `get-flow-runs` - Get flow run history
210
+ - `get-workflows` - List classic workflows
211
+ - `get-workflow-definition` - Get workflow definition
212
+
213
+ ### Azure DevOps (12 tools)
214
+
215
+ **Wikis:**
216
+ - `get-wikis` - List wikis in project
217
+ - `search-wiki-pages` - Full-text search across wikis
218
+ - `get-wiki-page` - Get wiki page content
219
+ - `create-wiki-page` - Create new wiki page (requires write permission)
220
+ - `update-wiki-page` - Update wiki page (requires write permission)
221
+
222
+ **Work Items:**
223
+ - `get-work-item` - Get work item by ID
224
+ - `query-work-items` - Execute WIQL queries
225
+ - `get-work-item-comments` - Get work item comments
226
+ - `add-work-item-comment` - Add comment (requires write permission)
227
+ - `update-work-item` - Update work item fields (requires write permission)
228
+ - `create-work-item` - Create new work item (requires write permission)
229
+ - `delete-work-item` - Delete work item (requires delete permission)
230
+
231
+ ### Figma (2 tools)
232
+
233
+ - `get-figma-data` - Get design data (layout, text, styles, components)
234
+ - `download-figma-images` - Download images (coming in v2)
235
+
236
+ ## Available Prompts
237
+
238
+ The server includes **13 prompts** that provide formatted, context-rich output:
239
+
240
+ **PowerPlatform:**
241
+ - `entity-overview` - Comprehensive entity overview
242
+ - `attribute-details` - Detailed attribute information
243
+ - `query-template` - OData query examples
244
+ - `relationship-map` - Visual relationship mapping
245
+ - `plugin-deployment-report` - Plugin validation for PR reviews
246
+ - `entity-plugin-pipeline-report` - Visual plugin execution pipeline
247
+ - `flows-report` - Power Automate flows report
248
+ - `workflows-report` - Classic workflows report
249
+ - `business-rules-report` - Business rules report (read-only)
250
+
251
+ **Azure DevOps:**
252
+ - `wiki-search-results` - Formatted wiki search results
253
+ - `wiki-page-content` - Formatted wiki page with navigation
254
+ - `work-item-summary` - Comprehensive work item summary
255
+ - `work-items-query-report` - Formatted WIQL query results
256
+
257
+ ## Documentation
258
+
259
+ - **[SETUP.md](SETUP.md)** - Complete setup guide with credentials, troubleshooting, and security
260
+ - **[TOOLS.md](TOOLS.md)** - Full reference for all 86+ tools and 12 prompts
261
+ - **[USAGE.md](USAGE.md)** - Examples and use cases for all integrations
262
+ - **[CLAUDE.md](CLAUDE.md)** - Architecture details and development guide
263
+
264
+ ## Key Features
265
+
266
+ ### PowerPlatform Plugin Validation
267
+
268
+ Automatically validate plugin deployments for PR reviews:
500
269
 
501
270
  ```javascript
271
+ // Get complete validation report
502
272
  await mcpClient.callPrompt("plugin-deployment-report", {
503
273
  assemblyName: "MyCompany.Plugins"
504
274
  });
505
275
  ```
506
276
 
507
- **Sample Report:**
508
- ```markdown
509
- # Plugin Deployment Report: MyCompany.Plugins
510
-
511
- ## Assembly Information
512
- - Version: 1.0.0.5
513
- - Isolation Mode: Sandbox
514
- - Last Modified: 2024-01-15 by John Doe
515
-
516
- ## Registered Steps (8 total)
517
-
518
- ### Update - Account (PreOperation, Sync, Rank 10)
519
- - Plugin: MyCompany.Plugins.AccountPlugin
520
- - Status: ✓ Enabled
521
- - Filtering Attributes: name, revenue, industrycode
522
- - Images:
523
- - PreImage "Target" → Attributes: name, revenue, accountnumber
524
-
525
- ## Validation Results
526
-
527
- ✓ All steps are enabled
528
- ✓ All Update/Delete steps have filtering attributes
529
- ⚠ Warning: 2 steps without images (may need entity data)
530
-
531
- ### Potential Issues
532
- - Account.Delete step missing PreImage - code may fail at runtime
533
- ```
277
+ Returns:
278
+ - Assembly information
279
+ - All registered steps
280
+ - **Automatic validation warnings** for missing filtering attributes, images, disabled steps
534
281
 
535
- ### Entity Pipeline Visualization
282
+ ### Azure DevOps Integration
536
283
 
537
- View the execution pipeline for an entity with the `entity-plugin-pipeline-report` prompt:
284
+ Search documentation and manage work items:
538
285
 
539
286
  ```javascript
540
- await mcpClient.callPrompt("entity-plugin-pipeline-report", {
541
- entityName: "account",
542
- messageFilter: "Update" // Optional
543
- });
544
- ```
545
-
546
- **Sample Report:**
547
- ```markdown
548
- # Plugin Pipeline: Account Entity
549
-
550
- ## Update Message
551
-
552
- ### Stage 1: PreValidation (Synchronous)
553
- 1. [Rank 5] DataValidationPlugin.ValidateAccount
554
- - Assembly: ValidationPlugins v1.0.0
555
- - Filtering: name, accountnumber
556
-
557
- ### Stage 2: PreOperation (Synchronous)
558
- 1. [Rank 10] BusinessLogicPlugin.EnrichAccountData
559
- - Assembly: BusinessLogic v2.0.1
560
- - Filtering: revenue, industrycode
561
- - Images: PreImage
562
-
563
- ### Stage 3: PostOperation
564
- 1. [Rank 10] IntegrationPlugin.SyncToERP (Async)
565
- - Assembly: Integrations v3.1.0
566
- - Filtering: revenue
567
- ```
568
-
569
- ## Azure DevOps Integration
570
-
571
- In addition to PowerPlatform capabilities, this MCP server provides comprehensive Azure DevOps integration for accessing wikis and work items across your organization.
572
-
573
- ### Azure DevOps Configuration
574
-
575
- Set the following environment variables to enable Azure DevOps integration:
576
-
577
- ```bash
578
- # Required: Azure DevOps organization and authentication
579
- AZUREDEVOPS_ORGANIZATION=your-organization-name
580
- AZUREDEVOPS_PAT=your-personal-access-token
581
- AZUREDEVOPS_PROJECTS=Project1,Project2,Project3 # Comma-separated list of allowed projects
582
-
583
- # Optional: API version (default: 7.1)
584
- AZUREDEVOPS_API_VERSION=7.1
585
-
586
- # Optional: Feature flags to control write/delete operations (default: false for all)
587
- AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true # Enable create/update work items
588
- AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE=true # Enable delete work items
589
- AZUREDEVOPS_ENABLE_WIKI_WRITE=true # Enable create/update wiki pages
590
- ```
591
-
592
- #### Creating a Personal Access Token (PAT)
593
-
594
- 1. Go to Azure DevOps → User Settings → Personal Access Tokens
595
- 2. Click "New Token"
596
- 3. Set required scopes:
597
- - **Wiki**: `vso.wiki` (Read)
598
- - **Work Items**: `vso.work` (Read) and optionally `vso.work_write` (Read & Write)
599
- - **Search**: `vso.search` (Read - for wiki search)
600
- 4. Copy the token and set it in `AZUREDEVOPS_PAT` environment variable
601
-
602
- **Security Note**: The PAT is scoped to specific permissions and projects. For maximum security, create separate PATs for read-only vs write operations.
603
-
604
- ### Available Azure DevOps Tools
605
-
606
- #### Wiki Tools (5 tools)
607
- - `get-wikis`: List all wikis in a project
608
- - `search-wiki-pages`: Search wiki content across projects with highlighting
609
- - `get-wiki-page`: Get specific wiki page content and metadata
610
- - `create-wiki-page`: Create new wiki page (requires `AZUREDEVOPS_ENABLE_WIKI_WRITE=true`)
611
- - `update-wiki-page`: Update existing wiki page (requires `AZUREDEVOPS_ENABLE_WIKI_WRITE=true`)
612
-
613
- #### Work Item Tools (7 tools)
614
- - `get-work-item`: Get work item by ID with full details
615
- - `query-work-items`: Execute WIQL queries to find work items
616
- - `get-work-item-comments`: Get discussion comments for a work item
617
- - `add-work-item-comment`: Add comment to work item (requires `AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true`)
618
- - `update-work-item`: Update work item fields using JSON Patch (requires `AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true`)
619
- - `create-work-item`: Create new work item (requires `AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true`)
620
- - `delete-work-item`: Delete work item (requires `AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE=true`)
621
-
622
- ### Available Azure DevOps Prompts
623
-
624
- The server includes 4 prompts for formatted, human-readable Azure DevOps data:
625
-
626
- 1. **wiki-search-results**: Search wiki pages and get formatted results with content snippets
627
- 2. **wiki-page-content**: Get formatted wiki page with navigation context
628
- 3. **work-item-summary**: Comprehensive work item summary with details and comments
629
- 4. **work-items-query-report**: Execute WIQL query and get results grouped by state/type
630
-
631
- ### Azure DevOps Usage Examples
632
-
633
- #### Example 1: Search Wiki Documentation
634
-
635
- ```javascript
636
- // Search for authentication-related wiki pages
287
+ // Search wiki
637
288
  await mcpClient.callPrompt("wiki-search-results", {
638
289
  searchText: "authentication",
639
- project: "MyProject",
640
- maxResults: 10
641
- });
642
- ```
643
-
644
- **Sample Output:**
645
- ```markdown
646
- # Wiki Search Results: "authentication"
647
-
648
- **Project:** MyProject
649
- **Total Results:** 3
650
-
651
- ## Results
652
-
653
- ### 1. Setup-Guide.md
654
- - **Path:** /Setup/Setup-Guide
655
- - **Wiki:** MyProject.wiki
656
- - **Project:** MyProject
657
- - **Highlights:**
658
- - Authentication can be configured using OAuth or Azure AD
659
- - The authentication flow supports SAML and JWT tokens
660
- ```
661
-
662
- #### Example 2: Get Work Item with Comments
663
-
664
- ```javascript
665
- // Get detailed work item summary with all comments
666
- await mcpClient.callPrompt("work-item-summary", {
667
- project: "MyProject",
668
- workItemId: 12345
290
+ project: "MyProject"
669
291
  });
670
- ```
671
-
672
- **Sample Output:**
673
- ```markdown
674
- # Work Item #12345: Login button not working
675
292
 
676
- ## Details
677
- - **Type:** Bug
678
- - **State:** Active
679
- - **Assigned To:** John Doe
680
- - **Created By:** Jane Smith
681
- - **Created Date:** 2024-01-15T10:30:00Z
682
- - **Area Path:** MyProject\\Web\\Authentication
683
- - **Iteration Path:** Sprint 23
684
- - **Tags:** critical, authentication
685
-
686
- ## Description
687
- When users click the login button on the homepage, nothing happens.
688
- The console shows a JavaScript error: "Cannot read property 'submit' of null"
689
-
690
- ## Repro Steps
691
- 1. Navigate to https://myapp.com
692
- 2. Click the "Login" button in the top right
693
- 3. Observe that nothing happens
694
-
695
- ## Comments (3)
696
-
697
- ### John Doe - 1/15/2024 11:00 AM
698
- I've investigated this issue. The problem is in the form validation logic.
699
-
700
- ### Jane Smith - 1/15/2024 2:30 PM
701
- Created PR #456 to fix this issue.
702
- ```
703
-
704
- #### Example 3: Query Active Bugs
705
-
706
- ```javascript
707
- // Find all active bugs assigned to current user
293
+ // Query work items
708
294
  await mcpClient.callPrompt("work-items-query-report", {
709
295
  project: "MyProject",
710
- wiql: "SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.WorkItemType] = 'Bug' AND [System.State] = 'Active' AND [System.AssignedTo] = @me"
296
+ wiql: "SELECT * FROM WorkItems WHERE [State] = 'Active' AND [Assigned To] = @me"
711
297
  });
712
298
  ```
713
299
 
714
- **Sample Output:**
715
- ```markdown
716
- # Work Items Query Results
300
+ ### Figma Design Extraction
717
301
 
718
- **Project:** MyProject
719
- **Total Results:** 5
720
-
721
- ## Active (5)
722
-
723
- - **#12345**: Login button not working
724
- - Type: Bug, Assigned: John Doe
725
- - **#12346**: Password reset email not sent
726
- - Type: Bug, Assigned: John Doe
727
- - **#12347**: Dashboard loads slowly
728
- - Type: Bug, Assigned: John Doe
729
- ```
730
-
731
- #### Example 4: Read Wiki Page
302
+ Extract design specifications in AI-friendly format:
732
303
 
733
304
  ```javascript
734
- // Get formatted wiki page content
735
- await mcpClient.callPrompt("wiki-page-content", {
736
- project: "MyProject",
737
- wikiId: "MyProject.wiki",
738
- pagePath: "/Architecture/API-Design"
305
+ await mcpClient.invoke("get-figma-data", {
306
+ fileKey: "ABC123xyz",
307
+ depth: 3 // Limit depth for large files
739
308
  });
740
309
  ```
741
310
 
742
- **Sample Output:**
743
- ```markdown
744
- # Wiki Page: /Architecture/API-Design
311
+ Returns simplified JSON with:
312
+ - Layout properties
313
+ - Text and typography
314
+ - Colors, fills, strokes
315
+ - Component definitions
316
+ - Deduplicated styles
745
317
 
746
- **Project:** MyProject
747
- **Wiki:** MyProject.wiki
748
- **Git Path:** Architecture/API-Design.md
318
+ ## Security & Permissions
749
319
 
750
- ## Sub-pages
751
- - /Architecture/API-Design/REST-Guidelines
752
- - /Architecture/API-Design/Authentication
753
- - /Architecture/API-Design/Versioning
320
+ All integrations are optional and can be configured independently:
754
321
 
755
- ## Content
322
+ **PowerPlatform:**
323
+ - Requires Azure AD app registration
324
+ - Uses OAuth authentication with automatic token refresh
325
+ - **Customization tools** (optional, opt-in):
326
+ - Set `POWERPLATFORM_ENABLE_CUSTOMIZATION=true` to enable write operations
327
+ - Create entities, attributes, and publish customizations
328
+ - Specify `POWERPLATFORM_DEFAULT_SOLUTION` to auto-add customizations to a solution
329
+ - **WARNING:** These tools make permanent changes to your CRM environment. Use with caution.
756
330
 
757
- # API Design Guidelines
331
+ **Azure DevOps:**
332
+ - Requires Personal Access Token (PAT)
333
+ - Write operations disabled by default (enable with environment variables)
334
+ - Project access controlled via `AZUREDEVOPS_PROJECTS`
758
335
 
759
- This document describes our API design standards...
336
+ **Figma:**
337
+ - Requires Personal Access Token or OAuth
338
+ - Read-only access to design files
760
339
 
761
- ## RESTful Principles
762
- 1. Use nouns for resources
763
- 2. Use HTTP methods correctly...
764
- ```
765
-
766
- #### Example 5: Create Work Item (Write Operations)
340
+ See [SETUP.md](SETUP.md#security-best-practices) for security best practices.
767
341
 
768
- ```javascript
769
- // Create a new bug (requires AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true)
770
- await mcpClient.invoke("create-work-item", {
771
- project: "MyProject",
772
- workItemType: "Bug",
773
- fields: {
774
- "System.Title": "Login page shows 404 error",
775
- "System.Description": "After deploying v2.3, the login page returns 404",
776
- "System.AssignedTo": "john@company.com",
777
- "Microsoft.VSTS.TCM.ReproSteps": "1. Navigate to /login\n2. Observe 404 error",
778
- "System.Tags": "critical; deployment"
779
- }
780
- });
781
- ```
342
+ ## Examples
782
343
 
783
- #### Example 6: Update Work Item State
344
+ ### Ask about PowerPlatform entities
784
345
 
785
- ```javascript
786
- // Update work item to Resolved (requires AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true)
787
- await mcpClient.invoke("update-work-item", {
788
- project: "MyProject",
789
- workItemId: 12345,
790
- patchOperations: [
791
- {
792
- "op": "add",
793
- "path": "/fields/System.State",
794
- "value": "Resolved"
795
- },
796
- {
797
- "op": "add",
798
- "path": "/fields/System.History",
799
- "value": "Fixed in PR #456. Verified in staging environment."
800
- }
801
- ]
802
- });
803
346
  ```
804
-
805
- ### WIQL Query Language
806
-
807
- Work Items queries use WIQL (Work Item Query Language), a SQL-like language:
808
-
809
- **Common WIQL Patterns:**
810
-
811
- ```sql
812
- -- Find all active bugs
813
- SELECT [System.Id], [System.Title]
814
- FROM WorkItems
815
- WHERE [System.WorkItemType] = 'Bug'
816
- AND [System.State] = 'Active'
817
-
818
- -- Find work items changed in last 7 days
819
- SELECT [System.Id], [System.Title], [System.ChangedDate]
820
- FROM WorkItems
821
- WHERE [System.TeamProject] = @project
822
- AND [System.ChangedDate] > @today - 7
823
-
824
- -- Find my active tasks in current sprint
825
- SELECT [System.Id], [System.Title]
826
- FROM WorkItems
827
- WHERE [System.WorkItemType] = 'Task'
828
- AND [System.AssignedTo] = @me
829
- AND [System.State] = 'Active'
830
- AND [System.IterationPath] UNDER @currentIteration
831
-
832
- -- Find user stories with specific tag
833
- SELECT [System.Id], [System.Title], [System.Tags]
834
- FROM WorkItems
835
- WHERE [System.WorkItemType] = 'User Story'
836
- AND [System.Tags] CONTAINS 'authentication'
347
+ User: "Tell me about the Account entity"
348
+ AI: [uses entity-overview prompt]
349
+ Returns comprehensive overview with key fields and relationships
837
350
  ```
838
351
 
839
- **WIQL Macros:**
840
- - `@me` - Current user
841
- - `@today` - Today's date
842
- - `@project` - Current project
843
- - `@currentIteration` - Current iteration path
844
-
845
- ### Integration Use Cases
846
-
847
- #### Use Case 1: AI-Assisted Development with Context
848
-
849
- When working on a feature, the AI can automatically search relevant wiki documentation:
352
+ ### Build OData queries
850
353
 
851
354
  ```
852
- User: "I need to implement OAuth authentication for our API"
853
-
854
- AI Agent:
855
- 1. Searches wiki: search-wiki-pages with "OAuth authentication"
856
- 2. Finds and reads: get-wiki-page for /Architecture/Authentication/OAuth-Setup
857
- 3. Queries related work items: query-work-items for authentication tasks
858
- 4. Provides implementation guidance based on your organization's standards
355
+ User: "Help me query active accounts with revenue over $1M"
356
+ AI: [uses query-template prompt]
357
+ Returns formatted OData query with filters
859
358
  ```
860
359
 
861
- #### Use Case 2: Automated Work Item Management
862
-
863
- AI can help manage work items throughout development:
360
+ ### Plugin PR reviews
864
361
 
865
362
  ```
866
- User: "I fixed bug #12345, mark it as resolved"
867
-
868
- AI Agent:
869
- 1. Gets work item details: get-work-item
870
- 2. Updates state: update-work-item to "Resolved"
871
- 3. Adds comment: add-work-item-comment with fix details
872
- 4. Links to PR if available
363
+ User: "Validate the deployment of MyCompany.Plugins"
364
+ AI: [uses plugin-deployment-report prompt]
365
+ Returns validation report with warnings
873
366
  ```
874
367
 
875
- #### Use Case 3: Sprint Planning Assistant
876
-
877
- AI can analyze sprint work items and provide insights:
368
+ ### Search Azure DevOps wikis
878
369
 
879
370
  ```
880
- User: "Show me all active bugs in our current sprint"
881
-
882
- AI Agent:
883
- 1. Executes WIQL query: query-work-items
884
- 2. Groups results: work-items-query-report by priority/state
885
- 3. Identifies blockers and dependencies
886
- 4. Suggests prioritization based on severity
371
+ User: "Search our wiki for OAuth documentation"
372
+ AI: [uses wiki-search-results prompt]
373
+ Returns formatted search results with snippets
887
374
  ```
888
375
 
889
- #### Use Case 4: Documentation Discovery
890
-
891
- AI can search and summarize documentation across wiki pages:
376
+ See [USAGE.md](USAGE.md) for more examples.
892
377
 
893
- ```
894
- User: "How do we handle database migrations in our projects?"
895
-
896
- AI Agent:
897
- 1. Searches wikis: search-wiki-pages for "database migrations"
898
- 2. Reads relevant pages: wiki-page-content for each result
899
- 3. Summarizes best practices from your team's documentation
900
- 4. Provides code examples from wiki pages
901
- ```
378
+ ## Development
902
379
 
903
- ### Security and Access Control
380
+ ### Local Development Setup
904
381
 
905
- The Azure DevOps integration respects your organization's security boundaries:
382
+ ```bash
383
+ # Clone repository
384
+ git clone <repository-url>
385
+ cd mcp-consultant-tools
906
386
 
907
- 1. **Project Scoping**: Only projects listed in `AZUREDEVOPS_PROJECTS` are accessible
908
- 2. **PAT Permissions**: Access is limited to PAT scopes (read-only, read-write, etc.)
909
- 3. **Feature Flags**: Write operations are disabled by default and must be explicitly enabled
910
- 4. **Audit Trail**: All API operations are logged in Azure DevOps audit logs
387
+ # Install dependencies
388
+ npm install
911
389
 
912
- **Recommended Setup for Different Scenarios:**
390
+ # Build
391
+ npm run build
913
392
 
914
- **Read-Only (Documentation/Research):**
915
- ```bash
916
- AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=false
917
- AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE=false
918
- AZUREDEVOPS_ENABLE_WIKI_WRITE=false
919
- # PAT with: vso.wiki (read), vso.work (read), vso.search (read)
393
+ # Run locally
394
+ node build/index.js
920
395
  ```
921
396
 
922
- **Developer Workflow (Read + Comment):**
923
- ```bash
924
- AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true # Can update work items and add comments
925
- AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE=false # Cannot delete
926
- AZUREDEVOPS_ENABLE_WIKI_WRITE=false # Cannot modify wikis
927
- # PAT with: vso.wiki (read), vso.work_write (read/write), vso.search (read)
928
- ```
397
+ ### Branch Strategy
929
398
 
930
- **Full Access (Team Lead/Admin):**
931
- ```bash
932
- AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true
933
- AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE=true
934
- AZUREDEVOPS_ENABLE_WIKI_WRITE=true
935
- # PAT with: vso.wiki (read/write), vso.work_write (read/write), vso.search (read)
936
- ```
399
+ - **`main`** - Production code (published to npm)
400
+ - **`release/*`** - Testing before merge to main
401
+ - **`feature/*`** - Active development
937
402
 
938
- ## Development & Release Strategy
403
+ **Publishing workflow:**
404
+ 1. Merge to `main`
405
+ 2. `npm version patch|minor|major`
406
+ 3. `npm publish`
407
+ 4. `git push && git push --tags`
939
408
 
940
- This project follows a structured branching strategy for development and releases:
409
+ See [CLAUDE.md](CLAUDE.md) for detailed architecture and development guide.
941
410
 
942
- ### Branch Strategy
411
+ ## Updates
943
412
 
944
- - **`feature/*` branches**: For active development of new features
945
- - Create feature branches off `main`
946
- - Develop and test changes locally
947
- - Do NOT publish to npm from feature branches
948
-
949
- - **`release/*` branches**: For testing versions before release
950
- - Used to test and validate changes before merging to main
951
- - Do NOT publish to npm from release branches
952
- - Example: `release/1.0`, `release/2.0`
953
-
954
- - **`main` branch**: Production-ready code
955
- - **ONLY** publish to npm when main branch is updated
956
- - Merge feature/release branches to main when ready
957
- - Publishing workflow:
958
- 1. Merge changes to `main`
959
- 2. Update version: `npm version patch|minor|major`
960
- 3. Publish: `npm publish`
961
- 4. Push to GitHub: `git push && git push --tags`
413
+ ### Ensuring Latest Version
962
414
 
963
- ### Local Development Setup
415
+ **Using npx (recommended):**
964
416
 
965
- For local testing during development (feature/release branches):
417
+ Always use `@latest` in your configuration:
966
418
 
967
419
  ```json
968
420
  {
969
- "mcpServers": {
970
- "mcp-consultant-tools-dev": {
971
- "command": "node",
972
- "args": ["/absolute/path/to/mcp-consultant-tools/build/index.js"],
973
- "env": { ... }
974
- }
975
- }
421
+ "args": ["-y", "mcp-consultant-tools@latest"]
976
422
  }
977
423
  ```
978
424
 
979
- This allows you to test changes locally without publishing to npm.
425
+ **Using global install:**
426
+
427
+ ```bash
428
+ npm update -g mcp-consultant-tools
429
+ ```
980
430
 
981
431
  ## License
982
432
 
983
433
  MIT
434
+
435
+ ## Support
436
+
437
+ - **Issues**: Report bugs or request features in the GitHub repository
438
+ - **Documentation**: See docs above for complete guides
439
+ - **Architecture**: See [CLAUDE.md](CLAUDE.md) for technical details