Skip to main content
Glama
popup.html9.24 kB
<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <title>YetiBrowser</title> <style> body { font-family: system-ui, sans-serif; margin: 0; padding: 16px; width: 320px; background: #10131a; color: #f4f5f7; } .header { display: flex; gap: 12px; align-items: center; margin-bottom: 12px; } .header img { width: 32px; height: 32px; border-radius: 8px; } h1 { font-size: 16px; margin: 0; } .tab-info { font-size: 12px; margin: 4px 0; display: flex; flex-direction: column; gap: 2px; } .tab-info a { color: inherit; text-decoration: none; opacity: 0.7; } .tab-info a:hover { text-decoration: underline; } button { width: 100%; padding: 8px 12px; margin-top: 8px; border: none; border-radius: 6px; font-size: 14px; cursor: pointer; } button.primary { background: #2563eb; color: white; } button.first { margin-top: 0; } button.middle { margin-top: 4px; } button.secondary { background: transparent; border: 1px solid rgba(255, 255, 255, 0.2); color: inherit; } button:disabled { opacity: 0.5; cursor: not-allowed; } .status { font-size: 13px; line-height: 1.4; } .tertiary { margin-top: 0; background: rgba(255, 255, 255, 0.08); color: inherit; border: 1px solid rgba(255, 255, 255, 0.12); } .danger { background: #dc2626; color: #fff; } button.last { margin-top: 4px; } .danger:disabled { opacity: 0.4; color: rgba(255, 255, 255, 0.8); } dl.meta { margin: 0 0 12px 0; padding: 8px 12px; border-radius: 8px; background: rgba(255, 255, 255, 0.04); font-size: 13px; } dl.meta div { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 6px; } dl.meta div:last-child { margin-bottom: 0; } dl.meta span.label { opacity: 0.6; } dl.meta span.value { font-weight: 500; } .status.error { color: #f87171; } .config { margin: 12px 0 16px 0; padding: 12px; border-radius: 8px; background: rgba(255, 255, 255, 0.04); display: flex; flex-direction: column; gap: 10px; font-size: 13px; } .config-row-horizontal { display: flex; align-items: center; gap: 8px; } .config-label-inline { opacity: 0.7; min-width: 80px; } .config-select-inline { flex: 1; height: 32px; padding: 0 10px; border-radius: 6px; border: 1px solid rgba(255, 255, 255, 0.16); background: rgba(4, 6, 12, 0.4); color: inherit; font: inherit; display: flex; align-items: center; } .config-select-inline:focus { outline: 2px solid rgba(96, 165, 250, 0.65); outline-offset: 1px; } .config-select-inline:disabled { opacity: 0.6; cursor: not-allowed; } .config-manual { display: flex; flex-direction: column; } .config-manual[hidden] { display: none !important; } .inline-button { width: auto; margin: 0; height: 32px; padding: 0 16px; white-space: nowrap; display: flex; align-items: center; gap: 6px; justify-content: center; border: 1px solid rgba(255, 255, 255, 0.2); background: transparent; color: inherit; border-radius: 6px; cursor: pointer; font: inherit; font-size: 14px; } .inline-button:disabled { opacity: 0.5; cursor: not-allowed; } .apply { min-width: 70px; } .icon-button { padding: 0 10px; min-width: 32px; } .icon-button svg { width: 16px; height: 16px; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .status-with-spinner { display: inline-flex; align-items: center; gap: 6px; } .status-spinner { width: 10px; height: 10px; border-width: 2px; } .spinner { width: 12px; height: 12px; border: 2px solid rgba(255, 255, 255, 0.2); border-top-color: rgba(255, 255, 255, 0.8); border-radius: 50%; animation: spin 0.6s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .hint { font-size: 12px; opacity: 0.6; margin-top: 12px; } .hint a { color: #60a5fa; text-decoration: none; } .hint a:hover { text-decoration: underline; } </style> </head> <body> <header class="header"> <img id="header-icon" src="icons/128.png" alt="YetiBrowser icon" /> <div> <h1>YetiBrowser MCP</h1> </div> </header> <div class="tab-info" id="tab-info" hidden> <span id="tab-name"></span> <a id="tab-url" href="#" target="_blank" rel="noreferrer"></a> </div> <dl class="meta"> <div><span class="label">Connected tab</span><span class="value" id="connected-tab">None</span></div> <div><span class="label">Status</span><span class="value status error" id="status">Not connected</span></div> <div> <span class="label">Server</span> <span class="value error status-with-spinner" id="server-status"> <span id="server-spinner" class="spinner status-spinner" hidden></span> <span id="server-status-text">No server found</span> </span> </div> </dl> <div class="config" id="port-config"> <div class="config-row-horizontal"> <label for="port-mode" class="config-label-inline">Connection</label> <select id="port-mode" class="config-select-inline"> <option value="auto">Automatic</option> <option value="manual">Manual</option> </select> <button id="reconnect" class="secondary inline-button icon-button" type="button" aria-label="Reconnect" title="Reconnect" > <span class="sr-only">Reconnect</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-reload" > <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M19.933 13.041a8 8 0 1 1 -9.925 -8.788c3.899 -1 7.935 1.007 9.425 4.747" /> <path d="M20 4v5h-5" /> </svg> </button> </div> <div class="config-manual" id="port-manual-group" hidden> <div class="config-row-horizontal"> <label for="port-select" class="config-label-inline">Port</label> <select id="port-select" class="config-select-inline"> <option value="9010">9010</option> <option value="9011">9011</option> <option value="9012">9012</option> <option value="9013">9013</option> <option value="9014">9014</option> <option value="9015">9015</option> <option value="9016">9016</option> <option value="9017">9017</option> <option value="9018">9018</option> <option value="9019">9019</option> <option value="9020">9020</option> </select> <button id="apply-port" class="secondary inline-button apply"> <span id="apply-text">Apply</span> <span id="apply-spinner" class="spinner" hidden></span> </button> </div> </div> </div> <button id="connect" class="primary first">Connect this tab</button> <button id="go-to-tab" class="tertiary middle" disabled>Go to connected tab</button> <button id="disconnect" class="danger last" disabled>Disconnect</button> <p class="hint"> Open the tab you want to control, then click "Connect". Need setup help? See the <a class="doc-link" href="https://github.com/yetidevworks/yetibrowser-mcp" target="_blank" rel="noreferrer" >YetiBrowser MCP guide</a >. </p> <script type="module" src="popup.js"></script> </body> </html>

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/yetidevworks/yetibrowser-mcp'

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