Commit graph inspector/client/src/lib
Author SHA1 Message Date
crondinini-ant
bc1ca95aea
add client secret option 2025-10-10 18:21:34 +01:00
Cliff Hall
5b4edefbc7
Update client/src/lib/hooks/useConnection.ts 2025-09-30 19:06:19 -04:00
Kent C. Dodds
34534ed062 fix: update default authorization header to include empty Bearer token and improve validation logic 2025-09-30 15:17:13 -06:00
Kent C. Dodds
0da5bc2a2e refactor: streamline authorization header validation in useConnection hook 2025-09-26 13:26:46 -06:00
Kent C. Dodds
30f9855fd5 fix: update authorization header handling to prevent empty values and show validation error 2025-09-26 13:24:28 -06:00
Kent C. Dodds
17ace55bbf fix: enhance OAuth token handling in useConnection hook to prevent infinite auth loops 2025-09-25 15:29:26 -06:00
Paul Carleton
b72e3c1233
Revert "fix: filter out client_secret when storing OAuth client information"
This reverts commit 36b9acc97e.
2025-09-24 15:12:52 +01:00
Ola Hungerford
32ea112051
Merge branch 'main' into accurate-cli-version 2025-09-22 20:46:14 -07:00
Cliff Hall
05534ca430
Merge branch 'main' into no-proxy-for-http-transports 2025-09-18 16:36:37 -04:00
Ola Hungerford
81889e680d
Merge pull request #801 from modelcontextprotocol/basil/fix-oauth-redirect-uri-mismatch
Fix OAuth redirect URI mismatch in debug flow
2025-09-16 17:56:14 -07:00
cliffhall
5ef78470de * In App.tsx
- Add state for connectionType
  - Fetch connectionType from localstorage if present

* In Sidebar.tsx
  - Add dropdown for connectionType, only visible if transport type is not stdio

* In Sidebar.test.tsx
  - set connectionType to "proxy"

* In useConnection.ts
  - add connectionType param, defaulting to "proxy"
  - add state for mcpSessionId
  - Only check proxy health if the connection type is proxy
  - create a serverUrl variable which will either be the proxy url OR the server url depending upon the connection type
  - added captureResponseHeaders function to extract the protocol-related headers from a response.
  - when creating transport options and connectionType is "direct" and transportType is not "stdio",
    - add the appropriate `Accept` and `Content-Type` headers
    - capture the protocol related response headers and store them in the custom fetch handler
    - set serverUrl to be the server url, not the proxy url
  - if connection type is proxy set serverUrl to the mcpProxyUrl
  - use serverUrl instead of mcpProxyUrl for the  transport instantiation
* In useConnection.test.tsx
  - replaced test "sends X-MCP-Proxy-Auth header when proxy auth token is configured" with two tests:
    - "sends X-MCP-Proxy-Auth header when proxy auth token is configured for 'proxy' connectionType"
    - "does NOT send X-MCP-Proxy-Auth header when proxy auth token is configured for 'direct' connectionType"
   - added Connection URL Verification section with 2 tests
     - uses server URL directly when connectionType is 'direct'"
     - "uses proxy server URL when connectionType is 'proxy'"
