Skip to content

v0.2.0 — the server as a container beside Open WebUI, with each user's own PAT

Choose a tag to compare

@github-actions github-actions released this 24 Sep 09:39
· 6 commits to main since this release
1ae9576

The server now runs as its own container next to Open WebUI. It serves MCP over Streamable HTTP, holds no PAT of its own, and every request carries the caller's own PAT, so Azure DevOps attributes every comment, vote, and queued build to the person who asked. stdio stays the default: Copilot, Claude Code, and every existing client keep working unchanged.

Added

  • Streamable HTTP transport — ADOS_TRANSPORT=http serves a stateless MCP endpoint behind a shared bearer token. The guard runs on the endpoint routing selects, rejects unknown browser origins, and allows anonymous access only on loopback (#55)
  • Each caller's own PAT — every HTTP request carries its caller's PAT in X-Azure-DevOps-Pat. ADOS_PAT is refused over HTTP, so no request can fall back to a shared identity (#56, #61)
  • Health endpoint and container logging — /healthz answers probes without a token, and a healthy start logs nothing (#57, #63)
  • Container image — ghcr.io/exoz00rd/azuremcp:0.2.0 for linux/amd64 and linux/arm64 on the chiseled ASP.NET 10 runtime: non-root, no shell, signed with cosign, with a build provenance attestation and an SBOM (#58)
  • Helm chart — oci://ghcr.io/exoz00rd/charts/azuremcp with a hardened pod, a NetworkPolicy admitting only Open WebUI, and an internal certificate authority from a ConfigMap that keeps the public roots (#59)

Changed

  • The Open WebUI plugin calls the server over HTTP instead of downloading and starting a binary inside Open WebUI. Its valves are now the server URL, the server's token, and the timeout; the collection URL and certificate authority moved to the server. The self-contained linux-x64 binary is no longer attached (#60)
  • The NuGet package needs the ASP.NET Core runtime in every mode, stdio included. The .NET 10 SDK already ships it (#55)

Upgrading from 0.1.3 with Open WebUI

The 0.1.3 plugin started the server inside Open WebUI; this one needs the server running beside it. Deploy the image or the chart first (Running over HTTP), then replace the plugin's code with azure_devops_openwebui.py from this release and set its valves: server_url (for example http://azuremcp:8080/mcp) and server_token. Replacing the code of the existing tool keeps the PAT each user already entered; a newly created tool starts without them.

Assets

File Purpose
azure_devops_openwebui.py the Open WebUI plugin, generated from the tools this release registers

62 tools, 469 tests.

Full changelog: v0.1.3...v0.2.0