Skip to content

DYN-10553: Consume DynamoMCP NuGet as a built-in package#17165

Merged
jasonstratton merged 10 commits into
masterfrom
DYN-10553-builtin-package
Jun 22, 2026
Merged

DYN-10553: Consume DynamoMCP NuGet as a built-in package#17165
jasonstratton merged 10 commits into
masterfrom
DYN-10553-builtin-package

Conversation

@RobertGlobant20

@RobertGlobant20 RobertGlobant20 commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

What

Consumes the DynamoMCP NuGet (DynamoVisualProgramming.DynamoMCP, published by the DynamoMCP repo to nuget.org, DYN-10553) and ships it as a built-in package under Built-In Packages\packages\DynamoMCP. Mirrors the PythonNet3Engine NuGet-consume pattern.

Changes

  • src/DynamoCoreWpf/DynamoCoreWpf.csproj: pinned DynamoVisualProgramming.DynamoMCP PackageReference to the published [0.4.0] (GeneratePathProperty + ExcludeAssets="all") and a BuildDynamoMcpDynamoPackage target that copies the package verbatim into Built-In Packages\packages\DynamoMCP.
  • .github/scripts/check_file_version.ps1: exclude DynamoMCP's independently-versioned binaries (same treatment as TuneUp / DSPythonNet3). The package bundles its own DynamoPlayer 7.0.6 binaries under bin/mcp_server/ (runtime deps of MCPServer.dll, loaded in an isolated AssemblyLoadContext), which carry DynamoPlayer's version rather than the Dynamo build version.

Notes

  • The DynamoMCP NuGet is published; the version pin is hard-pinned to the exact [0.4.0] release for this line and should be bumped in lockstep with future DynamoMCP releases.

🤖 Generated with Claude Code

Add a pinned DynamoMCP PackageReference (GeneratePathProperty + ExcludeAssets=all)
and a BuildDynamoMcpDynamoPackage target that copies the package into
Built-In Packages/packages/DynamoMCP, mirroring the PythonNet3Engine NuGet-consume
pattern. Exclude DynamoMCP's independently-versioned binaries from
check_file_version.ps1 (same treatment as TuneUp / DSPythonNet3).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See the ticket for this pull request: https://jira.autodesk.com/browse/DYN-10553

@RobertGlobant20 RobertGlobant20 deleted the DYN-10553-builtin-package branch June 17, 2026 03:27
@RobertGlobant20 RobertGlobant20 restored the DYN-10553-builtin-package branch June 17, 2026 03:29

@jasonstratton jasonstratton left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved pending the identification of the build version of DynamoMCP ... and resolution to the DynamoPlayer binaries question.

"JsonSchema.Net.dll",
"JsonPointer.Net.dll",
"Json.More.dll",
"DynamoPlayer.*.dll"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you including Player as part of the package?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes — DynamoPlayer 7.0.6 is bundled under bin/mcp_server/ as a runtime dependency of MCPServer.dll (loaded in an isolated AssemblyLoadContext). Core Dynamo doesn't ship DynamoPlayer, so the package carries its own copy. It's in the exclusion list only because those DLLs use DynamoPlayer's version (7.0.6), not the Dynamo build version — same as TuneUp.dll/DSPythonNet3*. Since the only DynamoPlayer binaries in the tree are this package's copies, the exclusion can't hide a Dynamo-owned mismatch. (Build version is now pinned to 0.3.0.)

Comment thread src/DynamoCoreWpf/DynamoCoreWpf.csproj Outdated
The DynamoMCP NuGet wraps the assembled package under bin\, so $(PkgDynamoMCP)\bin IS the package
layout (pkg.json + bin\ + bin\mcp_server\ + extra\). Copy it verbatim into Built-In Packages.
-->
<Target Name="BuildDynamoMcpDynamoPackage" AfterTargets="Build" Condition="'$(PkgDynamoMCP)' != ''">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PythonNet3Engine does not have the conditional? Is it necessary? Will it be removed once the exact version is identified? ... I don't think it hurts anything though.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call — it isn't necessary. I added the condition defensively while the version was a [1.0.0] placeholder; now that it's pinned to the published [0.3.0] the package always restores, so I've removed the condition to match the PythonNet3Engine target (commit a76b07b).

RobertGlobant20 and others added 2 commits June 17, 2026 15:06
Bump the DynamoMCP PackageReference from the placeholder [1.0.0] to the first
published feed version [0.3.0]. Verified locally: restores from team-dynamo-nuget
and BuildDynamoMcpDynamoPackage lays it out under Built-In Packages\packages\DynamoMCP.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…onNet3Engine)

