Playwright MCP
Playwright MCP
Playwright를 사용한 브라우저 자동화 기능을 제공하는 Model Context Protocol (MCP) 서버입니다. 이 서버는 LLM이 구조화된 접근성 스냅샷을 통해 웹 페이지와 상호작용할 수 있게 하여, 스크린샷이나 시각 기반 모델이 필요하지 않습니다.
Playwright MCP vs Playwright CLI
이 패키지는 Playwright에 대한 MCP 인터페이스를 제공합니다. 코딩 에이전트를 사용하는 경우, 대신 CLI+SKILLS를 사용하는 것이 더 유용할 수 있습니다.
CLI: 최신 코딩 에이전트는 점점 더 CLI 기반 워크플로우를 SKILL로 노출하는 방식을 MCP보다 선호합니다. CLI 호출이 토큰 효율성이 더 높기 때문입니다. 즉, 큰 도구 스키마와 장황한 접근성 트리를 모델 컨텍스트에 로드하는 것을 피하여, 에이전트가 간결하고 목적에 맞는 명령을 통해 작업할 수 있습니다. 이로 인해 CLI + SKILLs는 제한된 컨텍스트 창 내에서 대규모 코드베이스, 테스트, 추론과 브라우저 자동화의 균형을 맞춰야 하는 처리량이 높은 코딩 에이전트에 더 적합합니다.Playwright CLI with SKILLS에 대해 자세히 알아보기: Playwright CLI with SKILLS.
MCP: MCP는 지속적인 상태, 풍부한 내부 검사, 페이지 구조에 대한 반복적 추론의 이점을 얻는 특수 에이전트 루프(예: 탐색적 자동화, 자가 치유 테스트, 또는 지속적인 브라우저 컨텍스트 유지가 토큰 비용 우려보다 중요한 장기 실행 자율 워크플로우)에서 여전히 유용합니다.
주요 기능
빠르고 가벼움. Playwright의 접근성 트리를 사용하며, 픽셀 기반 입력을 사용하지 않습니다.
LLM 친화적. 시각 모델이 필요 없으며, 구조화된 데이터만으로 작동합니다.
결정론적 도구 적용. 스크린샷 기반 접근 방식에서 흔한 모호함을 피합니다.
요구 사항
Node.js 18 이상
VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie 또는 기타 MCP 클라이언트
시작하기
먼저, 클라이언트에 Playwright MCP 서버를 설치하세요.
표준 구성은 대부분의 도구에서 작동합니다:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Amp VS Code 확장 설정 화면에서 추가하거나 settings.json 파일을 업데이트하세요:
"amp.mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}Amp CLI 설정:
아래 amp mcp add 명령어를 통해 추가하세요:
amp mcp add playwright -- npx @playwright/mcp@latestAntigravity 설정에서 추가하거나 구성 파일을 업데이트하세요:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}Claude Code CLI를 사용하여 Playwright MCP 서버를 추가하세요:
claude mcp add playwright npx @playwright/mcp@latestMCP 설치 가이드를 따르고, 위의 표준 구성을 사용하세요.
MCP 서버 구성 섹션의 지침을 따르세요.
예: 로컬 설정
cline_mcp_settings.json 파일에 다음을 추가하세요:
{
"mcpServers": {
"playwright": {
"type": "stdio",
"command": "npx",
"timeout": 30,
"args": [
"-y",
"@playwright/mcp@latest"
],
"disabled": false
}
}
}Codex CLI를 사용하여 Playwright MCP 서버를 추가하세요:
codex mcp add playwright npx "@playwright/mcp@latest"또는 구성 파일 ~/.codex/config.toml을 생성하거나 편집하고 다음을 추가하세요:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]자세한 내용은 Codex MCP 문서를 참조하세요.
Copilot CLI를 사용하여 대화형으로 Playwright MCP 서버를 추가하세요:
/mcp add또는 구성 파일 ~/.copilot/mcp-config.json을 생성하거나 편집하고 다음을 추가하세요:
{
"mcpServers": {
"playwright": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"@playwright/mcp@latest"
]
}
}
}자세한 내용은 Copilot CLI 문서를 참조하세요.
버튼을 클릭하여 설치:
또는 수동으로 설치:
Cursor Settings -> MCP -> Add new MCP Server로 이동하세요. 원하는 이름을 지정하고, command 유형에 명령어 npx @playwright/mcp@latest를 사용하세요. Edit을 클릭하여 구성을 확인하거나 인수와 같은 명령어를 추가할 수도 있습니다.
Factory CLI를 사용하여 Playwright MCP 서버를 추가하세요:
droid mcp add playwright "npx @playwright/mcp@latest"또는 Factory droid 내에서 /mcp를 입력하여 MCP 서버 관리를 위한 대화형 UI를 열 수 있습니다.
자세한 내용은 Factory MCP 문서를 참조하세요.
MCP 설치 가이드를 따르고, 위의 표준 구성을 사용하세요.
버튼을 클릭하여 설치:
또는 수동으로 설치:
Advanced settings -> Extensions -> Add custom extension으로 이동하세요. 원하는 이름을 지정하고, 유형은 STDIO를 사용하며, command를 npx @playwright/mcp로 설정하세요. "Add Extension"을 클릭하세요.
Grok CLI를 사용하여 Playwright MCP 서버를 추가하세요:
grok mcp add playwright -- npx @playwright/mcp@latest또는 구성 파일 ~/.grok/config.toml을 생성하거나 편집하고 다음을 추가하세요:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]자세한 내용은 Grok MCP 문서를 참조하세요.
Junie CLI에서 Playwright MCP 서버를 추가하려면:
/mcp입력Ctrl+A를 눌러 새 MCP 서버 추가목록에서 Playwright 선택
또는 .junie/mcp/mcp.json에 추가:
{
"mcpServers": {
"Playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@latest"
]
}
}
}자세한 내용은 Junie MCP 구성 문서를 참조하세요.
MCP 서버 문서를 따르세요. 예를 들어 .kiro/settings/mcp.json에:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}버튼을 클릭하여 설치:
또는 수동으로 설치:
오른쪽 사이드바의 Program -> Install -> Edit mcp.json으로 이동하세요. 위의 표준 구성을 사용하세요.
MCP 서버 문서를 따르세요. 예를 들어 ~/.config/opencode/opencode.json에:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"playwright": {
"type": "local",
"command": [
"npx",
"@playwright/mcp@latest"
],
"enabled": true
}
}
}
VSCode 또는 IntelliJ에서 Qodo Gen 채팅 패널을 열고 → 더 많은 도구 연결 → + 새 MCP 추가 → 위의 표준 구성을 붙여넣으세요.
저장을 클릭하세요.
버튼을 클릭하여 설치:
또는 수동으로 설치:
MCP 설치 가이드를 따르고, 위의 표준 구성을 사용하세요. VS Code CLI를 사용하여 Playwright MCP 서버를 설치할 수도 있습니다:
# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'설치 후, Playwright MCP 서버는 VS Code에서 GitHub Copilot 에이전트와 함께 사용할 수 있습니다.
Settings -> AI -> Manage MCP Servers -> + Add로 이동하여 MCP 서버를 추가하세요. 위의 표준 구성을 사용하세요.
또는 Warp 프롬프트에서 슬래시 명령어 /add-mcp를 사용하고 위의 표준 구성을 붙여넣으세요:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}Windsurf MCP 문서를 따르세요. 위의 표준 구성을 사용하세요.
구성
Playwright MCP 서버는 다음 인수를 지원합니다. 위의 JSON 구성에서 "args" 목록의 일부로 제공할 수 있습니다:
옵션 | 설명 |
--allowed-hosts <hosts...> | 이 서버가 제공할 수 있는 호스트의 쉼표로 구분된 목록입니다. 기본값은 서버가 바인딩된 호스트입니다. 호스트 검사를 비활성화하려면 '*'를 전달하십시오.env |
--allowed-origins | 브라우저가 요청할 수 있는 신뢰할 수 있는 출처의 세미콜론으로 구분된 목록입니다. 기본값은 모든 출처를 허용합니다. 중요: 보안 경계 역할을 하지 않으며 리디렉션에 영향을 주지 않습니다.env |
--allow-unrestricted-file-access | 작업 공간 루트 외부의 파일에 대한 액세스를 허용합니다. 또한 file:// URL에 대한 무제한 액세스를 허용합니다. 기본적으로 파일 시스템 액세스는 작업 공간 루트 디렉터리(루트가 구성되지 않은 경우 cwd)로만 제한되며 file:// URL로의 탐색이 차단됩니다.env |
--blocked-origins | 브라우저가 요청하지 못하도록 차단할 출처의 세미콜론으로 구분된 목록입니다. 차단 목록은 허용 목록보다 먼저 평가됩니다. 허용 목록 없이 사용하는 경우 차단 목록과 일치하지 않는 요청은 여전히 허용됩니다. 중요: 보안 경계 역할을 하지 않으며 리디렉션에 영향을 주지 않습니다.env |
--block-service-workers | 서비스 워커를 차단합니다.env |
--browser | 사용할 브라우저 또는 Chrome 채널입니다. 가능한 값: chrome, firefox, webkit, msedge.env |
--caps | 활성화할 추가 기능의 쉼표로 구분된 목록입니다. 가능한 값: vision, pdf, devtools.env |
--cdp-endpoint | 연결할 CDP 엔드포인트입니다.env |
--cdp-header <headers...> | 연결 요청과 함께 보낼 CDP 헤더입니다. 여러 개를 지정할 수 있습니다.env |
--cdp-timeout | CDP 엔드포인트 연결을 위한 시간 제한(밀리초)입니다. 기본값은 30000ms입니다.env |
--codegen | 코드 생성을 위한 언어를 지정합니다. 가능한 값: "typescript", "python", "java", "csharp", "none". 기본값은 "typescript"입니다.env |
--config | 구성 파일의 경로입니다.env |
--console-level | 반환할 콘솔 메시지의 수준입니다: "error", "warning", "info", "debug". 각 수준은 더 심각한 수준의 메시지를 포함합니다.env |
--device | 에뮬레이트할 장치입니다(예: "iPhone 15").env |
--mobile | 일반 모바일 장치(Chromium의 경우 Pixel 10, WebKit의 경우 iPhone 17)를 에뮬레이트합니다. 모바일 페이지는 일반적으로 더 가벼워서 토큰을 절약합니다. --device와 함께 사용할 수 없습니다.env |
--executable-path | 브라우저 실행 파일의 경로입니다.env |
--extension | 실행 중인 브라우저 인스턴스에 연결합니다(Edge/Chrome만 해당). "Playwright Extension"이 설치되어 있어야 합니다.env |
--endpoint | 연결할 바인딩된 브라우저 엔드포인트입니다.env |
--grant-permissions <permissions...> | 브라우저 컨텍스트에 부여할 권한 목록입니다(예: "geolocation", "clipboard-read", "clipboard-write").env |
--headless | 브라우저를 헤드리스 모드로 실행합니다. 기본값은 헤드 있음입니다.env |
--host | 서버를 바인딩할 호스트입니다. 기본값은 localhost입니다. 모든 인터페이스에 바인딩하려면 0.0.0.0을 사용하십시오.env |
--ignore-https-errors | HTTPS 오류를 무시합니다.env |
--init-page <path...> | Playwright 페이지 개체에서 평가할 TypeScript 파일의 경로입니다.env |
--init-script <path...> | 초기화 스크립트로 추가할 JavaScript 파일의 경로입니다. 이 스크립트는 페이지의 스크립트보다 먼저 모든 페이지에서 평가됩니다. 여러 번 지정할 수 있습니다.env |
--isolated | 브라우저 프로필을 메모리에 유지하고 디스크에 저장하지 않습니다.env |
--image-responses | 클라이언트에 이미지 응답을 보낼지 여부입니다. "allow" 또는 "omit"일 수 있습니다. 기본값은 "allow"입니다.env |
--no-sandbox | 일반적으로 샌드박스 처리되는 모든 프로세스 유형에 대해 샌드박스를 비활성화합니다.env |
--output-dir | 출력 파일을 위한 디렉터리 경로입니다.env |
--output-max-size | 오래된 출력 파일을 제거하는 임계값(바이트)입니다.env |
--port | SSE 전송을 위해 수신 대기할 포트입니다.env |
--proxy-bypass | 프록시를 우회할 쉼표로 구분된 도메인 목록입니다(예: .com,chromium.org,.domain.com).env |
--proxy-server | 프록시 서버를 지정합니다(예: "http://myproxy:3128" 또는 "socks5://myproxy:8080").env |
--sandbox | 일반적으로 샌드박스 처리되지 않는 모든 프로세스 유형에 대해 샌드박스를 활성화합니다.env |
--save-session | Playwright MCP 세션을 출력 디렉터리에 저장할지 여부입니다.env |
--secrets | dotenv 형식의 비밀을 포함하는 파일의 경로입니다.env |
--shared-browser-context | 연결된 모든 HTTP 클라이언트 간에 동일한 브라우저 컨텍스트를 재사용합니다.env |
--snapshot-boxes | 각 요소의 경계 상자를 스냅샷에 [box=x,y,width,height]로 포함합니다. 좌표는 뷰포트 기준이며 CSS 픽셀 단위입니다.env |
--snapshot-mode | 응답을 위해 스냅샷을 찍을 때 사용할 모드를 지정합니다. "full" 또는 "none"일 수 있습니다. 기본값은 "full"입니다.env |
--storage-state | 격리된 세션을 위한 저장 상태 파일의 경로입니다.env |
--test-id-attribute | 테스트 ID에 사용할 속성을 지정합니다. 기본값은 "data-testid"입니다.env |
--timeout-action | 작업 시간 제한(밀리초)을 지정합니다. 기본값은 5000ms입니다.env |
--timeout-navigation | 탐색 시간 제한(밀리초)을 지정합니다. 기본값은 60000ms입니다.env |
--timeout-settle | 각 작업 후 트리거된 작업이 안정될 때까지 대기하는 시간(밀리초)입니다. 기본값은 500ms입니다.env |
--user-agent | 사용자 에이전트 문자열을 지정합니다.env |
--user-data-dir | 사용자 데이터 디렉터리의 경로입니다. 지정하지 않으면 임시 디렉터리가 생성됩니다.env |
--viewport-size | 브라우저 뷰포트 크기를 픽셀 단위로 지정합니다(예: "1280x720").env |
사용자 프로필
일반 브라우저처럼 영구 프로필을 사용하여 Playwright MCP를 실행하거나(기본값), 테스트 세션을 위한 격리된 컨텍스트에서 실행하거나, 브라우저 확장 프로그램을 사용하여 기존 브라우저에 연결할 수 있습니다.
영구 프로필
로그인된 모든 정보는 영구 프로필에 저장됩니다. 세션 사이에 오프라인 상태를 지우려면 프로필을 삭제할 수 있습니다.
영구 프로필은 다음 위치에 있으며 --user-data-dir 인수로 재정의할 수 있습니다.
# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-{workspace-hash}
# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-{workspace-hash}
# Linux
- ~/.cache/ms-playwright/mcp-{channel}-{workspace-hash}{workspace-hash}는 MCP 클라이언트의 작업 공간 루트에서 파생되므로, 다른 프로젝트는 자동으로 별도의 프로필을 사용합니다.
[!IMPORTANT] 영구 프로필은 한 번에 하나의 브라우저 인스턴스에서만 사용할 수 있으므로, 동일한 작업 공간을 공유하는 동시 MCP 클라이언트는 충돌합니다. 여러 클라이언트를 병렬로 실행하려면 각 추가 클라이언트를
--isolated로 시작하거나 고유한--user-data-dir을 지정하십시오.
격리 모드
격리 모드에서는 각 세션이 격리된 프로필에서 시작됩니다. MCP에 브라우저를 닫도록 요청할 때마다 세션이 종료되고 이 세션의 모든 저장 상태가 손실됩니다. 구성의 contextOptions 또는 --storage-state 인수를 통해 브라우저에 초기 저장 상태를 제공할 수 있습니다. 저장 상태에 대한 자세한 내용은 여기에서 확인하세요.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--isolated",
"--storage-state={path/to/storage.json}"
]
}
}
}브라우저 확장 프로그램
Playwright MCP Chrome 확장 프로그램을 사용하면 기존 브라우저 탭에 연결하고 로그인된 세션 및 브라우저 상태를 활용할 수 있습니다. 설치 및 설정 지침은 microsoft/playwright › packages/extension을 참조하세요.
초기 상태
브라우저 컨텍스트 또는 페이지에 초기 상태를 제공하는 여러 가지 방법이 있습니다.
저장 상태의 경우 다음 중 하나를 선택할 수 있습니다.
--user-data-dir인수를 사용하여 사용자 데이터 디렉터리로 시작합니다. 이렇게 하면 모든 브라우저 데이터가 세션 간에 유지됩니다.--storage-state인수를 사용하여 저장 상태 파일로 시작합니다. 이렇게 하면 파일의 쿠키 및 로컬 저장소가 격리된 브라우저 컨텍스트에 로드됩니다.
페이지 상태의 경우 다음을 사용할 수 있습니다.
--init-page를 사용하여 Playwright 페이지 객체에서 평가될 TypeScript 파일을 지정합니다. 이를 통해 페이지를 설정하기 위해 임의의 코드를 실행할 수 있습니다.
// init-page.ts
export default async ({ page }) => {
await page.context().grantPermissions(['geolocation']);
await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 });
await page.setViewportSize({ width: 1280, height: 720 });
};--init-script를 사용하여 초기화 스크립트로 추가될 JavaScript 파일을 지정합니다. 이 스크립트는 페이지의 모든 스크립트보다 먼저 모든 페이지에서 평가됩니다. 브라우저 API를 재정의하거나 환경을 설정하는 데 유용합니다.
// init-script.js
window.isPlaywrightMCP = true;구성 파일
Playwright MCP 서버는 JSON 구성 파일을 사용하여 구성할 수 있습니다. --config 명령줄 옵션을 사용하여 구성 파일을 지정할 수 있습니다.
npx @playwright/mcp@latest --config path/to/config.json{
/**
* The browser to use.
*/
browser?: {
/**
* The type of browser to use.
*/
browserName?: 'chromium' | 'firefox' | 'webkit';
/**
* Keep the browser profile in memory, do not save it to disk.
*/
isolated?: boolean;
/**
* Path to a user data directory for browser profile persistence.
* Temporary directory is created by default.
*/
userDataDir?: string;
/**
* Launch options passed to
* @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
*
* This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
*/
launchOptions?: playwright.LaunchOptions;
/**
* Context options for the browser context.
*
* This is useful for settings options like `viewport`.
*/
contextOptions?: playwright.BrowserContextOptions;
/**
* Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
*/
cdpEndpoint?: string;
/**
* CDP headers to send with the connect request.
*/
cdpHeaders?: Record<string, string>;
/**
* Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
*/
cdpTimeout?: number;
/**
* Remote endpoint to connect to an existing Playwright server. May be a
* WebSocket URL string, or a [ConnectOptions] object that mirrors the
* `connectOptions` shape used by the test runner. When passed as an object,
* `exposeNetwork`, `headers`, `slowMo`, and `timeout` are forwarded to the
* underlying connect call.
*/
remoteEndpoint?: string | playwright.ConnectOptions & { endpoint: string };
/**
* Paths to TypeScript files to add as initialization scripts for Playwright page.
*/
initPage?: string[];
/**
* Paths to JavaScript files to add as initialization scripts.
* The scripts will be evaluated in every page before any of the page's scripts.
*/
initScript?: string[];
},
/**
* Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
* config is ignored.
* Requires the "Playwright Extension" to be installed.
*/
extension?: boolean;
server?: {
/**
* The port to listen on for SSE or MCP transport.
*/
port?: number;
/**
* The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
*/
host?: string;
/**
* The hosts this server is allowed to serve from. Defaults to the host server is bound to.
* This is not for CORS, but rather for the DNS rebinding protection.
*/
allowedHosts?: string[];
},
/**
* List of enabled tool capabilities. Possible values:
* - 'core': Core browser automation features.
* - 'pdf': PDF generation and manipulation.
* - 'vision': Coordinate-based interactions.
* - 'devtools': Developer tools features.
*/
capabilities?: ToolCapability[];
/**
* Whether to save the Playwright session into the output directory.
*/
saveSession?: boolean;
/**
* Reuse the same browser context between all connected HTTP clients.
*/
sharedBrowserContext?: boolean;
/**
* Secrets are used to replace matching plain text in the tool responses to prevent the LLM
* from accidentally getting sensitive data. It is a convenience and not a security feature,
* make sure to always examine information coming in and from the tool on the client.
*/
secrets?: Record<string, string>;
/**
* The directory to save output files.
*/
outputDir?: string;
/**
* Threshold for evicting old output files, in bytes.
*/
outputMaxSize?: number;
console?: {
/**
* The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
*/
level?: 'error' | 'warning' | 'info' | 'debug';
},
network?: {
/**
* List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
allowedOrigins?: string[];
/**
* List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
blockedOrigins?: string[];
};
/**
* Specify the attribute to use for test ids, defaults to "data-testid".
*/
testIdAttribute?: string;
timeouts?: {
/*
* Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
*/
action?: number;
/*
* Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
*/
navigation?: number;
/**
* Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
*/
expect?: number;
/**
* How long to wait after each action for triggered work (navigations, requests) to settle before responding. Defaults to 500ms.
*/
settle?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
*/
imageResponses?: 'allow' | 'omit';
snapshot?: {
/**
* When taking snapshots for responses, specifies the mode to use.
*/
mode?: 'full' | 'none';
/**
* Whether to include each element's bounding box as [box=x,y,width,height] in snapshots.
* Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect).
*/
boxes?: boolean;
};
/**
* allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
* wandering outside its intended workspace. It is a convenience defense to catch unintended
* file access, not a secure boundary; a deliberate attempt to reach other directories can be
* easily worked around, so always rely on client-level permissions for true security.
*/
allowUnrestrictedFileAccess?: boolean;
/**
* Specify the language to use for code generation.
*/
codegen?: 'typescript' | 'python' | 'java' | 'csharp' | 'none';
}독립형 MCP 서버
디스플레이가 없는 시스템이나 IDE의 작업자 프로세스에서 헤드 브라우저를 실행할 때는 DISPLAY가 설정된 환경에서 MCP 서버를 실행하고 HTTP 전송을 활성화하려면 --port 플래그를 전달하세요.
npx @playwright/mcp@latest --port 8931그런 다음 MCP 클라이언트 구성에서 url을 HTTP 엔드포인트로 설정합니다.
{
"mcpServers": {
"playwright": {
"url": "http://localhost:8931/mcp"
}
}
}Related MCP server: Playwright MCP Server
보안
Playwright MCP는 보안 경계가 아닙니다. 배포 보안에 대한 지침은 MCP 보안 모범 사례를 참조하세요.
참고: 현재 Docker 구현은 헤드리스 Chromium만 지원합니다.
{
"mcpServers": {
"playwright": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
}
}
}또는 MCP 클라이언트가 스폰하도록 하는 대신 컨테이너를 장기 실행 서비스로 실행하려면 다음을 사용하세요.
docker run -d -i --rm --init --pull=always \
--entrypoint node \
--name playwright \
-p 8931:8931 \
mcr.microsoft.com/playwright/mcp \
/app/cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0서버는 호스트 포트 8931에서 수신 대기하며 모든 MCP 클라이언트가 연결할 수 있습니다.
직접 Docker 이미지를 빌드할 수 있습니다.
docker build -t mcr.microsoft.com/playwright/mcp .import http from 'http';
import { createConnection } from '@playwright/mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
http.createServer(async (req, res) => {
// ...
// Creates a headless Playwright MCP server with SSE transport
const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
const transport = new SSEServerTransport('/messages', res);
await connection.connect(transport);
// ...
});도구
browser_click
제목: 클릭
설명: 웹 페이지에서 클릭을 수행합니다.
매개변수:
element(문자열, 선택 사항): 요소와 상호 작용할 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명target(문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자doubleClick(부울, 선택 사항): 단일 클릭 대신 더블 클릭을 수행할지 여부button(문자열, 선택 사항): 클릭할 버튼, 기본값은 왼쪽modifiers(배열, 선택 사항): 누를 수정자 키
읽기 전용: false
browser_close
제목: 브라우저 닫기
설명: 페이지를 닫습니다.
매개변수: 없음
읽기 전용: false
browser_console_messages
제목: 콘솔 메시지 가져오기
설명: 모든 콘솔 메시지를 반환합니다.
매개변수:
level(문자열): 반환할 콘솔 메시지의 수준. 각 수준에는 더 심각한 수준의 메시지가 포함됩니다. 기본값은 "info"입니다.all(부울, 선택 사항): 세션 시작 이후가 아니라 마지막 탐색 이후의 모든 콘솔 메시지를 반환할지 여부. 기본값은 false입니다.filename(문자열, 선택 사항): 콘솔 메시지를 저장할 파일 이름. 제공되지 않으면 메시지가 텍스트로 반환됩니다.
읽기 전용: true
browser_drag
제목: 마우스 드래그
설명: 두 요소 간에 드래그 앤 드롭을 수행합니다.
매개변수:
startElement(문자열, 선택 사항): 요소와 상호 작용할 권한을 얻는 데 사용되는 사람이 읽을 수 있는 소스 요소 설명startTarget(문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자endElement(문자열, 선택 사항): 요소와 상호 작용할 권한을 얻는 데 사용되는 사람이 읽을 수 있는 대상 요소 설명endTarget(문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
읽기 전용: false
browser_drop
제목: 요소에 파일 또는 데이터 드롭
설명: 페이지 외부에서 드래그한 것처럼 요소에 파일 또는 MIME 유형 데이터를 드롭합니다. "paths" 또는 "data" 중 하나 이상을 제공해야 합니다.
매개변수:
element(문자열, 선택 사항): 요소와 상호 작용할 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명target(문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자paths(배열, 선택 사항): 요소에 드롭할 파일의 절대 경로.data(객체, 선택 사항): 드롭할 데이터, MIME 유형을 문자열 값에 매핑한 맵 (예: {"text/plain": "hello", "text/uri-list": "https://example.com"}).
읽기 전용: false
browser_evaluate
제목: JavaScript 평가
설명: 페이지 또는 요소에서 JavaScript 표현식을 평가합니다.
매개변수:
element(문자열, 선택 사항): 요소와 상호 작용할 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명target(문자열, 선택 사항): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자function(문자열): () => { /* 코드 / } 또는 요소가 제공된 경우 (element) => { / 코드 */ }filename(문자열, 선택 사항): 결과를 저장할 파일 이름. 제공되지 않으면 결과가 텍스트로 반환됩니다.
읽기 전용: false
browser_file_upload
제목: 파일 업로드
설명: 하나 이상의 파일을 업로드합니다.
매개변수:
paths(배열, 선택 사항): 업로드할 파일의 절대 경로. 단일 파일 또는 여러 파일일 수 있습니다. 생략하면 파일 선택기가 취소됩니다.
읽기 전용: false
browser_fill_form
제목: 양식 채우기
설명: 여러 양식 필드를 채웁니다.
매개변수:
fields(배열): 채울 필드
읽기 전용: false
browser_find
제목: 페이지 스냅샷에서 찾기
설명: 현재 페이지의 접근성 스냅샷에서 텍스트 또는 정규식을 검색합니다. 일치하는 스냅샷 노드를 주변 컨텍스트의 몇 줄(검색 스니펫과 유사)과 함께 반환하며, 각각 트리 루트에서의 경로 아래에 표시됩니다. 전체 스냅샷을 캡처하는 것보다 저렴하며 요소와 해당 참조만 찾으면 될 때 유용합니다.
매개변수:
text(문자열, 선택 사항): 페이지 스냅샷에서 검색할 일반 텍스트(대소문자 구분 없는 부분 문자열 일치). text 또는 regex 중 하나만 제공하십시오.regex(문자열, 선택 사항): 페이지 스냅샷에서 검색할 정규식. 일치는 기본적으로 대소문자를 구분합니다. 플래그를 추가하려면 패턴을 슬래시로 감싸십시오. 예: "/error/i" (대소문자 구분 없음). text 또는 regex 중 하나만 제공하십시오.
읽기 전용: true
browser_handle_dialog
제목: 대화 상자 처리
설명: 대화 상자를 처리합니다.
매개변수:
accept(부울): 대화 상자를 수락할지 여부.promptText(문자열, 선택 사항): 프롬프트 대화 상자의 경우 프롬프트 텍스트.
읽기 전용: false
browser_hover
제목: 마우스 호버
설명: 페이지의 요소 위로 마우스를 가져갑니다.
매개변수:
element(문자열, 선택 사항): 요소와 상호 작용할 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명target(문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
읽기 전용: false
browser_navigate
제목: URL로 이동
설명: URL로 이동합니다.
매개변수:
url(문자열): 이동할 URL
읽기 전용: false
browser_navigate_back
제목: 뒤로 가기
설명: 기록에서 이전 페이지로 돌아갑니다.
매개변수: 없음
읽기 전용: false
browser_network_request
제목: 네트워크 요청 세부 정보 표시
설명: 단일 네트워크 요청의 전체 세부 정보(헤더 및 본문)를 반환하거나,
part가 설정된 경우 단일 부분을 반환합니다. browser_network_requests의 번호를 사용하십시오.매개변수:
index(정수): browser_network_requests에서 출력된 요청의 1부터 시작하는 인덱스.part(문자열, 선택 사항): 요청의 이 부분만 반환합니다. 생략하면 전체 세부 정보를 반환합니다.filename(문자열, 선택 사항): 결과를 저장할 파일 이름. 제공되지 않으면 출력이 텍스트로 반환됩니다.
읽기 전용: true
browser_network_requests
제목: 네트워크 요청 나열
설명: 페이지 로드 이후의 네트워크 요청에 번호가 매겨진 목록을 반환합니다. 전체 세부 정보를 얻으려면 번호와 함께 browser_network_request를 사용하십시오.
매개변수:
static(부울): 이미지, 글꼴, 스크립트 등 성공적인 정적 리소스를 포함할지 여부. 기본값은 false입니다.filter(문자열, 선택 사항): URL이 이 정규식과 일치하는 요청만 반환합니다(예: "/api/."user").filename(문자열, 선택 사항): 네트워크 요청을 저장할 파일 이름. 제공되지 않으면 요청이 텍스트로 반환됩니다.
읽기 전용: true
browser_press_key
제목: 키 누르기
설명: 키보드의 키를 누릅니다.
매개변수:
key(string): 누를 키의 이름 또는 생성할 문자(예:ArrowLeft또는a)
읽기 전용: false
browser_resize
제목: 브라우저 창 크기 조정
설명: 브라우저 창의 크기를 조정합니다.
매개변수:
width(number): 브라우저 창의 너비height(number): 브라우저 창의 높이
읽기 전용: false
browser_run_code_unsafe
제목: Playwright 코드 실행 (안전하지 않음)
설명: Playwright 코드 조각을 실행합니다. 안전하지 않음: Playwright 서버 프로세스에서 임의의 JavaScript를 실행하며 RCE와 동등합니다.
매개변수:
code(string, 선택 사항): 실행할 Playwright 코드가 포함된 JavaScript 함수입니다. 단일 인수page로 호출되며, 이를 사용하여 페이지와 상호작용할 수 있습니다. 예:async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }filename(string, 선택 사항): 지정된 파일에서 코드를 로드합니다.code와filename이 모두 제공되면code는 무시됩니다.
읽기 전용: false
browser_select_option
제목: 옵션 선택
설명: 드롭다운에서 옵션을 선택합니다.
매개변수:
element(string, 선택 사항): 요소와 상호작용할 권한을 얻기 위해 사용되는 사람이 읽을 수 있는 요소 설명target(string): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유 요소 선택자values(array): 드롭다운에서 선택할 값의 배열입니다. 단일 값 또는 여러 값일 수 있습니다.
읽기 전용: false
browser_snapshot
제목: 페이지 스냅샷
설명: 현재 페이지의 접근성 스냅샷을 캡처합니다. 스크린샷보다 더 좋습니다.
매개변수:
target(string, 선택 사항): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유 요소 선택자filename(string, 선택 사항): 응답으로 반환하는 대신 스냅샷을 마크다운 파일로 저장합니다.depth(number, 선택 사항): 스냅샷 트리의 깊이 제한boxes(boolean, 선택 사항): 각 요소의 경계 상자를 스냅샷에[box=x,y,width,height]로 포함합니다. 좌표는 뷰포트 기준이며 CSS 픽셀 단위입니다(Element.getBoundingClientRect).
읽기 전용: true
browser_take_screenshot
제목: 스크린샷 찍기
설명: 현재 페이지의 스크린샷을 찍습니다. 스크린샷을 기반으로 작업을 수행할 수 없습니다. 작업에는
browser_snapshot을 사용하세요.매개변수:
element(string, 선택 사항): 요소와 상호작용할 권한을 얻기 위해 사용되는 사람이 읽을 수 있는 요소 설명target(string, 선택 사항): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유 요소 선택자type(string, 선택 사항): 스크린샷의 이미지 형식입니다. 설정하지 않으면 파일 확장자에서 유추되며, 그렇지 않으면 png입니다.filename(string, 선택 사항): 스크린샷을 저장할 파일 이름입니다. 지정하지 않으면 기본값은page-{timestamp}.{png|jpeg|webp}입니다. 출력 디렉터리 내에 유지하려면 상대 파일 이름을 선호합니다.fullPage(boolean, 선택 사항): true인 경우 현재 보이는 뷰포트 대신 전체 스크롤 가능한 페이지의 스크린샷을 찍습니다. 요소 스크린샷과 함께 사용할 수 없습니다.scale(string): 이미지 해상도 배율입니다. "css"는 CSS 픽셀 단위의 스크린샷을 생성합니다(더 작고 장치 간 일관됨). "device"는 장치 픽셀을 사용하여 고해상도 스크린샷을 생성합니다(더 크고 장치 픽셀 비율을 고려함). 기본값은 css입니다.
읽기 전용: true
browser_type
제목: 텍스트 입력
설명: 편집 가능한 요소에 텍스트를 입력합니다.
매개변수:
element(string, 선택 사항): 요소와 상호작용할 권한을 얻기 위해 사용되는 사람이 읽을 수 있는 요소 설명target(string): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유 요소 선택자text(string): 요소에 입력할 텍스트submit(boolean, 선택 사항): 입력한 텍스트를 제출할지 여부(Enter 키 누름)slowly(boolean, 선택 사항): 한 번에 한 문자씩 입력할지 여부입니다. 페이지의 키 핸들러를 트리거하는 데 유용합니다. 기본적으로 전체 텍스트가 한 번에 채워집니다.
읽기 전용: false
browser_wait_for
제목: 대기
설명: 텍스트가 나타나거나 사라지거나 지정된 시간이 경과할 때까지 기다립니다.
매개변수:
time(number, 선택 사항): 대기할 시간(초)text(string, 선택 사항): 기다릴 텍스트textGone(string, 선택 사항): 사라질 때까지 기다릴 텍스트
읽기 전용: false
browser_tabs
제목: 탭 관리
설명: 브라우저 탭을 나열, 생성, 닫기 또는 선택합니다.
매개변수:
action(string): 수행할 작업index(number, 선택 사항): 탭 인덱스, 닫기/선택에 사용됩니다. 닫기에서 생략하면 현재 탭이 닫힙니다.url(string, 선택 사항): 새 탭에서 이동할 URL, 새 탭 생성에 사용됩니다.
읽기 전용: false
browser_get_config
제목: 구성 가져오기
설명: CLI 옵션, 환경 변수 및 구성 파일을 병합한 후 최종 해결된 구성을 가져옵니다.
매개변수: 없음
읽기 전용: true
browser_network_state_set
제목: 네트워크 상태 설정
설명: 브라우저 네트워크 상태를 온라인 또는 오프라인으로 설정합니다. 오프라인인 경우 모든 네트워크 요청이 실패합니다.
매개변수:
state(string): 오프라인 모드를 시뮬레이션하려면 "offline"으로 설정하고, 네트워크 연결을 복원하려면 "online"으로 설정합니다.
읽기 전용: false
browser_route
제목: 네트워크 요청 모의
설명: URL 패턴과 일치하는 네트워크 요청을 모의(mock)하는 경로를 설정합니다.
매개변수:
pattern(string): 일치시킬 URL 패턴 (예: "/api/users", "/*.{png,jpg}")status(number, 선택 사항): 반환할 HTTP 상태 코드 (기본값: 200)body(string, 선택 사항): 응답 본문 (텍스트 또는 JSON 문자열)contentType(string, 선택 사항): Content-Type 헤더 (예: "application/json", "text/html")headers(array, 선택 사항): "Name: Value" 형식으로 추가할 헤더removeHeaders(string, 선택 사항): 요청에서 제거할 헤더 이름의 쉼표로 구분된 목록
읽기 전용: false
browser_route_list
제목: 네트워크 경로 나열
설명: 모든 활성 네트워크 경로를 나열합니다.
매개변수: 없음
읽기 전용: true
browser_unroute
제목: 네트워크 경로 제거
설명: 패턴과 일치하는 네트워크 경로를 제거합니다(패턴을 지정하지 않으면 모든 경로 제거).
매개변수:
pattern(string, 선택 사항): 제거할 URL 패턴 (모든 경로를 제거하려면 생략)
읽기 전용: false
browser_cookie_clear
제목: 쿠키 지우기
설명: 모든 쿠키를 지웁니다.
매개변수: 없음
읽기 전용: false
browser_cookie_delete
제목: 쿠키 삭제
설명: 특정 쿠키를 삭제합니다.
매개변수:
name(string): 삭제할 쿠키 이름
읽기 전용: false
browser_cookie_get
제목: 쿠키 가져오기
설명: 이름으로 특정 쿠키를 가져옵니다.
매개변수:
name(string): 가져올 쿠키 이름
읽기 전용: true
browser_cookie_list
제목: 쿠키 나열
설명: 모든 쿠키를 나열합니다(선택적으로 도메인/경로로 필터링).
매개변수:
domain(string, 선택 사항): 도메인별로 쿠키 필터링path(string, 선택 사항): 경로별로 쿠키 필터링
읽기 전용: true
browser_cookie_set
제목: 쿠키 설정
설명: 선택적 플래그(domain, path, expires, httpOnly, secure, sameSite)와 함께 쿠키를 설정합니다.
매개변수:
name(string): 쿠키 이름value(string): 쿠키 값domain(string, 선택 사항): 쿠키 도메인path(string, 선택 사항): 쿠키 경로expires(number, 선택 사항): Unix 타임스탬프로 쿠키 만료httpOnly(boolean, 선택 사항): 쿠키가 HTTP 전용인지 여부secure(boolean, 선택 사항): 쿠키가 보안인지 여부sameSite(string, 선택 사항): 쿠키 SameSite 속성
읽기 전용: false
browser_localstorage_clear
제목: localStorage 지우기
설명: 모든 localStorage를 지웁니다.
매개변수: 없음
읽기 전용: false
browser_localstorage_delete
제목: localStorage 항목 삭제
설명: localStorage 항목을 삭제합니다.
매개변수:
key(string): 삭제할 키
읽기 전용: false
browser_localstorage_get
제목: localStorage 항목 가져오기
설명: 키로 localStorage 항목을 가져옵니다.
매개변수:
key(string): 가져올 키
읽기 전용: true
browser_localstorage_list
제목: localStorage 나열
설명: 모든 localStorage 키-값 쌍을 나열합니다.
매개변수: 없음
읽기 전용: true
browser_localstorage_set
제목: localStorage 항목 설정
설명: localStorage 항목을 설정합니다.
매개변수:
key(string): 설정할 키value(string): 설정할 값
읽기 전용: false
browser_sessionstorage_clear
제목: sessionStorage 지우기
설명: 모든 sessionStorage를 지웁니다.
매개변수: 없음
읽기 전용: false
browser_sessionstorage_delete
제목: sessionStorage 항목 삭제
설명: sessionStorage 항목을 삭제합니다.
매개변수:
key(string): 삭제할 키
읽기 전용: false
browser_sessionstorage_get
제목: sessionStorage 항목 가져오기
설명: 키로 sessionStorage 항목을 가져옵니다.
매개변수:
key(string): 가져올 키
읽기 전용: true
browser_sessionstorage_list
제목: sessionStorage 나열
설명: 모든 sessionStorage 키-값 쌍을 나열합니다.
매개변수: 없음
읽기 전용: true
browser_sessionstorage_set
제목: sessionStorage 항목 설정
설명: sessionStorage 항목을 설정합니다.
매개변수:
key(string): 설정할 키value(string): 설정할 값
읽기 전용: false
browser_set_storage_state
제목: 저장 상태 복원
설명: 파일에서 저장 상태(쿠키, 로컬 스토리지)를 복원합니다. 복원하기 전에 기존 쿠키와 로컬 스토리지를 지웁니다.
매개변수:
filename(string): 복원할 저장 상태 파일의 경로
읽기 전용: false
browser_storage_state
제목: 저장 상태 저장
설명: 저장 상태(쿠키, 로컬 스토리지)를 나중에 재사용하기 위해 파일에 저장합니다.
매개변수:
filename(string, 선택 사항): 저장 상태를 저장할 파일 이름. 지정하지 않으면 기본값은storage-state-{timestamp}.json입니다.
읽기 전용: true
browser_annotate
제목: 현재 페이지에 주석 달기
설명: 현재 페이지에 대해 주석 모드로 Playwright Dashboard를 열고 사용자가 주석을 그릴 때까지 기다립니다. 주석이 포함된 스크린샷, ARIA 스냅샷 및 주석 목록을 반환합니다.
매개변수: 없음
읽기 전용: true
browser_hide_highlight
제목: 요소 하이라이트 숨기기
설명: 이전에 요소에 추가된 하이라이트 오버레이를 제거합니다.
매개변수:
element(string, 선택 사항): 하이라이트를 추가할 때 사용된 사람이 읽을 수 있는 요소 설명; browser_highlight에 전달된 값과 일치해야 합니다.target(string, 선택 사항): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유 요소 선택자
읽기 전용: true
browser_highlight
제목: 요소 하이라이트
설명: 페이지의 요소 주위에 지속적인 하이라이트 오버레이를 표시합니다.
매개변수:
element(string, 선택 사항): 요소와 상호작용하기 위한 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명target(string): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유 요소 선택자style(string, 선택 사항): 하이라이트 오버레이에 적용되는 추가 인라인 CSS (예: "outline: 2px dashed red").
읽기 전용: true
browser_resume
제목: 일시 중지된 스크립트 실행 재개
설명: 일시 중지된 스크립트 실행을 재개합니다. step이 true로 설정된 경우 다음 작업 전에 실행이 다시 일시 중지됩니다.
매개변수:
step(boolean, 선택 사항): true인 경우 다음 작업 전에 실행이 다시 일시 중지되어 단계별 디버깅이 가능합니다.location(string, 선택 사항): 특정 :에서 실행을 일시 중지합니다 (예: "example.spec.ts:42").
읽기 전용: false
browser_start_tracing
제목: 추적 시작
설명: 추적 기록 시작
매개변수: 없음
읽기 전용: true
browser_start_video
제목: 비디오 시작
설명: 비디오 기록 시작
매개변수:
filename(string, 선택 사항): 비디오를 저장할 파일 이름.size(object, 선택 사항): 비디오 크기
읽기 전용: true
browser_stop_tracing
제목: 추적 중지
설명: 추적 기록 중지
매개변수: 없음
읽기 전용: true
browser_stop_video
제목: 비디오 중지
설명: 비디오 기록 중지
매개변수: 없음
읽기 전용: true
browser_video_chapter
제목: 비디오 챕터
설명: 비디오 기록에 챕터 마커를 추가합니다. 흐릿한 배경의 전체 화면 챕터 카드를 표시합니다.
매개변수:
title(string): 챕터 제목description(string, 선택 사항): 챕터 설명duration(number, 선택 사항): 챕터 카드를 표시할 시간(밀리초)
읽기 전용: true
browser_video_hide_actions
제목: 작업 오버레이 숨기기
설명: 페이지에서 수행된 작업에 주석을 추가하는 것을 중지합니다.
매개변수: 없음
읽기 전용: true
browser_video_show_actions
제목: 작업 오버레이 표시
설명: 페이지에서 수행되는 후속 작업에 작업 이름을 지정하고 대상 요소를 강조 표시하는 콜아웃을 추가합니다. 비디오 녹화 또는 스크린캐스트 중에 유용합니다.
매개변수:
duration(number, 선택 사항): 각 작업 주석이 화면에 유지되는 시간(밀리초). 기본값은 500입니다.position(string, 선택 사항): 페이지를 기준으로 작업 제목을 배치할 위치. 기본값은 오른쪽 상단입니다.cursor(string, 선택 사항): 포인터 작업에 대한 커서 장식. "pointer"(기본값)는 이전 작업 지점에서 다음 작업 지점으로 마우스 포인터를 애니메이션합니다. "none"은 커서 장식을 비활성화합니다.
읽기 전용: true
browser_mouse_click_xy
제목: 클릭
설명: 주어진 위치에서 마우스 버튼 클릭
매개변수:
x(number): X 좌표y(number): Y 좌표button(string, 선택 사항): 클릭할 버튼, 기본값은 왼쪽clickCount(number, 선택 사항): 클릭 횟수, 기본값은 1delay(number, 선택 사항): 마우스 다운과 마우스 업 사이의 대기 시간(밀리초), 기본값은 0
읽기 전용: false
browser_mouse_down
제목: 마우스 누르기
설명: 마우스 버튼 누르기
매개변수:
button(string, 선택 사항): 누를 버튼, 기본값은 왼쪽
읽기 전용: false
browser_mouse_drag_xy
제목: 마우스 드래그
설명: 왼쪽 마우스 버튼을 주어진 위치로 드래그
매개변수:
startX(number): 시작 X 좌표startY(number): 시작 Y 좌표endX(number): 끝 X 좌표endY(number): 끝 Y 좌표
읽기 전용: false
browser_mouse_move_xy
제목: 마우스 이동
설명: 마우스를 주어진 위치로 이동
매개변수:
x(number): X 좌표y(number): Y 좌표
읽기 전용: false
browser_mouse_up
제목: 마우스 놓기
설명: 마우스 버튼 놓기
매개변수:
button(string, 선택 사항): 놓을 버튼, 기본값은 왼쪽
읽기 전용: false
browser_mouse_wheel
제목: 마우스 휠 스크롤
설명: 마우스 휠 스크롤
매개변수:
deltaX(number): X 델타deltaY(number): Y 델타
읽기 전용: false
browser_pdf_save
제목: PDF로 저장
설명: 페이지를 PDF로 저장
매개변수:
filename(string, 선택 사항): PDF를 저장할 파일 이름. 지정하지 않으면 기본값은page-{timestamp}.pdf입니다. 출력 디렉터리 내에 유지하려면 상대 파일 이름을 선호합니다.
읽기 전용: true
browser_generate_locator
제목: 요소에 대한 로케이터 생성
설명: 테스트에서 사용할 수 있도록 지정된 요소에 대한 로케이터를 생성합니다.
매개변수:
element(string, 선택 사항): 요소와 상호작용하기 위한 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명target(string): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유 요소 선택자
읽기 전용: true
browser_verify_element_visible
제목: 요소 표시 확인
설명: 요소가 페이지에 표시되는지 확인합니다.
매개변수:
role(string): 요소의 역할(ROLE). 스냅샷에서 다음과 같이 찾을 수 있습니다:- {ROLE} "Accessible Name":accessibleName(string): 요소의 접근 가능한 이름(ACCESSIBLE_NAME). 스냅샷에서 다음과 같이 찾을 수 있습니다:- role "{ACCESSIBLE_NAME}"
읽기 전용: false
browser_verify_list_visible
제목: 목록 표시 확인
설명: 목록이 페이지에 표시되는지 확인합니다.
매개변수:
element(string): 사람이 읽을 수 있는 목록 설명target(string): 목록을 가리키는 정확한 대상 요소 참조items(array): 확인할 항목
읽기 전용: false
browser_verify_text_visible
제목: 텍스트 표시 확인
설명: 텍스트가 페이지에 표시되는지 확인합니다. 가능하면 browser_verify_element_visible을 선호합니다.
매개변수:
text(string): 확인할 텍스트(TEXT). 스냅샷에서 다음과 같이 찾을 수 있습니다:- role "Accessible Name": {TEXT}또는- text: {TEXT}
읽기 전용: false
browser_verify_value
제목: 값 확인
설명: 요소 값 확인
매개변수:
type(string): 요소 유형element(string): 사람이 읽을 수 있는 요소 설명target(string): 페이지 스냅샷의 정확한 대상 요소 참조value(string): 확인할 값. 체크박스의 경우 "true" 또는 "false"를 사용하세요.
읽기 전용: false
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceA Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots, providing browser automation capabilities without requiring screenshots or visually-tuned models.6Apache 2.0
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots, providing browser automation capabilities without requiring screenshots or visually tuned models.717,591Apache 2.0
- AlicenseAqualityDmaintenanceA server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages through structured accessibility snapshots without requiring screenshots or vision models.224,819,8221Apache 2.0
- Alicense-qualityDmaintenanceA Model Context Protocol server that provides browser automation capabilities by allowing LLMs to interact with web pages through structured accessibility snapshots. It enables fast, lightweight interaction with web content without the need for vision-tuned models or visual processing.Apache 2.0
Related MCP Connectors
E2LLM gives your AI eyes and hands in a real browser: structured perception (SiFR) plus action.
Live browser debugging for AI assistants — DOM, console, network via MCP.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/DavidG-BLW/MCP_DOCS'
If you have feedback or need assistance with the MCP directory API, please join our Discord server