2025-09-16 17:26:29 -04:00
jeetul.samaiya
e08ce8cee9 feat: add default Authorization Bearer header and clean up legacy auth
- Provide "Authorization: Bearer " as default starting header
- Remove legacy auth props from components
- Centralize migration logic and fix localStorage cleanup
- Update tests for new auth architecture
2025-09-15 20:19:56 +05:30
Jeetul Samaiya
f36c649bb9
Merge branch 'main' into main 2025-09-15 19:30:18 +05:30
Ola Hungerford
3075cbbf18
Merge branch 'main' into alejandro.borbolla/copy-input 2025-09-14 21:27:07 -07:00
Basil Hosmer
70ddef28f2
Fix OAuth redirect URI mismatch in debug flow
Register both normal and debug redirect URIs in client metadata to prevent mismatch errors when using the Auth tab's debug mode versus normal connection flow.
2025-09-12 22:23:32 -04:00
jeetul.samaiya
cb8c45456b refactor: improve code formatting and readability across multiple files 2025-09-09 13:44:57 +05:30
jeetul.samaiya
c5acc63129 Add support for custom headers and migrate from legacy auth
- Introduced CustomHeaders component for managing custom headers.
- Updated Sidebar to include CustomHeaders component.
- Enhanced useConnection hook to handle custom headers and legacy auth migration.
- Added tests for custom headers functionality.
- Updated package.json and package-lock.json for new dependencies.
2025-09-09 13:44:57 +05:30
Max Gerber
71583caf3b
fix: correct authState.authorizationUrl type to URL 2025-09-05 18:40:48 -07:00
lorenzo.neumann
801ae28ecb feat: add clear buttons for request history and server notifications
fixes #780
2025-09-04 13:37:19 +02:00
cliffhall
6db41c19d5 * In all package.json and package-lock.json,
- set TS SDK to 1.17.5, which has the automatic log level handling
* In useConnection.ts
  - push the logging/setLevel message onto the message history stack so it is clear in the Inspector that it has been sent.
2025-09-02 16:17:04 -04:00
Ola Hungerford
244109402c
Merge pull request #745 from pavan-mellamputi-socure/update-progress-method
Fix a typo in progress notification method name
2025-08-31 20:58:06 -07:00
Ola Hungerford
6505468fbe
Merge branch 'main' into alejandro.borbolla/copy-input 2025-08-31 20:38:40 -07:00
pavan-mellamputi-socure
8f2e53c273
Fix a typo in progress notification method name
It shoud be `notifications/progress` not `notification/progress` (not singular).

This matches the latest spec.

https://modelcontextprotocol.io/specification/2025-06-18/basic/utilities/progress
2025-08-22 18:48:26 -07:00
Richard Michael
ae7d745d5e Ensure tests will always use the current client name and version 2025-08-22 10:47:36 -07:00
Richard Michael
0d202ee47b Update client name during Elicitation test init 2025-08-22 10:28:50 -07:00
Richard Michael
f942df7e4c Consistent MCP Client() name from package
Make both clients use name from package.json for consistency and protocol clarity

 - web client changes `mcp-inspector` -> `inspector-client` (package.json)
 - cli client remains `inspector-cli` (package.json)
2025-08-22 10:28:50 -07:00
Richard Michael
89740ef5d1 Add tests for MCP_PROXY_FULL_ADDRESS SSE endpoint support
Tests verify that proxyFullAddress query parameter is sent for both
STDIO and SSE transports, but not Streamable HTTP, when
MCP_PROXY_FULL_ADDRESS is configured.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-22 00:47:22 -07:00
Richard Michael
3628abca9e Use MCP_PROXY_FULL_ADDRESS for SSE transport backed endpoints
The STDIO and SSE transports use SSE between the client and the proxy
server.  SSE requires the client to initiate the MCP conversation
(event-stream) at the endpoint provided by the server.  The endpoint
provided by the server must obey where the client sees the server,
rather than being assumed to be server-root `/message`.

The Streamable HTTP endpoint does not need the full proxy address
because the response is an event-stream directly, and does not use SSE.
2025-08-21 23:11:08 -07:00
cliffhall
9dbd5cc85b * Remove handling of out-of-spec 'notification/stderr' messages. It's not a thing. See https://github.com/modelcontextprotocol/servers/pull/2469
* Inspect the stderr output of STDIO servers and attempt to assign an appropriate RFC 5424 Syslog Protocol level before sending a leveled logging message to the client
2025-08-21 18:01:29 -04:00
Jenn Newton
650f3090d2
fix: add validation for OAuth redirect URLs
- Create shared validateRedirectUrl utility to centralize URL validation
- Only allow HTTP and HTTPS protocols in OAuth authorization URLs
- Fix three vulnerable redirect paths that bypassed validation:
  - AuthDebugger.tsx: Direct window.location.href redirect
  - OAuthFlowProgress.tsx: window.open() without validation
  - OAuthFlowProgress.tsx: Direct anchor href attribute
- Add comprehensive test coverage for URL validation
- Update existing auth.ts to use shared validation utility

