Repository navigation
DevBrain 2.0: ASP.NET Core host on Azure Container Apps (retires Azure Functions) - #26
Merged
Merged
Conversation
DevBrain now runs only as the ASP.NET Core host on Azure Container Apps. - Remove the DevBrain.Functions project, its Function App, Flex plan, managed-identity role assignments, Functions-only blob containers, the azd api service, and the post-provision warm-up wait. This drops Microsoft.ApplicationInsights.WorkerService and the Functions worker packages. - Rename DevBrain.Functions.Tests to DevBrain.Core.Tests, move the RFC wire-format guards onto the server's OAuth response types, and drop the Functions-only and Functions-vs-server parity tests. - Migrate both test projects to xunit.v3 on Microsoft.Testing.Platform. - Refresh dependencies (MCP SDK 2.2.0, Cosmos 3.63.1, IdentityModel 8.23.0, DataProtection 10.0.12) and CI actions. - Make Directory.Build.props the single source of the release version; serverInfo reads it from the assembly. - Add an OAUTH_REDIRECT_URI output and rewrite the README as a new-tenant runbook with DevBrain.User role setup, a 1.x upgrade path, and operating notes. Fold everything into the 2.0.0 changelog entry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dsghi
marked this pull request as ready for review
September 29, 2026 20:02
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
DevBrain 2.0 replaces the Azure Functions host with a standalone ASP.NET Core MCP host on Azure Container Apps. The endpoint moves from
/runtime/webhooks/mcpon the Function App to/mcpon the Container App. Existing Cosmos documents carry over unchanged.DevBrain.Server, a .NET 10 ASP.NET Core MCP host onModelContextProtocol.AspNetCore2.2.0 and the 2026-07-28 MCP specification revision, with a stateless Streamable HTTP transport.DevBrain.Core.DevBrain.Userapp-role authorization, and a reprovision-safe azd workflow.DevBrain.Functionsproject, the Function App and Flex plan, their role assignments and blob containers, the azdapiservice, and the Functions-only packages, includingMicrosoft.ApplicationInsights.WorkerService.Directory.Build.propsthe single source of the release version.DevBrain.Userrole, user assignment, provision, redirect URI, deploy, verify, first-run seeding, upgrading from 1.x, and operating notes.Why
The Azure Functions MCP extension lags the current SDK and protocol behavior, and it doesn't let DevBrain own the MCP authentication challenge. That's why VS Code and GitHub Copilot never started OAuth. The direct ASP.NET Core host provides current protocol support, standards-compliant
401challenges, and more hosting flexibility.Deployment notes
documentsandoauth_statecontainers; no data migration.dataprotection-keys-v2key ring and thev2:OAuth key prefix, so live sessions on the current Container Apps deployment survive this change.OAUTH_REDIRECT_URIoutput gives the exact/callbackURL to register on the Entra app.azd provisionis incremental, so it won't delete the old Function App, its plan, or thedeploymentpackageanddataprotection-keyscontainers. Delete them manually once no client uses the old endpoint (README → "Upgrading from 1.x").Tests
DevBrain.Functions.TeststoDevBrain.Core.Tests; both test projects now run onxunit.v34.0.1 through Microsoft.Testing.Platform (global.json).McpToolContextAccessortests and the Functions-vs-server contract parity test.CodeQL disposition
response_type=codeandcode_challenge_method=S256before calling a pure authorization-URI builder that receives only configured values and server-generated state/PKCE data. There's no caller-controlled authentication or authorization bypass; the alerts were dismissed with this rationale.Validation
dotnet test --solution devbrain.slnx: 157 tests pass acrossDevBrain.Core.TestsandDevBrain.Server.Tests.dotnet buildhas 0 warnings;az bicep buildsucceeds; the post-provision hook parses cleanly; the container image builds fromsrc/DevBrain.Server/Dockerfile.dotnet list package --outdated / --vulnerable / --deprecatedreports every direct reference current and nothing vulnerable or deprecated.DevBrain.User, discovered all 12 tools, and read existing shared Cosmos documents.🤖 Generated with Claude Code