Skip to main content
Glama

Playwright MCP Server

Official
by microsoft
status.tsx3.1 kB
/** * Copyright (c) Microsoft Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import React, { useState, useEffect } from 'react'; import { createRoot } from 'react-dom/client'; import { Button, TabItem } from './tabItem'; import type { TabInfo } from './tabItem'; import { AuthTokenSection } from './authToken'; interface ConnectionStatus { isConnected: boolean; connectedTabId: number | null; connectedTab?: TabInfo; } const StatusApp: React.FC = () => { const [status, setStatus] = useState<ConnectionStatus>({ isConnected: false, connectedTabId: null }); useEffect(() => { void loadStatus(); }, []); const loadStatus = async () => { // Get current connection status from background script const { connectedTabId } = await chrome.runtime.sendMessage({ type: 'getConnectionStatus' }); if (connectedTabId) { const tab = await chrome.tabs.get(connectedTabId); setStatus({ isConnected: true, connectedTabId, connectedTab: { id: tab.id!, windowId: tab.windowId!, title: tab.title!, url: tab.url!, favIconUrl: tab.favIconUrl } }); } else { setStatus({ isConnected: false, connectedTabId: null }); } }; const openConnectedTab = async () => { if (!status.connectedTabId) return; await chrome.tabs.update(status.connectedTabId, { active: true }); window.close(); }; const disconnect = async () => { await chrome.runtime.sendMessage({ type: 'disconnect' }); window.close(); }; return ( <div className='app-container'> <div className='content-wrapper'> {status.isConnected && status.connectedTab ? ( <div> <div className='tab-section-title'> Page with connected MCP client: </div> <div> <TabItem tab={status.connectedTab} button={ <Button variant='primary' onClick={disconnect}> Disconnect </Button> } onClick={openConnectedTab} /> </div> </div> ) : ( <div className='status-banner'> No MCP clients are currently connected. </div> )} <AuthTokenSection /> </div> </div> ); }; // Initialize the React app const container = document.getElementById('root'); if (container) { const root = createRoot(container); root.render(<StatusApp />); }

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/microsoft/playwright-mcp'

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