Commit graph inspector/client/src/lib
Author SHA1 Message Date
Jerome
37cff101b1
test: add tests for X-MCP-Proxy-Auth header implementation
- Added comprehensive test coverage for proxy authentication using X-MCP-Proxy-Auth header
- Tests verify proper header separation between proxy and server authentication
- Fixed transport mocks to properly capture options and headers
- Updated config structure in tests to match production code
- All proxy auth tests now passing

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-14 17:20:30 +01:00
Jerome
fdae89ecbf
fix: use X-MCP-Proxy-Auth header for proxy authentication
Changed proxy authentication to use a custom header (X-MCP-Proxy-Auth) instead of the standard Authorization header. This prevents conflicts when the proxy needs to forward the client's Authorization header to upstream MCP servers.

- Updated client to send proxy auth token in X-MCP-Proxy-Auth header
- Updated server auth middleware to check X-MCP-Proxy-Auth header
- Applies to all transport types (SSE, stdio, streamable-http)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-14 13:07:02 +01:00
Jerome
3207959af0
Linting 2025-06-13 16:04:25 +01:00
Felix Weinberger
ab062d8f9d
refactor: implement split storage for inspector config
- Add is_session_item field to ConfigItem type to control storage location
- Store auth tokens in sessionStorage (cleared on browser close)
- Store other settings in localStorage (persist between sessions)
- Maintain backward compatibility with existing config structure

This provides better security for auth tokens while preserving user
preferences across browser sessions.
2025-06-11 14:42:40 +01:00
Felix Weinberger
908d0ee36a
feat: add client support for proxy authentication
- Add MCP_PROXY_AUTH_TOKEN configuration field to store session token
- Update useConnection hook to include proxy auth token in all requests
- Add separate proxy auth headers to avoid conflicts with MCP server auth
- Add specific error handling for proxy authentication failures
- Show helpful toast message directing users to Configuration settings
- Update README with instructions for configuring token in UI

The client now properly authenticates with the proxy server using the
session token displayed in the proxy console.
2025-06-10 18:16:32 +01:00
Ola Hungerford
a2d2cf6f3d
Merge pull request #459 from msabramo/resizable-left-sidebar
Resizable left sidebar
2025-06-04 19:58:59 -07:00
Marc Abramowitz
13d31596af Merge branch 'main' into resizable-left-sidebar 2025-06-03 22:29:15 -07:00
Paul Carleton
e2d3989bb2
use scopes from PRM if available 2025-06-03 11:05:45 +01:00
Paul Carleton
9371006838
less noisy errors 2025-06-03 11:02:34 +01:00
Paul Carleton
0f4a289a4d
Merge branch 'main' into pcarleton/auth-debugger-draft 2025-06-02 16:41:44 +01:00
Paul Carleton
2d7936d10b
fix type errors 2025-06-02 16:20:16 +01:00
Cliff Hall
7df0ac40c5
Merge pull request #470 from cliffhall/send-delete-on-streamable-http-disconnect
Send HTTP DELETE on streamable transport disconnect
2025-06-02 10:05:30 -04:00
xiaoli
b51ee625cd style: fix code style to pass CI checks 2025-05-30 10:14:03 +08:00
cliffhall
02aacb46a2 Send HTTP/DELETE when disconnecting client
* In server/src/index.ts
  - add delete handler for /mcp endpoint
    - gets the server transport for the sessionId
    - calls terminateSession on it
    - removes the webapp and server transports for the sessionId from the maps
    - returns status 200 to the client.

