Commit graph inspector/client/src/lib/hooks
Author SHA1 Message Date
Jerome
760c7e4056
fix: replace require() imports with ES modules in tests
- Replaced all require() imports with proper ES module imports
- Fixed ESLint @typescript-eslint/no-require-imports errors
- Removed unused variable mockGetMCPProxyAddress
- Added proper TypeScript types instead of 'any'
- All tests passing and linting clean

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-14 18:11:16 +01:00
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
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
Marc Abramowitz
13d31596af Merge branch 'main' into resizable-left-sidebar 2025-06-03 22:29:15 -07: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
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
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
Cliff Hall
b3971259d2
Merge branch 'main' into main 2025-04-17 16:40:48 -04:00
Maxwell Gerber
15960f5aa4
refactor: Use new serverspecifickey API 2025-04-16 16:24:49 -07:00
Maxwell Gerber
0dc6df57d6
Merge remote-tracking branch 'theirs/main' into max/disconnect 2025-04-16 16:10:35 -07:00
Glen Maddern
df0b526a41 fix: store auth tokens with server-specific keys
Changes client information and access tokens to use server-specific keys in sessionStorage. This fixes issues where changing the server URL would try to use tokens from a different server.
2025-04-16 10:14:08 +10:00
leoshimo
22eb81350a feat: Show initialize request/response in History panel (#269)
- Add logging for initialize request and response in useConnection.connect
- Include server capabilities, version, and instructions in history
2025-04-14 17:33:58 -07:00
Ido Salomon
87fad79e7d add bearer 2025-04-12 22:55:03 +03:00
Ido Salomon
80854d9183
Merge branch 'main' into set-header 2025-04-12 03:37:18 +03:00
Ido Salomon
a010f10c26 remove bad merges 2025-04-12 00:50:37 +03:00
KavyapriyaJG
eab6b42ac6 Fix - Lint warnings and errors in client
Lint issues fixed:
1. Removed unused error variable in catch block
2. Changed 'ActionTypes' type to enum
3. Removed unnecessary interface extensions
4. Removed unused export component
5. Added the missing dependencies to useMemo
6. Fixed the inline function issue by changing it to useMemo
2025-04-12 02:10:37 +05:30
Ido Salomon
aeac3ac914
Merge branch 'main' into set-header 2025-04-10 20:38:12 +03:00
Shiv Deepak Muddada
638603c0f3 add support for streamable http server 2025-04-09 20:47:53 -07:00
Maxwell Gerber
6a16e7cd24
fix: Disconnecting should clear oauth state 2025-04-07 15:15:28 -07:00
Ido Salomon
91633de80f set header name 2025-04-05 12:46:25 +03:00
Pulkit Sharma
e35343537c Add proper support for progress flow during tool calling 2025-04-05 01:46:57 +05:30