mcp-dataverse
npm
v0.7.8
Published by codeurali — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.
The most complete MCP server for Microsoft Dataverse. 81 production-ready tools for AI agents: OData & FetchXML queries, CRUD, metadata, solutions, audit, batch operations, schema write, record access and more. Device code, client credentials, and managed
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:
The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.
2. Client adoption risk — 100 − 11 = 89. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −10 | capability blast radius (critical) — client exposure if the model is manipulated |
| −1 | publisher verification (public source) — no provenance, but the source is public and inspectable |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
This server (without client built-ins) exposes a complete data-exfiltration chain: dataverse_download_file_column → dataverse_get_environment_variable ⇒ dataverse_batch_execute. Untrusted input is ingested, private data is read, and it can be sent to an external sink — and at least one leg is a direct schema wire (⇒), where a producer's output drops straight into a free-text parameter of the next tool, so the chain needs little agent cooperation. Static analysis proves the primitive exists, not that a specific run will occur.
Fix: Remove one leg of the trifecta: isolate untrusted-input tools from secret-reading tools and from egress tools, or require human approval between them.
Location: flow dataverse_download_file_column → dataverse_get_environment_variable → dataverse_batch_execute
In the server's implementation (`dist/doctor.js:4`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: ;import{exec as Pe}from"child_process";import{platform as G}from"process";function Z(s){let e=G==="win32"?`echo|set /p="
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/doctor.js
In the server's implementation (`dist/server.js:4`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: ;import{exec as Fr}from"child_process";import{platform as Ft}from"process";function Bt(r){let a=Ft==="win32"?`echo|set /
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/server.js
In the server's implementation (`dist/setup-auth.js:4`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: ";import{exec as B}from"child_process";import{platform as S}from"process";function I(t){let e=S==="win32"?`echo|set /p="
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/setup-auth.js
Tool "dataverse_batch_execute" takes a URL/host parameter "url" with no allowlist/pattern. An outbound-request tool with an unbounded destination enables SSRF and cloud-metadata access (e.g. 169.254.169.254).
Fix: Allowlist destinations or constrain the parameter; block private/link-local addresses server-side.
Location: tool dataverse_batch_execute · inputSchema.properties.url
In a packaging/dev/install script (shipped, but not the server runtime) (`dist/install.js:2`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: ";import{exec as Z}from"child_process";import{platform as A}from"process";import{createCipheriv as O,createDecipheriv as
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/install.js
Each tool and what it can reach — statically extracted from the published source.
dataverse_batch_executenetwork egressdataverse_download_file_columningests untrusted inputdataverse_get_environment_variablereads sensitive datadataverse_open_table_browseringests untrusted inputdataverse_plugin_trace_viewer_get_logsreads sensitive datadataverse_set_environment_variablereads sensitive datadataverse_upload_file_columnnetwork egressfile_operationsingests untrusted inputanalyze-org-healthno sensitive capabilityanalyze-workflowno sensitive capabilityAvailable Tablesno sensitive capabilitybatch_schema_workflowno sensitive capabilitybulk_operationsno sensitive capabilitycreate_recordno sensitive capabilitydata-quality-checkno sensitive capabilityDataverse FetchXML Workbenchno sensitive capabilityDataverse Plugin Trace Viewerno sensitive capabilityDataverse RBAC Inspectorno sensitive capabilityDataverse Schema Explorerno sensitive capabilityDataverse Table Browserno sensitive capabilitydataverse_add_role_privilegesno sensitive capabilitydataverse_assignno sensitive capabilitydataverse_assign_role_to_teamno sensitive capabilitydataverse_assign_role_to_userno sensitive capabilitydataverse_associateno sensitive capabilitydataverse_associate_bulkno sensitive capabilitydataverse_change_detectionno sensitive capabilitydataverse_check_record_accessno sensitive capabilitydataverse_createno sensitive capabilitydataverse_create_annotationno sensitive capabilitydataverse_create_attributeno sensitive capabilitydataverse_create_environment_variableno sensitive capabilitydataverse_create_lookup_attributeno sensitive capabilitydataverse_create_relationshipno sensitive capabilitydataverse_create_sitemapno sensitive capabilitydataverse_create_tableno sensitive capabilitydataverse_create_web_resourceno sensitive capabilitydataverse_deleteno sensitive capabilitydataverse_delete_attributeno sensitive capabilitydataverse_detect_duplicatesno sensitive capabilitydataverse_disassociateno sensitive capabilitydataverse_environment_capabilitiesno sensitive capabilitydataverse_execute_actionno sensitive capabilitydataverse_execute_bound_actionno sensitive capabilitydataverse_execute_bound_functionno sensitive capabilitydataverse_execute_fetchxmlno sensitive capabilitydataverse_execute_functionno sensitive capabilitydataverse_fetchxml_workbench_executeno sensitive capabilitydataverse_fetchxml_workbench_list_attributesno sensitive capabilitydataverse_fetchxml_workbench_list_tablesno sensitive capabilitydataverse_getno sensitive capabilitydataverse_get_annotationsno sensitive capabilitydataverse_get_attribute_option_setno sensitive capabilitydataverse_get_audit_logno sensitive capabilitydataverse_get_entity_keyno sensitive capabilitydataverse_get_guideno sensitive capabilitydataverse_get_option_setno sensitive capabilitydataverse_get_plugin_trace_logsno sensitive capabilitydataverse_get_relationshipsno sensitive capabilitydataverse_get_role_privilegesno sensitive capabilitydataverse_get_table_metadatano sensitive capabilitydataverse_get_user_rolesno sensitive capabilitydataverse_get_workflowno sensitive capabilitydataverse_get_workflow_trace_logsno sensitive capabilitydataverse_grant_accessno sensitive capabilitydataverse_impersonateno sensitive capabilitydataverse_list_business_unitsno sensitive capabilitydataverse_list_connection_referencesno sensitive capabilitydataverse_list_custom_actionsno sensitive capabilitydataverse_list_dependenciesno sensitive capabilitydataverse_list_global_option_setsno sensitive capabilitydataverse_list_guidesno sensitive capabilitydataverse_list_plugin_stepsno sensitive capabilitydataverse_list_rolesno sensitive capabilitydataverse_list_tablesno sensitive capabilitydataverse_list_teamsno sensitive capabilitydataverse_list_tool_tagsno sensitive capabilitydataverse_list_usersno sensitive capabilitydataverse_list_viewsno sensitive capabilitydataverse_list_workflowsno sensitive capabilitydataverse_merge_recordsno sensitive capabilitydataverse_open_fetchxml_workbenchno sensitive capabilitydataverse_open_plugin_trace_viewerno sensitive capabilitydataverse_open_rbac_inspectorno sensitive capabilitydataverse_open_schema_explorerno sensitive capabilitydataverse_publish_customizationsno sensitive capabilitydataverse_queryno sensitive capabilitydataverse_query_associationsno sensitive capabilitydataverse_rbac_inspector_get_profile_permissionsno sensitive capabilitydataverse_rbac_inspector_get_role_privilegesno sensitive capabilitydataverse_rbac_inspector_get_user_rolesno sensitive capabilitydataverse_rbac_inspector_list_field_profilesno sensitive capabilitydataverse_rbac_inspector_list_rolesno sensitive capabilitydataverse_rbac_inspector_list_usersno sensitive capabilitydataverse_remove_role_from_userno sensitive capabilitydataverse_replace_role_privilegesno sensitive capabilitydataverse_resolve_entity_nameno sensitive capabilitydataverse_retrieve_dependencies_for_deleteno sensitive capabilitydataverse_retrieve_multiple_with_pagingno sensitive capabilitydataverse_revoke_accessno sensitive capabilitydataverse_schema_explorer_get_entityno sensitive capabilitydataverse_schema_explorer_list_tablesno sensitive capabilitydataverse_searchno sensitive capabilitydataverse_set_table_iconno sensitive capabilitydataverse_set_workflow_stateno sensitive capabilitydataverse_suggest_toolsno sensitive capabilitydataverse_table_browser_get_rowsno sensitive capabilitydataverse_table_browser_list_tablesno sensitive capabilitydataverse_updateno sensitive capabilitydataverse_update_attributeno sensitive capabilitydataverse_update_entityno sensitive capabilitydataverse_upsertno sensitive capabilitydataverse_whoamino sensitive capabilitydelete_recordno sensitive capabilityexplore_schemano sensitive capabilityinspect_auditno sensitive capabilitymanage_solutionno sensitive capabilityquery_datano sensitive capabilitysampleSizeno sensitive capabilityschema-reviewno sensitive capabilitysearch_datano sensitive capabilitysecurity-auditno sensitive capabilityServer Instructionsno sensitive capabilitystatusFilterno sensitive capabilityTable Relationshipsno sensitive capabilityTable Schemano sensitive capabilitytableNameno sensitive capabilityupdate_recordno sensitive capabilityworkflowNameno sensitive capabilityCross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).
Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v0.7.8 latest |
B 89/100 | 6 | 1.13.0 | 2026-09-07 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan mcp-dataverse --online
Independent packages implementing the same tool, scanned with the same engine. Compare all 4 side by side →
Microsoft Dataverse Model Context Protocol server
An MCP server for interacting with Microsoft Dataverse environments during development
MCP server for Microsoft Dataverse API
Security scan results for the A5sql MCP server.
Expose AgentsKit tools as an MCP server — use them from Claude Desktop, Cursor, Windsurf, or any MCP host.
MCP server for Aiven cloud data platform - manage PostgreSQL, Kafka, and other services
MCP Server for All-Inkl.com hosting via KAS API
Structured aquarium, marine, terrarium and paludarium data for AI agents.
MCP server that gives your AI agent real vehicle data — specs, representative images, federal recalls, owner complaints, service bulletins, defect investigations, and OBD-II DTC reference — from the CarVector API.