Releases: rcb0727/powerplatform-mcp-server
Release list
v1.0.11
Three fixes and a security floor — full detail in CHANGELOG.md:
- SharePoint/OneDrive tools no longer reject real Graph
b!drive ids. get_action_schemaresolves swagger$refparameters instead of rendering "undefined".clone_flowdelivers the stopped clone its description always promised.- Bundled
fast-urifloor raised to 3.1.6 (three high-severity advisories).
Upgrade: quit your AI clients, then npm install -g powerplatform-mcp-server@latest.
v1.0.10
Connection-binding fixes — full detail in CHANGELOG.md:
update_flownow declares the$connectionsworkflow parameter when an update introduces the flow's first connector action — previously the save was rejected withInvalidTemplateand the flow had to be recreated.- A
source: "Invoker"connection reference no longer fails as "Missing connection" when the connection exists — logical connection names are resolved against the environment's actual connections before saving. - Connection errors now name the environment they checked and list the connections that DO exist for that connector there, so an environment mismatch is obvious immediately.
- New
validate_flowbest-practice check: flows using embedded (direct) connections instead of connection references (solution ALM).
Upgrade: quit your AI clients, then npm install -g powerplatform-mcp-server@latest.
v1.0.9
[1.0.9] - 2026-08-16
-
Bug fix — an action whose
inputsis an array is no longer stored as an object.typeof [] === "object", and the preprocessor that fixes expression-bearing payloads spreads its argument into an object literal — so aComposeholding a literal list came back as{"0":"a","1":"b"}.create_flowreported success and the flow then failed at runtime with "the result of the evaluation of 'foreach' expression … is of type 'Object'. The result must be a valid array." An array has nobody/parametersto rewrite, so it now passes through untouched;update_flow's deep merge already guarded this, which is why only newly created flows were affected. -
Bug fix — a destructive tool called without
confirm: truereported SUCCESS while doing nothing. The confirmation prompt was returned as ordinary text, so a refusal was indistinguishable from a completed delete: the MCP result carried noisError, and a script that deleted 59 SharePoint items and checked only that flag reported 59 deletions and performed none. All 36 refusals across 15 tools now raise aConfirmationRequiredError, rendered verbatim so the prompt keeps the id you must confirm against. The interactive flow is unchanged — read the prompt, call again withconfirm: true.delete_flowanddelete_custom_connectoralso had their best-effort name lookup restructured so the prompt names the flow or connector instead of falling back to the id. -
Bug fix —
get_flownow tells you which connection a flow is bound to. A flow's connection reference carries three easily-conflated things: the reference key (shared_jira), the connector type, and the actual bound connection id (connectionName). Only the first two were reported, so "which connection is this trigger using?" could not be answered from the tool.connectionName(andsource) now appear in both the structured output and the summary, which also makes read → rebind a round trip since it is exactly the fieldupdate_flowaccepts back. -
Bug fix — the npm page pointed at the wrong repository.
homepage,bugsandrepositoryall referencedpowerplatform-mcp-docs, which is the other package's public repo — inherited when this package was forked frompowerautomate-mcp0.16.2. Anyone clicking Repository or Issues on the npm listing landed in the wrong project, and bug reports would have arrived on the wrong tracker. They now point atpowerplatform-mcp-server. npm only refreshes this metadata on publish, so the listing corrects itself with this release.
v1.0.8
- Bug fix —
create_connectionno longer produces connections that can never be signed in. The create body always sentconnectionParametersand neverconnectionParameterSets, so for a connector publishing more than one authentication mode the service stored a connection with no auth mode attached. It looked fine — the tool reported "Connection created" and handed over sign-in instructions — but the portal's Fix connection then showed only the parameter form with an Update button and no consent step, so reconnecting looped forever. Field report: an Azure Key Vault connection created this way satUnauthenticatedthrough repeated reconnect attempts and had to be deleted and rebuilt by hand. Azure Key Vault, SQL Server and Azure Blob all publish parameter sets, so this was the general case rather than one connector's quirk.create_connectionnow takesparameterSet, sends the correctconnectionParameterSetsshape, auto-selects when a connector publishes exactly one mode, and refuses up front — naming the valid modes — rather than creating a dead connection. Connector metadata that can't be read is not treated as an error: those connectors fall back to the previous behaviour, so discovery can never become a new way for a working create to fail. - Bug fix —
list_connectionsignored theenvironmentargument. The tool validatedenvironment, logged it, then calledlistConnections()with no argument, so the API always filtered on its own configured environment. Connections are environment-scoped, so the result was a confident answer about the wrong environment. Field report:list_connections({environment: <production>})returned the DEFAULT environment's 82 connections — which read as "Jira is already connected in Production" when Production had none, and a flow migration was planned on the strength of it. The environment now reaches the API call and is validated like any other environment id; omitting it still uses the configured default.build_flowtakes no environment parameter and is unaffected. - Bug fix —
validate_flowno longer reports "Unbalanced brackets" on valid index accessors. The pattern that finds bare@function()expressions ended in a greedy.*\), which backtracks to the LAST)in the string — so anything closing after it was cut off.@variables('EinToCompany')?[outputs('Parse_EIN')]was captured asvariables('EinToCompany')?[outputs('Parse_EIN')and then confidently reported as "Unbalanced brackets: missing ']'" on a flow that was valid and already deployed. A truncated capture is worse than none: it becomes a definite error about correct code. Expressions are now located by regex and terminated by a scanner that tracks paren/bracket depth, respects''escapes inside string literals, and follows chained accessors (?['a'],.value,[0]) to the real end. Genuinely unbalanced expressions are still reported. - Bug fix — a misspelled parameter no longer reports success while doing nothing. Tool inputs are validated with zod, which strips keys it doesn't recognize rather than rejecting them — so a parameter named slightly wrong was silently discarded and the tool cheerfully reported that it had done the work. Field report:
update_flowwas called withpatchTrigger(the real name istrigger, andpatchActionsnext to it makes the wrong name look right), the tool answered "Updated …", and the flow's trigger was never touched; the mistake only surfaced later when the schedule hadn't changed. Unknown top-level parameters are now rejected with an error that names the likely intended parameter ('patchTrigger' (did you mean 'trigger'?)) and lists the valid ones. Checked against each tool's published JSON Schema, so it needs no per-tool upkeep; nested objects —fields,data, a flow'striggerandactions— stay deliberately open-ended and are not policed. - Bug fix —
get_run_actionsnow surfaces the real error on failed actions. The platform's run-action records carry anerrorobject for skipped actions (the runAfter noise) but leave it null for many genuine connector failures — so the one action that actually failed reportederror: nullwhile the AI had to dig the real 400 out of the raw outputs. Failed actions with no platform error now derive one from the already-fetched outputs ([HTTP 400] …the vendor's actual message…), platform-provided errors are untouched, and the summary line now counts skipped actions separately. - Bug fix — connector actions that take an object parameter save again. Some connector operations declare a parameter as an object rather than a string — Files.com's Move File or Folder takes a
{ destination }body, for example. When such a parameter contained an expression, the rewrite that keeps expressions out of object payloads emitted string interpolation (@{json(...)}), whose result is a String. Power Automate type-checks connector parameters against the connector's definition when the flow is saved, so it refused the flow outright: "Input parameter 'body' validation failed … type/format 'String' is not convertible to type/format 'Object'." Connector parameters now use the bare@json(...)form, which keeps the declared object type while still being the single expression that avoids object-level evaluation at save time. HTTP action bodies are untouched, and the runtime JSON-escaping of every substituted value is unchanged.
v1.0.7 — Power Pages bug fixes
Provisioning no longer reports false failures (operation polls now carry api-version), and site/component tools survive tenants whose mspp_* virtual tables error on retrieve-by-key.
See CHANGELOG.md · Install: npm install -g powerplatform-mcp-server@latest
v1.0.6 — errors that name the real problem
Power Pages permission failures (the API's D004) now say a role grant is needed instead of "Authentication failed"; InvalidApiVersion names your installed version and gives the exact update command; --setup --client skip works as documented.
See CHANGELOG.md · Install: npm install -g powerplatform-mcp-server@latest
v1.0.5 — switch environments mid-chat + update notices
switch_environment (227 → 228 tools): work across dev/test/prod without leaving the chat — switch by environment name or ID and every tool re-points, including Dataverse. Session-only: nothing is written to your configuration, and while switched every destructive tool's output names the active environment.
You'll hear about new versions in chat: a one-line note once per session with the exact update command. PA_MCP_UPDATE_NOTICE=0 disables.
Under the hood: better-sqlite3 13 — bundled prebuilds, no compiler ever.
See CHANGELOG.md · Install: npm install -g powerplatform-mcp-server@latest
v1.0.4 — Dataverse depth: 227 tools
Eleven new Dataverse tools (216 → 227): FetchXML aggregates and joins, option-set and relationship schema lookups, schema write (columns + lookups), $batch with changesets, alternate-key upsert, row assignment, N:N/1:N association, and full-text relevance search — plus categorized Dataverse errors, auth errors that name the real cause when Entra refuses to renew the Azure CLI session, and a new Rolling back guide in INSTALL.md.
See CHANGELOG.md for details.
Install: npm install -g powerplatform-mcp-server@latest