2.3.0

modelcontextprotocol/inspector2.3.0Aug 19, 2026by cliffhall

AI Summary

Focuses on OAuth enhancements, container sandboxing improvements, and stability fixes for the web UI and TUI.

Key Highlights

  • Per-server custom OAuth authorization-request parameters and id_token decoding.
  • Container sandbox improvements including loopback binding and port pinning.
  • Web UI fixes for nullable/union fields, schema defaults, and accessibility.
  • TUI fixes for Windows SIGINT handling and input settling issues.

New Features

  • Per-server custom OAuth authorization-request parameters
  • Surface and decode OAuth id_token in Connection Info
  • Auth URL and Token URL overrides in Server Settings

Full Release Notes

## What's Changed
* fix: bind loopback by address and pin the sandbox port for containers by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2009
* chore: sync v2/main to 2.2.0 + guidance to bump on v2/main before the milestone merge by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2011
* fix: gate the connect-time logging/setLevel on the negotiated era (#1990) by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2017
* fix: add eol=lf policy to .gitattributes so Windows checkouts stay clean by @olaservo in https://github.com/modelcontextprotocol/inspector/pull/1994
* chore(deps): Bump the npm_and_yarn group across 4 directories with 6 updates by @dependabot[bot] in https://github.com/modelcontextprotocol/inspector/pull/2004
* fix: render nullable and union argument fields correctly in the web form and the TUI by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2014
* build(deps): bump the github-actions group across 1 directory with 5 updates by @dependabot[bot] in https://github.com/modelcontextprotocol/inspector/pull/1976
* fix: gate submission on unsendable field text, and on required tool arguments by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2024
* feat: per-server custom OAuth authorization-request parameters by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2022
* feat: surface and decode the OAuth id_token in Connection Info by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2023
* fix: salvage a list result's valid entries when one is malformed (#1909) by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2016
* test(web): pin the JSON editor's reported escaping reproductions (#1853, #1856, #1885) by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2025
* fix(web): stop a schema default from reverting the edit in progress by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2027
* chore(scripts): derive dep-lockstep candidates from what enters each tsc program by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2029
* fix: settle ink input handlers after frame waits so TUI coverage runs stop flaking on Windows by @olaservo in https://github.com/modelcontextprotocol/inspector/pull/1996
* fix: stop emitting a process-wide SIGINT in run-method.test so the CLI suite passes on Windows by @olaservo in https://github.com/modelcontextprotocol/inspector/pull/1995
* fix(web): read modern tasks support from the extension map by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2032
* fix(web): accept CRLF-delimited SSE frames on the servers events stream by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2036
* chore(lint): enable @typescript-eslint/no-floating-promises in all five ESLint scopes by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2039
* feat(auth): Auth URL and Token URL overrides in Server Settings by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2037
* fix(web): name an empty tool result instead of "No results yet" (#1860) by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2034
* fix(web): correct the Custom Headers OAuth hint, name key/value rows for a11y (#2040) by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2038
* fix: resolve node bins via package.json instead of spawning npx .cmd shims so verify/smoke scripts run on Windows by @olaservo in https://github.com/modelcontextprotocol/inspector/pull/1997
* fix(web): expand resource templates per RFC 6570 by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2035
* fix(web): key tool selection by row identity so duplicate tool names are individually inspectable by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2041
* chore: ignore the web client's tsup build output in ESLint by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2044
* fix: register SSE abort cleanup before the priming write by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2045
* fix: surface list-fetch failures in paginated mode (#1998) by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2047
* fix: handle background command rejections in App (#2049) by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2050
* chore: bump version to 2.3.0 by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2052
* chore(deps): sync the security fixes that landed on main by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2059
* chore(deps): bump nanoid to 3.3.18 to clear the high-severity advisory by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2061
* chore: merge v2/main for the v2.3.0 milestone release by @cliffhall in https://github.com/modelcontextprotocol/inspector/pull/2054


**Full Changelog**: https://github.com/modelcontextprotocol/inspector/compare/2.2.0...2.3.0

Smoke test ledger for milestone branch: [v2/chore/milestone-merge-v2.3.0](https://claude.ai/code/artifact/d488330e-1b83-43d4-b854-09e0bec7d05a)