Deep-dives into Dynamics 365 entity metadata: fields with types, option sets, relationships, keys. Triggers on entity structure queries like 'show fields on X'.
npx claudepluginhub nickmeron/dataverse-mcp-serverThis skill is limited to using the following tools:
The user wants to explore or understand the metadata structure of their Dynamics 365 environment.
Creates and modifies Dataverse tables, columns, relationships, forms, and views using Python SDK and Web API. Activates on 'add column', 'create table', 'add relationship', 'create form'.
Sets up Dataverse tables, columns, and relationships for Power Pages sites using OData API from ER diagrams or AI analysis after user approval.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
The user wants to explore or understand the metadata structure of their Dynamics 365 environment.
Argument provided: $ARGUMENTS
Call list_environments and ask the user which environment to explore. Call select_environment.
list_entities (optionally with custom_only: true) to show what's availablelist_entities with a filterFor the target entity, gather all metadata in parallel where possible:
get_entity_details → basic info (display name, logical name, primary ID/name, system vs custom)get_entity_attributes (with include_option_sets: true) → all fields with their types and option set valuesget_entity_relationships → all One-to-Many, Many-to-One, Many-to-Many relationshipsget_entity_keys → alternate keysFormat the output clearly — think of it like the tabs in the metadata viewer app:
Present as a table:
| Logical Name | Display Name | Type | Required | Custom |
|---|---|---|---|---|
| Sort by logical name. Highlight: |
For every Picklist / Status / State field, show the values:
| Value | Label |
|---|---|
| Group by field name. |
Show separately:
If any exist, list the key name and which fields compose it.
After presenting, ask if the user wants to:
new_, contoso_)EntitySetName is the plural name used in API URLs — this is what query_records needs_value suffix fields — these are the raw GUID values of lookup fieldsstatecode (State) and statuscode (Status Reason) exist on every entity — always show their option values