Releases: codeurali/mcp-dataverse
Releases · codeurali/mcp-dataverse
v0.5.0
v0.4.5 — Search API v2.0, Attribute Management, 67 tools
What's New in v0.4.5
This release brings 4 new attribute management tools, a full Search API v2.0 upgrade, and a comprehensive bug-fix sprint (BUG-025 through BUG-035) — covering 7 versions since v0.3.8.
🆕 New Tools (v0.4.0 — v0.3.9)
| Tool | Description |
|---|---|
dataverse_create_attribute |
Create columns (String, Integer, Decimal, Money, DateTime, Boolean, Picklist, MultiSelectPicklist, AutoNumber, Image…) |
dataverse_update_attribute |
Update column display name, description, requirement level, searchability |
dataverse_delete_attribute |
Remove custom columns (permanent — confirm: true guardrail) |
dataverse_create_lookup_attribute |
Create a lookup (N:1) column defining a 1:N relationship between two tables |
dataverse_list_connection_references |
List Connection References in the environment |
Total: 67 tools
🔍 Search API v2.0 (v0.4.2 — v0.4.5)
The Dataverse search endpoint is now /api/search/v2.0/query (v1.0 was legacy/deprecated).
Multiple v1.0-only parameters have been corrected for v2.0 compliance:
querytypenow serialized insideoptionsstring (BUG-033)selectmoved inside eachentitiesentry asselectColumns(BUG-034)entitiesarray now sent as a JSON-serialized string (BUG-035)returntotalrecordcountreplaced by v2.0countboolean (BUG-032)searchModeremoved (not a v2.0 top-level parameter) (BUG-031)facetsandorderbynow JSON-serialized as strings (v2.0 spec)- Disabled-search detection expanded to 7 patterns (403/404/400,
0x80048D0B, text variants)
🔒 HTTP Transport Hardening (v0.4.0)
- Bearer token auth with HMAC-SHA256 timing-safe verification (eliminates length timing oracle)
WWW-Authenticate: Bearer realm="MCP Dataverse"header on 401- Configurable CORS via
MCP_HTTP_CORS_ORIGINenv var enableJsonResponsetoggle viaMCP_HTTP_JSON_RESPONSEfor non-streaming clients
🐛 Bug Fixes
| ID | Tool | Fix |
|---|---|---|
| BUG-035 | dataverse_search |
entities serialized as JSON string |
| BUG-034 | dataverse_search |
select → selectColumns inside entities |
| BUG-033 | dataverse_search |
querytype → inside options string |
| BUG-032 | dataverse_search |
returntotalrecordcount → count (v2.0) |
| BUG-031 | dataverse_search |
Removed invalid searchMode top-level param |
| BUG-030 | dataverse_update_entity |
Added hasSysAdmin preflight check |
| BUG-029 | All tools | isError: true now present in content[0].text body |
| BUG-028 | dataverse_delete_attribute |
Structured error for protected/dependent columns |
| BUG-025 | dataverse_update_entity |
Suggestion list filtered to modifiable attributes only |
| A1 | All write tools | Retry on 0x80071151 (customization lock) with exponential backoff |
| A2 | dataverse_create_lookup_attribute |
Timeout no longer masks server-side success |
| A3 | dataverse_get_relationships |
Full pagination via @odata.nextLink |
| A4 | dataverse_get_attribute_option_set |
Now supports MultiSelectPicklist columns |
⚙️ Schema & Quality (v0.4.2 — v0.3.9)
confirmparameter usesconst: trueon all destructive tools (uniform guardrail)dataverse_create_annotationparameters renamed to camelCase (noteText,fileName,mimeType,documentBody)errorCategorynow auto-inferred in all structured error responsesMSCRM.MergeLabels: trueheader on all metadata PUT/PATCH (preserves multi-language labels)suggest_toolsno longer surfaces non-callable internal toolsdetect_duplicatescachesEntitySetNameto eliminate redundant metadata calls- Batch executor: request body boundary uses CRLF (
\r\n) per RFC 2046
📦 Full Changelog
v0.3.8 - Bundled dist, clean git history
- esbuild bundling: dist/ minified (12 files vs 30+ before), no readable source
- Glama & CI badges added to README
- Clean git history
- Roadmap: Developer Tools section (Mermaid ERD, Web API snippets)