@@ -29,17 +29,20 @@ import { useDraggablePane } from "./lib/hooks/useDraggablePane";
29
29
import { StdErrNotification } from "./lib/notificationTypes" ;
30
30
31
31
import { Tabs , TabsList , TabsTrigger } from "@/components/ui/tabs" ;
32
+ import { Button } from "@/components/ui/button" ;
32
33
import {
33
34
Bell ,
34
35
Files ,
35
36
FolderTree ,
36
37
Hammer ,
37
38
Hash ,
39
+ Key ,
38
40
MessageSquare ,
39
41
} from "lucide-react" ;
40
42
41
43
import { z } from "zod" ;
42
44
import "./App.css" ;
45
+ import AuthDebugger from "./components/AuthDebugger" ;
43
46
import ConsoleTab from "./components/ConsoleTab" ;
44
47
import HistoryAndNotifications from "./components/History" ;
45
48
import PingTab from "./components/PingTab" ;
@@ -136,6 +139,7 @@ const App = () => {
136
139
}
137
140
>
138
141
> ( [ ] ) ;
142
+ const [ showAuthDebugger , setShowAuthDebugger ] = useState ( false ) ;
139
143
const nextRequestId = useRef ( 0 ) ;
140
144
const rootsRef = useRef < Root [ ] > ( [ ] ) ;
141
145
@@ -238,6 +242,14 @@ const App = () => {
238
242
[ connectMcpServer ] ,
239
243
) ;
240
244
245
+ // Auto-connect to previously saved serverURL after OAuth callback
246
+ const onOAuthDebugConnect = useCallback ( ( ) => {
247
+ // setSseUrl(serverUrl);
248
+ // setTransportType("sse");
249
+ // void connectMcpServer();
250
+ setShowAuthDebugger ( true ) ;
251
+ } , [ ] ) ;
252
+
241
253
useEffect ( ( ) => {
242
254
fetch ( `${ getMCPProxyAddress ( config ) } /config` )
243
255
. then ( ( response ) => response . json ( ) )
@@ -482,6 +494,17 @@ const App = () => {
482
494
) ;
483
495
}
484
496
497
+ if ( window . location . pathname === "/oauth/callback/debug" ) {
498
+ const OAuthCallback = React . lazy (
499
+ ( ) => import ( "./components/OAuthDebugCallback" ) ,
500
+ ) ;
501
+ return (
502
+ < Suspense fallback = { < div > Loading...</ div > } >
503
+ < OAuthCallback onConnect = { onOAuthDebugConnect } />
504
+ </ Suspense >
505
+ ) ;
506
+ }
507
+
485
508
return (
486
509
< div className = "flex h-screen bg-background" >
487
510
< Sidebar
@@ -569,6 +592,10 @@ const App = () => {
569
592
< FolderTree className = "w-4 h-4 mr-2" />
570
593
Roots
571
594
</ TabsTrigger >
595
+ < TabsTrigger value = "auth" >
596
+ < Key className = "w-4 h-4 mr-2" />
597
+ Auth
598
+ </ TabsTrigger >
572
599
</ TabsList >
573
600
574
601
< div className = "w-full" >
@@ -700,15 +727,44 @@ const App = () => {
700
727
setRoots = { setRoots }
701
728
onRootsChange = { handleRootsChange }
702
729
/>
730
+ < AuthDebugger
731
+ sseUrl = { sseUrl }
732
+ bearerToken = { bearerToken }
733
+ headerName = { headerName }
734
+ setBearerToken = { setBearerToken }
735
+ setHeaderName = { setHeaderName }
736
+ onBack = { ( ) => setShowAuthDebugger ( false ) }
737
+ />
703
738
</ >
704
739
) }
705
740
</ div >
706
741
</ Tabs >
742
+ ) : showAuthDebugger ? (
743
+ < AuthDebugger
744
+ sseUrl = { sseUrl }
745
+ bearerToken = { bearerToken }
746
+ headerName = { headerName }
747
+ setBearerToken = { setBearerToken }
748
+ setHeaderName = { setHeaderName }
749
+ onBack = { ( ) => setShowAuthDebugger ( false ) }
750
+ />
707
751
) : (
708
- < div className = "flex items-center justify-center h-full" >
752
+ < div className = "flex flex-col items-center justify-center h-full gap-4 " >
709
753
< p className = "text-lg text-gray-500" >
710
754
Connect to an MCP server to start inspecting
711
755
</ p >
756
+ < div className = "flex items-center gap-2" >
757
+ < p className = "text-sm text-muted-foreground" >
758
+ Need to configure authentication?
759
+ </ p >
760
+ < Button
761
+ variant = "outline"
762
+ size = "sm"
763
+ onClick = { ( ) => setShowAuthDebugger ( true ) }
764
+ >
765
+ Open Auth Settings
766
+ </ Button >
767
+ </ div >
712
768
</ div >
713
769
) }
714
770
</ div >
0 commit comments