This prevents malicious MCP servers from injecting javascript: or data:
protocol URLs that would execute XSS attacks when users are redirected
to the authorization endpoint.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-20 10:08:20 -03:00
cliffhall
3adb1dd5c9 Prettier 2025-08-15 18:55:15 -04:00
cliffhall
5323d4d8f4 Fix connect button behavior for Oauth by making sure that scope is included in client metadata when client is registered.
- In auth.ts
    - in InspectorOAuthClientProvider constructor
      - add optional scope param
      - set instance var this.scope to scope param
    - in clientMetadata getter
      - add scope param set to this.scope or ""
  - in useConnection.ts
    - in handleAuthError handler
      - move instantiation of serverAuthProvider until after scope has been determined
      - pass scope to InspectorOAuthClientProvider constructor
2025-08-15 18:40:21 -04:00
cliffhall
94f44c7b57 Prettier 2025-08-15 17:19:27 -04:00
cliffhall
0831e812bb Align Quick OAuth Flow with Guided OAuth Flow behavior
- In oauth-state-machine.ts
  - in token_request transition
    - ensure resource is URL type, not string
    - this fixes Quick flow which was sending string, while guided was using proper URL type and working
2025-08-15 14:44:51 -04:00
Bobby Tiernay
739e0aaa68
fix: lint 2025-08-14 15:00:54 -04:00
Bobby Tiernay
74900fca5d
feat: unify OAuth scope discovery between automatic and manual flows
- Add shared discoverScopes function in auth.ts with resource metadata preference
- Update automatic flow (handleAuthError) to use dynamic scope discovery
- Update manual flow (OAuth state machine) to use shared scope discovery logic
- Add comprehensive test suite for discoverScopes function (11 test cases)
- Fix empty array handling to return undefined instead of empty string
- Maintain backward compatibility with existing oauthScope parameter
- All quality gates pass: TypeScript, linting, formatting, and tests

Resolves OAuth scope discovery inconsistency where automatic flow used static
scopes while manual flow used metadata scopes. Both flows now use identical
shared logic with proper resource metadata preference.
2025-08-14 14:02:29 -04:00
Felix Weinberger
36b9acc97e
fix: filter out client_secret when storing OAuth client information 2025-08-14 17:04:38 +01:00
Ola Hungerford
ddd06c207c
Merge branch 'main' into dcr-fallback-fix 2025-08-13 05:34:14 -07:00
Cliff Hall
b4d1bc71f6
Merge branch 'main' into main 2025-08-12 16:25:42 -04:00
cliffhall
0d8e8fce4b This fixes #610
* In useConnection.ts
  - During initialization, if there is an error immediately following the client sending 'logging/setLevel', pops up a toast with the message `Server declares logging capability but doesn't implement method "logging/setLevel"`
2025-08-12 15:26:15 -04:00
cliffhall
15b58c8142 This fixes #610
* In useConnection.ts
  - During initialization, if there is an error immediately following the client sending 'logging/setLevel', pops up a toast with the message `Server declares logging capability but doesn't implement method "logging/setLevel"`
2025-08-12 15:25:09 -04:00
superboy-zjc
d21e51e6ab fix(auth): sanitize authorization URL 2025-08-12 11:26:44 -07:00
Ola Hungerford
e604321024
Merge branch 'main' into debugger-auth-svr-metadata 2025-08-12 06:44:32 -07:00
2underscores
9ef2a6c22d Use new auth svr discovery method from latest auth SDK 2025-08-12 14:13:31 +10:00
2underscores
0b123acdac Static client attempt before DCR 2025-08-12 09:20:28 +10:00
Konstantin Konstantinov
60049a5b6c
reorder methods 2025-08-12 00:29:53 +03:00
Konstantin Konstantinov
929b930618
reusable generateOAuthState helper, introduce in InspectorOAuthClientProvider and in oauth-state-machine, add test 2025-08-11 21:24:26 +03:00
2underscores
37f634d651 rm console.log 2025-08-11 14:43:04 +10:00
2underscores
6a95056731 Refactor 2025-08-06 08:47:21 +10:00
2underscores
b99b3d29d9 Using static client data as DCR fallback 2025-08-06 08:34:34 +10:00