Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
loginA

Orchestrate login and persist Playwright storageState. Strategies: password form, HTTP Basic, bearer/token inject, OAuth cookies/tokens, manual/OAuth window, reuse profileId. Auto (headless) when enough creds/tokens are provided; otherwise opens a headed window and waits.

DO NOT use this tool for Google OAuth / Sign in with Google, Microsoft/Apple/Discord social login, Cloudflare bot walls, or other restricted IdPs — those require set_session_auth. If you are about to open a headed login for Google OAuth, stop and follow the Restricted auth user-message template instead.

Example input:

{
  "siteUrl": "https://app.example.com",
  "authUrl": "https://app.example.com/login",
  "username": "user@example.com",
  "password": "secret"
}

Example success: { "ok": true, "profileId": "prof_abc", "strategy": "password" }

set_session_authA

Inject user-browser credentials into Playwright (restricted auth). ALWAYS saves profileId; optional sessionId applies to a live session.

BEFORE calling this tool: you MUST already have sent the user (same conversation) the login URL + Network Cookie steps + JS snippet from server instructions. Never call this tool "speculatively" without first giving those instructions. Never open headed login for Google OAuth — use this flow.

Triggers: Google OAuth / Sign in with Google, Gmail/Google apps, Microsoft/Entra, Apple, Discord OAuth, Cloudflare Turnstile on login, Okta/Auth0 social IdP, or any login Playwright cannot complete.

Accepts credentialsJson from the console snippet (Cookie header + storage) or Playwright storageState JSON.

Example (after user pastes):

{
  "siteUrl": "https://mail.google.com/",
  "credentialsJson": "{...paste from user...}"
}

Returns: { "ok": true, "profileId": "prof_…", "strategy": "restricted_auth" }

start_sessionA

Start a Playwright Chromium session (headless or windowed) and keep it open. Optional recordVideoPath enables WebM capture at 1920×1080 @ deviceScaleFactor 2 with synthetic cursor and always-on click highlight. When recording, demoMode is on (narrate defaults true): orchestrate auto-paces to TTS. Pass profileId from login or set_session_auth to reuse auth.

Example:

{
  "startUrl": "https://app.example.com/dashboard",
  "headed": false,
  "recordVideoPath": "C:/Videos/demo-clip.webm",
  "profileId": "prof_abc"
}

Returns: { "sessionId": "sess_…", "headed": false, "recording": true, "demoMode": true, "startUrl": "…" }

query_sessionsA

List all active sessions with sessionId, url, title, recording, createdAt, headed.

query_sessionB

Fast page digest for LLM navigation decisions: url, title, viewport, ariaSnapshot, interactive controls. Example: { "sessionId": "sess_01HXYZ" }

orchestrate_sessionA

Execute ordered tap/cursor/keyboard actions. Recording/demoMode: server synthesizes TTS from narration|description, runs the action, holds until VO ends. startMs/endMs are ignored for pacing while recording (placeholders OK). fill=false for live typing. Testing (no recording): startMs/endMs pace the batch; each call clock starts near 0. Optional recordStepsPath writes an MD log. Recording also writes sibling .cues.json.

Example (demo):

{
  "sessionId": "sess_01HXYZ",
  "commands": [
    {
      "action": "click",
      "description": "Open Settings from the sidebar",
      "startMs": 0,
      "endMs": 1000,
      "selector": "nav >> text=Settings",
      "speed": "fast"
    },
    {
      "action": "type",
      "description": "Enter the billing search query",
      "narration": "Now we search for billing.",
      "startMs": 0,
      "endMs": 1000,
      "selector": "input[type=search]",
      "text": "billing",
      "fill": false
    }
  ]
}
end_sessionA

End a session and finalize recorded video if any. Recording sessions: trims idle head/tail using cues.json actionSpan, then returns videoPath. Example: { "sessionId": "sess_01HXYZ" } Returns: { "ok": true, "videoPath": "C:/Videos/demo-clip.webm" }

compile_demoA

Compile demo clips + slate segways into one narrated MP4. Pipeline: convert (minterpolate 60fps H.264) → burn captions → VO → splice. For recorded clips, pass videoPath only — loads sibling .cues.json (wins over hand-authored narration). Slates still take explicit narration.

Example:

{
  "outputPath": "C:/Videos/final-demo.mp4",
  "fast": false,
  "content": [
    {
      "kind": "slate",
      "eyebrow": "INTRO",
      "heading": "Product Demo",
      "body": "A quick walkthrough",
      "durationMs": 3000,
      "narration": [{ "startMs": 0, "endMs": 2800, "text": "Welcome to the demo." }]
    },
    {
      "kind": "clip",
      "videoPath": "C:/Videos/demo-clip.webm"
    }
  ]
}

Prompts

Interactive templates invoked by user choice

NameDescription
workflowsIntended EasyPlaywrightMCP workflows for automated testing and demo videos

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/Macioa/EasyPlaywrightMCP'

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