Setup
Prerequisites: Git, Bash and mise. mise installs the .NET SDK, Bun, CSharpier and lefthook at the versions pinned in mise.toml. On Windows, use Git Bash. Run commands from the repository root.
mise installmise run installmise run hooks:installThe pre-commit hook formats staged files. The pre-push hook validates the hook configuration, checks formatting and builds the solution. It also runs mise run docs:check when the push changes the documentation, README.md or AGENTS.md. lefthook.yml defines both hooks.
Dev container
.devcontainer describes an Ubuntu container with mise, clang and zlib for Native AOT builds. On creation, it installs the tools from mise.toml, restores the dependencies and installs the Roslyn language server for the integration tests.
The container keeps node_modules in a Docker volume, because Bun installs platform-specific binaries that would break the host checkout. Build output in bin and obj is shared with the host, so the first build on the other side restores again.
Local settings
Put local environment variables in the [env] table of mise.local.toml. mise loads it for every task and Git ignores it. Existing environment variables take precedence. MCP clients launch the bridge with their own environment, so it does not see these variables.
Builds
Builds use Debug by default. Run CONFIGURATION=Release mise run build for a release build. Stop any bridge process that uses the build output before rebuilding it.