← ClaudeAtlas

mcp-releaselisted

Packaging, versioning and CI for this repo's two MCP servers — how they pack as .NET tools, why the NuGet package ids are owner-prefixed, the four Nerdbank.GitVersioning decisions (including the publicReleaseRefSpec spelling that fails silently), and the constraints the two GitHub Actions workflows must keep. Use before editing version.json, Directory.Build.props, a csproj's package metadata, anything under .github/workflows/, or when cutting a release or adding a new server.
jgbright/mcp-dotnet · ★ 0 · AI & Automation · score 70
Install: claude install-skill jgbright/mcp-dotnet
# Packaging, versioning and CI ## Packing as .NET tools **Both servers pack as .NET tools** (`PackAsTool`, command names `teams-mcp` and `ado-mcp`), so they can be installed and launched by name rather than by project path — see the README. Shared package metadata lives in `Directory.Build.props`, which every project in the repo inherits; the test projects opt out of packing with `IsPackable=false`. A new server means adding `PackAsTool`/`PackageId`/`ToolCommandName`/`Description` to its csproj, and copying `Install.cs` with its `ToolCommand`, `DefaultName` and `EnvEntries` changed — `install` registers a server under the command name it was packed with. Both packages are **published on nuget.org**, so an id is now a permanent, public commitment rather than a placeholder: the ids are **owner-prefixed** (`JasonBright.Mcp.Teams`, `JasonBright.Mcp.AzureDevOps`) because `AzureDevOpsMcp`, `AdoMcp` and `AdoMcpServer` are all taken there by unrelated packages, and renaming one after the fact is not possible — the old id keeps existing and the new one starts from no downloads. The `JasonBright.` prefix is reserved, and the trusted publishing policy covers every package its owner owns, so a third server picks an id under the prefix and publishes with nothing to register and no key to issue. The license is MIT (`PackageLicenseExpression` plus a root `LICENSE`). ## Versioning **The version is `version.json` plus git height, not a property.** Nerdbank.GitVersioning (a `PrivateAssets=