Skip to main content
Glama
BrowserSessions.tsx5.35 kB
import React from 'react' import { useQuery } from '@tanstack/react-query' import { Globe, Monitor, Camera, Play } from 'lucide-react' export default function BrowserSessions() { const { data: sessionsData } = useQuery({ queryKey: ['sessions'], queryFn: async () => { const response = await fetch('/sessions') return response.json() }, refetchInterval: 3000 }) const browserSessions = sessionsData?.sessions?.filter((s: any) => s.type === 'browser') || [] return ( <div className="px-4 sm:px-6 lg:px-8"> <div className="sm:flex sm:items-center"> <div className="sm:flex-auto"> <h1 className="text-2xl font-semibold text-gray-900 dark:text-white">Browser Sessions</h1> <p className="mt-2 text-sm text-gray-700 dark:text-gray-300"> Monitor and manage active browser automation sessions. </p> </div> </div> {browserSessions.length > 0 ? ( <div className="mt-8 grid grid-cols-1 gap-6 lg:grid-cols-2"> {browserSessions.map((session: any) => ( <div key={session.id} className="bg-white dark:bg-gray-800 shadow rounded-lg border dark:border-gray-700"> <div className="px-6 py-4 border-b dark:border-gray-700"> <div className="flex items-center justify-between"> <div className="flex items-center space-x-3"> <div className="w-10 h-10 rounded-full bg-blue-100 dark:bg-blue-900/20 flex items-center justify-center"> <Globe className="w-5 h-5 text-blue-600" /> </div> <div> <h3 className="text-lg font-medium text-gray-900 dark:text-white"> Browser Session </h3> <p className="text-sm text-gray-500 dark:text-gray-400 font-mono"> {session.id.slice(0, 12)}... </p> </div> </div> <span className="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800 dark:bg-green-900/20 dark:text-green-300"> Active </span> </div> </div> <div className="p-6"> {/* Session placeholder content */} <div className="aspect-video bg-gray-100 dark:bg-gray-700 rounded-lg flex items-center justify-center"> <div className="text-center"> <Monitor className="mx-auto h-8 w-8 text-gray-400 mb-2" /> <p className="text-sm text-gray-500 dark:text-gray-400"> Browser viewport placeholder </p> <p className="text-xs text-gray-400 mt-1"> Screenshots would appear here </p> </div> </div> <div className="mt-4 flex justify-between items-center"> <div className="flex space-x-2"> <button className="inline-flex items-center px-3 py-2 border border-gray-300 dark:border-gray-600 shadow-sm text-xs font-medium rounded-md text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600"> <Camera className="w-3 h-3 mr-1" /> Screenshot </button> <button className="inline-flex items-center px-3 py-2 border border-gray-300 dark:border-gray-600 shadow-sm text-xs font-medium rounded-md text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600"> <Play className="w-3 h-3 mr-1" /> Record </button> </div> <div className="text-xs text-gray-500 dark:text-gray-400"> Tools: {sessionsData?.stats?.tools_by_session?.[session.id] || 0} </div> </div> </div> </div> ))} </div> ) : ( <div className="mt-8 text-center py-12"> <div className="w-16 h-16 mx-auto bg-gray-100 dark:bg-gray-800 rounded-full flex items-center justify-center mb-4"> <Globe className="w-8 h-8 text-gray-400" /> </div> <h3 className="text-lg font-medium text-gray-900 dark:text-white mb-2">No browser sessions</h3> <p className="text-sm text-gray-500 dark:text-gray-400 mb-4"> Start a browser session using the browser.start_session tool to see it here. </p> <div className="bg-gray-50 dark:bg-gray-800 rounded-lg p-4 max-w-lg mx-auto"> <h4 className="text-sm font-medium text-gray-900 dark:text-white mb-2">Example MCP call:</h4> <pre className="text-xs bg-white dark:bg-gray-900 p-3 rounded border text-left overflow-x-auto"> {`{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "browser.start_session", "arguments": { "opts": { "headless": false, "viewport": {"w": 1280, "h": 720} } } } }`} </pre> </div> </div> )} </div> ) }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JacobFV/mcp-fullstack'

If you have feedback or need assistance with the MCP directory API, please join our Discord server