The Condition guard was only needed while the version was a placeholder; with the
package pinned to the published 0.3.0 it always restores, so remove it to match the
PythonNet3Engine target. Per review feedback.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@RobertGlobant20 RobertGlobant20 marked this pull request as ready for review June 17, 2026 22:10
Copilot AI review requested due to automatic review settings June 17, 2026 22:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR integrates the DynamoMCP NuGet into Dynamo as a shipped built-in package under Built-In Packages\packages\DynamoMCP, following the existing pattern used for other externally-versioned components.

Changes:

  • Added a pinned PackageReference to DynamoMCP (with GeneratePathProperty + ExcludeAssets="all") to fetch package assets without adding compile/runtime references.
  • Added an MSBuild target to copy the NuGet’s packaged layout into the build output’s Built-In Packages folder.
  • Updated the GitHub version-check script to ignore DynamoMCP’s independently-versioned binaries.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
src/DynamoCoreWpf/DynamoCoreWpf.csproj Adds the DynamoMCP PackageReference and a post-build copy target to stage it as a built-in package.
.github/scripts/check_file_version.ps1 Excludes DynamoMCP-related binaries from strict version matching against DynamoSandbox.exe.

Comment on lines +2228 to +2236
<Target Name="BuildDynamoMcpDynamoPackage" AfterTargets="Build">
<PropertyGroup>
<DynamoMcpDestRoot>$(OutputPath)\Built-In Packages\packages\DynamoMCP\</DynamoMcpDestRoot>
</PropertyGroup>
<ItemGroup>
<DynamoMcpPkg Include="$(PkgDynamoMCP)\bin\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(DynamoMcpPkg)" DestinationFolder="$(DynamoMcpDestRoot)%(RecursiveDir)" SkipUnchangedFiles="True" />
</Target>
Comment thread src/DynamoCoreWpf/DynamoCoreWpf.csproj Outdated
different DynamoVisualProgramming.* API. Bump in lockstep with the DynamoMCP release for this line.
-->
<ItemGroup>
<PackageReference Include="DynamoMCP" Version="[0.3.0]" GeneratePathProperty="true" ExcludeAssets="all" />
Consume the DynamoMCP built-in package as the signed
DynamoVisualProgramming.DynamoMCP NuGet published to nuget.org, and
hard-pin to the exact 0.4.0 release for this line. Updates the path
property and comments to the renamed package id.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

The NuGet wraps the assembled package under bin\, so $(PkgDynamoVisualProgramming_DynamoMCP)\bin IS
the package layout (pkg.json + bin\ + bin\mcp_server\ + extra\). Copy it verbatim into Built-In Packages.
-->
<Target Name="BuildDynamoMcpDynamoPackage" AfterTargets="Build">

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leaving as-is intentionally: this target mirrors the PythonNet3Engine pattern (BuildPythonNet3EngineDynamoPackage in DynamoCore.csproj), which is likewise unguarded. A full build always restores, so the empty-path/--no-restore case doesn't occur in CI. If we want this hardening, the right move is a separate cleanup adding an Exists() condition to both targets so they stay consistent.

different DynamoVisualProgramming.* API. Bump in lockstep with the DynamoMCP release for this line.
-->
<ItemGroup>
<PackageReference Include="DynamoVisualProgramming.DynamoMCP" Version="[0.4.0]" GeneratePathProperty="true" ExcludeAssets="all" />

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — the PR description was stale. Updated it to reflect the published, hard-pinned [0.4.0].

Comment thread src/DynamoCoreWpf/DynamoCoreWpf.csproj Outdated
RobertGlobant20 and others added 3 commits June 19, 2026 07:54
Switch the BuildDynamoMcpDynamoPackage copy glob from **\*.* to **\* so
extensionless files (e.g. LICENSE/NOTICE) are included, matching the
"copy verbatim" intent stated in the surrounding comment.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Shipping DynamoMCP as a built-in package adds a third built-in package
(alongside PythonNet3Engine and TuneUp) and a fourth package-requested
view extension ("Dynamo MCP View Extension"). Update the affected
expectations, mirroring the DYN-9388 PythonNet3 built-in change:

- ExpectedNumberOfBuiltInPackages 2 -> 3 (PackageManagerUITests).
- Add "Dynamo MCP View Extension" to the loaded view extension set.
- RequestedExtensions counts 2 -> 3 and 3 -> 4.

Verified by running the six tests against a clean package environment.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@RobertGlobant20

Copy link
Copy Markdown
Contributor Author

merging even when Dynamo SelfServe check if failing, due that the 3 regression tests reported were introduced in a different PR (#17147).
image

@jasonstratton jasonstratton merged commit 0cb9686 into master Jun 22, 2026
29 of 32 checks passed
@jasonstratton jasonstratton deleted the DYN-10553-builtin-package branch June 22, 2026 17:31
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants