Skip to content

v0.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Nov 14:19
· 52 commits to main since this release
58bd143

byward v0.1.0

A sign-in gate for MCP servers. byward puts any MCP server, HTTP or stdio, behind OAuth 2.1 and your identity provider, with first-class Microsoft Entra ID support. One Go binary, configured by environment variables.

First release. byward is pre-1.0 and has not had an independent security audit. Read the security posture before deploying it.

What it does

  • Sign-in for any MCP server. MCP clients connect to byward with standard OAuth 2.1; byward signs the user in with Microsoft Entra ID, shows its own consent page, and issues short-lived tokens of its own. The MCP server never sees a client's or the IdP's token.
  • Clients connect without manual setup. Client ID Metadata Documents (CIMD) and Dynamic Client Registration (DCR), plus static clients for anything else.
  • HTTP and stdio upstreams. Put a remote MCP server or a local command behind sign-in; stdio sessions are bound to the user who started them, with per-user and per-upstream process limits.
  • Entra done properly. Single-tenant apps, v2 tokens, app roles and groups as an access gate, and byward doctor / byward init entra to set up and check the app registration.
  • Revocation that works. Rotating refresh tokens with reuse detection, /revoke, and byward revoke-user / byward revoke-all for operators.
  • Operable. SQLite state with restore detection, per-address rate limits on the OAuth endpoints, a structured audit stream, Prometheus metrics, and hardening checks at startup.

Verified clients

Signed in through byward against a real Entra tenant and called a tool:

Client How it registers
Claude Code CIMD (or a static client)
claude.ai CIMD
ChatGPT CIMD
VS Code CIMD
Cursor (3.29.9; 2.6.22 does not work) DCR

The TypeScript, Python and Go MCP SDK clients and MCP Inspector run against byward in CI on every change.

Install

docker pull ghcr.io/byward-dev/byward:v0.1.0

Linux binaries (amd64, arm64) are attached below; macOS binaries are for development only. Verify a release with the commands in packaging (cosign keyless signature, SBOM and build provenance).

Start with the Entra quickstart, then the hardening checklist.

Since v0.1.0-rc.2

  • Log redaction matches a JWT by its shape, so a random client ID that happens to contain eyj is no longer logged as [REDACTED] (#230).
  • The release itself: pre-releases no longer move :latest, and the changelog leaves out author emails.

Not in this release

On-Behalf-Of tokens for downstream APIs, Entra app-only tokens, identity assertion to the upstream, and identity providers other than Entra are planned for v0.2.

MCP is a trademark of LF Projects, LLC. byward is an independent project.

Changelog since v0.1.0-rc.2

  • 0f3c567: fix: pre-releases keep latest, changelog without emails (backport #143, #142) (#231)
  • 836367a: ci: run ci on pushes to release/** so a tagged commit has its own run (backport #228) (#233)
  • 58bd143: fix: redact a JWT by its shape, not by the letters eyj (backport #235) (#230) (#241)