Skip to content
This repository was archived by the owner on May 21, 2026. It is now read-only.

Commit b560cb9

Browse files
committed
feat: enhance InspectorDashboard and ResourcesTab with MCP UI support and improved user interactions
- Added a copy URL button in InspectorDashboard for easy access to connection URLs. - Introduced preview and JSON toggle functionality in ResourcesTab for better resource visualization. - Enhanced MCP UI resource handling in ResourcesTab to display content based on user selection. - Updated McpUIRenderer to support new resource formats and improved UI action handling. - Refactored input handling in ToolsTab to respect tool input schemas for better data management.
1 parent a5a504d commit b560cb9

4 files changed

Lines changed: 261 additions & 88 deletions

File tree

packages/inspector/src/client/components/InspectorDashboard.tsx

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ export function InspectorDashboard() {
200200
<div
201201
key={connection.id}
202202
onClick={() => handleServerClick(connection)}
203-
className="rounded-lg bg-zinc-100 dark:bg-white/10 hover:bg-zinc-200 dark:hover:bg-white/15 p-4 transition-colors cursor-pointer"
203+
className="group rounded-lg bg-zinc-100 dark:bg-white/10 hover:bg-zinc-200 dark:hover:bg-white/15 p-4 transition-colors cursor-pointer"
204204
>
205205
<div className="flex items-center justify-between">
206206
<div className="flex-1">
@@ -239,9 +239,29 @@ export function InspectorDashboard() {
239239
)}
240240
</div>
241241
</div>
242-
<p className="text-xs text-muted-foreground dark:text-zinc-400 font-mono mt-1">
243-
{connection.url}
244-
</p>
242+
<div className="flex items-center gap-2 mt-1">
243+
<p className="text-xs text-muted-foreground dark:text-zinc-400 font-mono">
244+
{connection.url}
245+
</p>
246+
<Tooltip>
247+
<TooltipTrigger asChild>
248+
<button
249+
onClick={(e) => {
250+
e.stopPropagation()
251+
navigator.clipboard.writeText(connection.url)
252+
toast.success('URL copied to clipboard')
253+
}}
254+
className="opacity-0 group-hover:opacity-100 transition-opacity p-1 hover:bg-white/10 rounded"
255+
title="Copy URL"
256+
>
257+
<Copy className="w-3 h-3 text-muted-foreground" />
258+
</button>
259+
</TooltipTrigger>
260+
<TooltipContent>
261+
<p>Copy URL</p>
262+
</TooltipContent>
263+
</Tooltip>
264+
</div>
245265
</div>
246266
<div className="flex items-center gap-1">
247267
<Tooltip>

packages/inspector/src/client/components/McpUIRenderer.tsx

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { UIResourceRenderer } from '@mcp-ui/client'
21
import type { Resource } from '@modelcontextprotocol/sdk/types.js'
2+
import { UIResourceRenderer } from '@mcp-ui/client'
33

44
interface McpUIRendererProps {
55
resource: Resource
@@ -11,13 +11,15 @@ interface McpUIRendererProps {
1111
* Helper function to check if a resource is an MCP UI resource
1212
*/
1313
export function isMcpUIResource(resource: any): boolean {
14-
if (!resource?.mimeType) return false
15-
14+
if (!resource?.mimeType)
15+
return false
16+
1617
const mimeType = resource.mimeType.toLowerCase()
1718
return (
18-
mimeType === 'text/html' ||
19-
mimeType === 'text/uri-list' ||
20-
mimeType.startsWith('application/vnd.mcp-ui.remote-dom')
19+
mimeType === 'text/html'
20+
|| mimeType === 'text/html+skybridge'
21+
|| mimeType === 'text/uri-list'
22+
|| mimeType.startsWith('application/vnd.mcp-ui.remote-dom')
2123
)
2224
}
2325

@@ -37,9 +39,9 @@ function convertToMcpUIResource(resource: Resource): any {
3739
* Component to render MCP UI resources
3840
*/
3941
export function McpUIRenderer({ resource, onUIAction, className }: McpUIRendererProps) {
40-
const handleUIAction = (action: any) => {
42+
const handleUIAction = async (action: any) => {
4143
console.log('MCP UI Action:', action)
42-
onUIAction?.(action)
44+
return onUIAction?.(action)
4345
}
4446

4547
const uiResource = convertToMcpUIResource(resource)
@@ -60,4 +62,3 @@ export function McpUIRenderer({ resource, onUIAction, className }: McpUIRenderer
6062
</div>
6163
)
6264
}
63-

0 commit comments

Comments
 (0)