Skip to content

Releases: Byggarepop/dotnet-mcp-orchestrator

v0.2.3

25 Jun 13:59
e0a25ae

Choose a tag to compare

Added

  • Pack the registry manifest at .mcp/server.json inside the NuGet package. nuget.org reads this
    embedded file to render the "MCP Server" tab and the one-click VS Code configuration; without it
    nuget.org reported "this package does not include a server.json file". Also added
    registryBaseUrl to the package entry for parity with the canonical MCP-server package shape.

v0.2.2

25 Jun 10:20
ca5f9a3

Choose a tag to compare

Added

  • McpServer NuGet package type (alongside the existing DotnetTool type), so the package is
    discoverable under nuget.org's "MCP Server" package-type filter. The tool install path is
    unaffected — both package types ship in the same .nupkg.

v0.2.1

25 Jun 10:00
fb45031

Choose a tag to compare

Fixed

  • Corrected the Official MCP Registry ownership marker to the case-sensitive namespace casing
    io.github.Byggarepop/dotnet-mcp-orchestrator (was byggarepop). The registry matches the
    mcp-name: marker in the packed README against the server name exactly, and GitHub OIDC grants
    the namespace under the login's real casing (Byggarepop), so the lowercase 0.2.0 marker could
    not be verified. No functional changes.

v0.2.0

24 Jun 20:06
f501277

Choose a tag to compare

Added

  • profile subcommand that measures the token economics of progressive tool discovery — the delta
    between the naive "load every manifest every turn" baseline and the orchestrator's actual
    progressive cost. Two modes: profile --config <path> (static: resting floor, naive baseline, and
    a best/worst envelope where worst is honestly higher than naive) and
    profile --trace <session.jsonl> --config <path> (replays a real session into the per-turn curve —
    active vs. naive, load events, never-loaded savings, and break-even, including the honest
    "overhead never repaid" case). --format json emits a snake_case superset for tooling, and
    --assert-favorable exits non-zero so CI can gate on the orchestrator staying favorable for a
    canonical session.
  • profile --host-config <path>: a read-only "try before you keep it" path. Points the profiler at
    an existing MCP host config (.mcp.json / .vscode/mcp.json / Cursor / Claude Desktop) instead of
    an orchestrator config — its stdio servers are imported in memory and measured, writing
    nothing
    (remote http/sse servers are listed and skipped). Run it as a one-shot with
    dotnet tool execute McpOrchestrator profile --host-config <path> (or dnx …) to see the savings
    with no global install and nothing to uninstall. The host-config parser is shared with init.
  • Optional session-trace side-channel: run with --trace-out <path> (or
    MCP_ORCHESTRATOR_TRACE_OUT) to append one JSONL line per discover/route interaction for later
    replay. Off by default; the server hot path is unaffected.
  • Local, deterministic token counting via Microsoft.ML.Tokenizers (cl100k_base, embedded vocab —
    offline and CI-friendly), behind an ITokenCounter seam so a live-usage backend can replace it.
    Every report discloses the tokenizer and a ±10% cross-model tolerance.
  • init subcommand that adopts an existing MCP host config in one step: mcp-orchestrator init <host-config> lifts every stdio server out of .mcp.json / .vscode/mcp.json (or any
    mcpServers / servers map — Cursor, Claude Desktop) into a generated orchestrator.config.json
    (one capability each, with a TODO summary placeholder and no instructions — the summary
    drives routing), backs up the host config, then rewrites it to launch only the orchestrator
    pointed at the new catalog via MCP_ORCHESTRATOR_CONFIG. Remote (http/sse) servers are left in
    place; the user only fills in the one-line summary per capability. --dry-run previews both
    files, --force overwrites an existing catalog, --command <path> targets the AOT binary, and
    --dev-feed <path> wires the orchestrator to run from a local folder feed (latest local build).
  • pack-local.ps1: packs the project as the pinned 9.9.9-dev version into nupkg/local-feed and
    evicts the cached copy, so a host launching the tool with dotnet tool execute McpOrchestrator --version 9.9.9-dev --source <feed> --yes always runs the latest local code.

Changed

  • instructions is now an optional (nullable) capability field, omitted from output and from
    list_capabilities when absent, rather than always emitted as an empty string.

v0.1.1

22 Jun 18:22
f4e98b9

Choose a tag to compare

Changed

  • Renamed the default log folder from ~/.dotnet-orchestrator-mcp to ~/.mcpOrchestrator, aligning
    it with the McpOrchestrator name. Existing ~/.dotnet-orchestrator-mcp folders are left in place
    and can be deleted; override with MCP_ORCHESTRATOR_LOG_DIR as before.

v0.1.0

21 Jun 19:44
d2d6eed

Choose a tag to compare

First release.

Added

  • Pure three-tool MCP relay — list_capabilitiesdiscover_toolsroute — that forwards the
    agent's calls to downstream MCP servers without interpreting them.
  • Config-driven capability catalog (orchestrator.config.json) with ${SOLUTION_DIR},
    ${CONFIG_DIR}, and environment-variable placeholders, plus a shipped template.
  • Lazy downstream MCP connections over stdio, with per-capability connect/call timeouts and
    eviction of failed connections.
  • File logging: the stderr log is mirrored to ~/.dotnet-orchestrator-mcp/orchestrator.log
    (folder auto-created, ~10 MB rotation). Override the directory with MCP_ORCHESTRATOR_LOG_DIR,
    or disable with MCP_ORCHESTRATOR_LOG_DIR=off.
  • Native-AOT support: a ~10 MB self-contained binary (no .NET runtime), via source-generated JSON
    and the generic tool registration; IsAotCompatible keeps the analyzer on.
  • Opt-in self-update for the Native-AOT binary (MCP_ORCHESTRATOR_AUTOUPDATE=1): on startup it
    checks the latest GitHub Release, verifies the download against SHA256SUMS, and stages the new
    binary so the next launch runs it — without ever restarting the live MCP session.
  • Packaging: portable .NET tool package (with the root README as its nuget.org landing page),
    self-contained per-RID tool packages, and self-contained zips (pack-all.ps1).
  • CI: per-OS Native-AOT build + smoke test (native-aot.yml); tag-triggered release workflow
    (release.yml) that builds the native binaries (+ SHA256SUMS), creates a GitHub Release, and
    publishes the tool package to NuGet via Trusted Publishing (OIDC).
  • READMEs link to GitHub Releases for downloading the prebuilt Native-AOT binaries.