* In client/src/lib/hooks/useConnection.ts
  - import Transport
  - add useState for clientTransport, type Transport or null initialized to null
  - in connect() function
    - move creation of client transport down a ways, just before calling client.connect with it
    - immendiately efter calling client.connect, call setClientTransport with the connected transport (has to happen after, so that what's saved has the abort controller, etc. otherwise it doesn't work to save it prior.
    - in disconnect() function
      - immediately call clientTransport.terminateSession if transportType is "streamable-http"
      - setClientTransport to null
2025-05-29 19:54:36 -04:00
Cliff Hall
c186f531b8
Merge branch 'main' into fix/header 2025-05-29 12:01:17 -04:00
Cliff Hall
7fb2211bf2
Merge branch 'main' into fix-port-numbers 2025-05-29 11:41:10 -04:00
Xiaoli
ee8c29b3ad
Merge branch 'main' into fix/header 2025-05-29 23:30:11 +08:00
Paul Carleton
03bb303bf9
rm loading, prm test 2025-05-29 14:10:32 +01:00
Paul Carleton
cc49358f5a
add test + prettier 2025-05-29 13:42:54 +01:00
Paul Carleton
0dbf75a664
store state before redirect 2025-05-29 11:50:09 +01:00
Paul Carleton
82858bed30
show proper authserverurl 2025-05-29 11:17:21 +01:00
Paul Carleton
73fde03aa4
working metadata fetch 2025-05-29 10:56:09 +01:00
Paul Carleton
c6ddcf4c90
fix 2025-05-29 10:11:44 +01:00
Paul Carleton
00893afc0b
wip new metadata 2025-05-29 10:11:44 +01:00
Paul Carleton
befadc0042
very wip draft auth spec support 2025-05-29 10:11:44 +01:00
xiaoli
10e3202832 fix: Fix the issue of accidentally losing 'x-custom-auth-header' 2025-05-29 11:49:57 +08:00
Marc Abramowitz
0a3b994540 npm run prettier-fix 2025-05-27 17:33:51 -07:00
Marc Abramowitz
bff09e0409 Resizable left sidebar
Make left sidebar resizable so long URLs can be viewed in their
entirety.

Fixes https://github.com/modelcontextprotocol/inspector/issues/457

Vibe-coded with Cursor
2025-05-27 17:28:04 -07:00
xiaoli
2870441fea fix: fix review comments, again😉
- Remove unnecessary auth header name check
- Extract operations on headers into a function
2025-05-25 11:17:37 +08:00
ihrpr
014ef7d35e
refactor 2025-05-20 17:25:44 +01:00
xiaoli
13f736033a fix: fix review comments
- Avoid calling .lowerCase twice
- Keep 'Bearer ' prefix when header equals 'Authorization'
- Remove unnecessary Array type checks
2025-05-20 13:10:55 +08:00
xiaoli
618f24a9ac feat: support custom authorization headers, fix #395 2025-05-20 10:38:03 +08:00
ihrpr
2f6a9fca11
format 2025-05-19 19:03:22 +01:00
ihrpr
85ae0ede85
small fix 2025-05-19 18:36:50 +01:00
ihrpr
13eb077329
fix auth conect 2025-05-19 18:29:42 +01:00
Cliff Hall
eb190b637d
Merge branch 'main' into fix-port-numbers 2025-05-19 12:45:51 -04:00
Paul Carleton
5e8e78c31d
Add Auth debugger tab (#355)
* wip auth debugger

* cleanup types and validation

* more cleanup

* draft test

* wip clean up some

* rm toasts

* consolidate state management

* prettier

* hoist state up to App

* working with quick and guided

* sort out displaying debugger

* prettier

* cleanup types

* fix tests

* cleanup comment

* prettier

* fixup types in tests

* prettier

* refactor debug to avoid toasting

* callback shuffling

* linting

* types

* rm toast in test

* bump typescript sdk version to 0.11.2 for scope parameter passing

* use proper scope handling

* test scope parameter passing

* move functions and s/sseUrl/serverUrl/

* extract status message into component

* refactor progress and steps into components

* fix test

* rename quick handler

* one less click

* last step complete

* add state machine

* test and types
2025-05-13 19:37:09 +01:00
Santthosh
a57e707a0b
Merge branch 'main' into main 2025-05-06 09:51:45 -07:00
cliffhall
f9cbfbe822 Create the appropriate TransportOptions object for the selected transport
* In useConnection.ts

  - In the case for "stdio", let the transportOptions be the same as "sse"
 because it will use that transport to the proxy regardless
2025-05-02 17:50:00 -04:00
cliffhall
b7ec3829d4 Use transport-specific options 2025-05-02 17:35:33 -04:00
Santthosh Selvadurai
dd6f5287ca Fix to the Authorization header bug for Streamable-HTTP
Reference issue [https://github.com/modelcontextprotocol/inspector/issues/369]
2025-04-30 22:21:59 -07:00
cliffhall
79a09f8316 Consolidate hooks
* Hooks are in multiple places in the codebase and some camelCase, some snake-case. This PR relocates them all to the lib/hooks folder and normalizes camelCase naming. Settled on src/client/lib/hooks for the location since most of them were already there.

  - Refactor/move useTheme.ts from client/src/lib to client/src/lib/hooks
  - Refactor/move useToast.ts from client/src/hooks/ to client/src/lib/hooks/useToast.ts
  - Removed client/src/hooks
2025-04-30 17:09:22 -04:00
olaservo
7611227fd4 Fix formatting 2025-04-30 06:19:44 -07:00
olaservo
f641aa0470 Revert re-parsing url 2025-04-30 05:16:42 -07:00
olaservo
fe827426ae Revert re-parsing url 2025-04-30 05:16:00 -07:00
olaservo
0838ffde38 Update tests 2025-04-30 05:03:00 -07:00
olaservo
d16e89df1e Preserve original URL 2025-04-29 21:32:21 -07:00
cliffhall
6e4dcd6120 WIP: Attempting to proxy streamable-http connections. Inspector still works fine with STDIO and SSE servers.
* In index.ts,
  - refactor transport webAppTransports to be a map with the session id as key and transport as value.

* Implement /mcp GET and POST endpoints using StreamableHTTPServerTransport and doing the new session in the POST (opposite from SSE) handler.

* In package.json
  - update the SDK to 1.10.2

* In useConnection.ts
  - import StreamableHTTPClientTransport
    - NOTE: while we NEED to do this, it causes useConnection.test.ts to fail with " ReferenceError: TransformStream is not defined"
  - in connect method
    - instantiate the appropriate transport
2025-04-22 18:25:47 -04:00
cliffhall
3a2e248527 Prettier 2025-04-21 11:40:01 -04:00
cliffhall
e5f6524eb6 Fix support for streamable-http connections.
* In server/index.js
  - add get/post handlers for /mcp
  - amend console log on SSE connect, with deprecation message
  - add /stdio GET handler and refactored /sse GET handler to not also do stdio. Each transport has its own handler now
  - add appropriate headers to streamable-http request

* In /client/src/lib/hooks/useConnection.ts
  - in connect function
    - create server url properly based on new transport type.
2025-04-21 11:34:55 -04:00