xrm-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Test connectivity to an XRM/Dataverse environment and verify authentication. Call this first to verify your setup and connection to the Dataverse environment. |
| list_tablesA | Lists Dataverse tables. Defaults to custom tables only, excluding Microsoft-prefixed solution tables (msdyn_, msfp_, adx_ etc). Use prefix='na_' to filter to a specific publisher. Use exclude_ms_prefixes=False to see all custom tables. |
| describe_tableA | Get columns, types and descriptions for an XRM table. Call this before querying when you need to know column names for $select or $filter. |
| find_tableA | Search for a table by display name or partial logical name. Use this when the user gives a friendly name like 'hour entry' or 'hours' and you don't know the exact logical name. Returns all candidate matches from this specific environment — do not use workspace files or project notes to infer table names. |
| query_recordsA | Query records from an XRM/Dataverse table. |
| create_recordC | Create a single record in an XRM table. |
| update_recordB | Update fields on a single existing XRM record. |
| upsert_recordA | Create or update a record matched by an alternate key column. Use this for sync/import scenarios where you don't have the record GUID. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Each tool targets a distinct operation (CRUD, metadata queries, connectivity test) with no functional overlap, making it easy for an agent to select the correct one.
Most tools follow a clear verb_noun pattern (create_record, query_records, etc.), but ping uses a single verb, which is a minor inconsistency.
The tool count of 8 is well-scoped for a Dataverse MCP server, covering essential operations without unnecessary bloat.
The tool set covers creation, update, query, and metadata, but lacks a delete_record tool and a direct get-by-ID tool, which may cause agent failures in typical workflows.