MCP Puppeteer Linux Server
MCP-퍼펫티어-리눅스
Puppeteer를 사용하여 브라우저 자동화 기능을 제공하는 모델 컨텍스트 프로토콜(MLP) 서버로, Linux 디스플레이 서버(X11 및 Wayland)를 완벽하게 지원합니다. 이 서버를 통해 LLM은 실제 브라우저 환경에서 웹 페이지와 상호 작용하고, 스크린샷을 찍고, JavaScript를 실행할 수 있습니다.
디스플레이 서버 지원
이 포크는 Linux 디스플레이 서버에 대한 자동 감지 및 구성을 추가합니다.
자동 X11/Wayland 감지
동적 환경 변수 구성
다양한 데스크톱 환경 지원(GNOME, KDE 등)
폴백 메커니즘 및 강력한 오류 처리
XWayland 호환성
Related MCP server: Playwright MCP Server
구성 요소
도구
꼭두각시 조종자_탐색
브라우저에서 모든 URL로 이동합니다.
입력:
url(문자열)
인형 조종사 스크린샷
전체 페이지 또는 특정 요소의 스크린샷을 캡처합니다.
입력:
name(문자열, 필수): 스크린샷의 이름selector(문자열, 선택 사항): 스크린샷을 찍을 요소에 대한 CSS 선택기width(숫자, 선택 사항, 기본값: 800): 스크린샷 너비height(숫자, 선택 사항, 기본값: 600): 스크린샷 높이
꼭두각시_클릭
페이지의 요소를 클릭하세요
입력:
selector(문자열): 클릭할 요소에 대한 CSS 선택기
인형극 배우기_호버
페이지에 요소 올려놓기
입력:
selector(문자열): 호버할 요소에 대한 CSS 선택기
인형극_채우기
입력 필드를 작성하세요
입력:
selector(문자열): 입력 필드에 대한 CSS 선택기value(문자열): 채울 값
꼭두각시 선택
SELECT 태그로 요소를 선택하세요
입력:
selector(문자열): 선택할 요소에 대한 CSS 선택기value(문자열): 선택할 값
인형극 평가자
브라우저 콘솔에서 JavaScript 실행
입력:
script(문자열): 실행할 JavaScript 코드
자원
서버는 두 가지 유형의 리소스에 대한 액세스를 제공합니다.
콘솔 로그 (
console://logs)텍스트 형식의 브라우저 콘솔 출력
브라우저의 모든 콘솔 메시지를 포함합니다.
스크린샷 (
screenshot://<name>)캡처된 스크린샷의 PNG 이미지
캡처 중에 지정된 스크린샷 이름을 통해 접근 가능
주요 특징
Linux 디스플레이 서버 지원을 통한 브라우저 자동화
자동 X11/Wayland 감지 및 구성
콘솔 로그 모니터링
스크린샷 기능
JavaScript 실행
기본 웹 상호작용(탐색, 클릭, 양식 작성)
구성
클로드 데스크톱 구성
지엑스피1
설치
Smithery를 통해 설치
Smithery를 통해 Claude Desktop에 Puppeteer Linux를 자동으로 설치하려면:
npx -y @smithery/cli install @PhialsBasement/mcp-puppeteer-linux --client claude수동 설치
저장소를 복제합니다.
git clone https://github.com/PhialsBasement/MCP-Puppeteer-Linux.git종속성 설치:
npm install서버를 시작합니다:
ts-node index.ts서버 세부 정보 표시
서버는 자동으로 적절한 디스플레이 환경을 감지하고 구성합니다.
Wayland 지원
WAYLAND_DISPLAY통해 Wayland 세션을 감지합니다.필요한 환경 변수를 구성합니다.
WAYLAND_DISPLAYQT_QPA_PLATFORMGDK_BACKENDMOZ_ENABLE_WAYLANDXDG_SESSION_TYPE
X11 지원
기존 X11 세션에 대한 대체
X11 관련 변수를 처리합니다.
DISPLAYXAUTHORITY
다양한 데스크톱 환경 및 창 관리자 지원
특허
이 MCP 서버는 MIT 라이선스에 따라 라이선스가 부여됩니다. 즉, MIT 라이선스의 조건에 따라 소프트웨어를 자유롭게 사용, 수정 및 배포할 수 있습니다. 자세한 내용은 프로젝트 저장소의 LICENSE 파일을 참조하세요.
Available Tools
7 toolspuppeteer_clickC
Click an element on the page
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for element to click |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Click' implies a user interaction simulation, it doesn't describe what happens after clicking (e.g., page navigation, form submission, JavaScript execution), potential errors (e.g., element not found), or whether it waits for page loads. This leaves significant behavioral gaps for an automation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core functionality without any wasted words. It's perfectly front-loaded with the essential action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a browser automation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what constitutes success/failure, what happens after clicking, or how this integrates with the broader Puppeteer context. The agent would need to guess about important behavioral aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, with the single parameter 'selector' clearly documented as a CSS selector. The description adds no additional parameter information beyond what's in the schema, so it meets the baseline for high schema coverage without providing extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Click') and target ('an element on the page'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'puppeteer_hover' which also targets page elements, nor does it specify that this is for browser automation versus general clicking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'puppeteer_hover' or 'puppeteer_fill'. It doesn't mention prerequisites such as requiring a page to be loaded first, nor does it specify typical use cases like form submission or navigation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
puppeteer_evaluateC
Execute JavaScript in the browser console
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | JavaScript code to execute |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Execute JavaScript in the browser console' implies a read/write operation, it doesn't specify critical details like execution context (e.g., page vs. frame), error handling, security implications, or whether it returns values. For a tool that can potentially modify page state, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and context, making it immediately understandable without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of executing arbitrary JavaScript in a browser (which can have side effects, security risks, and varied outputs), the description is inadequate. With no annotations, no output schema, and minimal behavioral context, it fails to prepare an agent for proper use. The description should address execution scope, return values, or error conditions to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'script' clearly documented as 'JavaScript code to execute'. The description adds no additional semantic context beyond this, such as examples of valid scripts or constraints. Since the schema already does the heavy lifting, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Execute JavaScript') and location ('in the browser console'), making the purpose immediately understandable. However, it doesn't differentiate this tool from potential sibling tools that might also execute JavaScript, such as if there were a 'puppeteer_evaluate_inline' or similar variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. Given the sibling tools include actions like click, fill, hover, navigate, screenshot, and select, there's no indication whether this tool is for general scripting versus specific interactions, or what scenarios warrant its use over the more specialized siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
puppeteer_fillC
Fill out an input field
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for input field | |
| value | Yes | Value to fill |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('fill out') but doesn't describe what this entails—e.g., whether it simulates typing, triggers events, requires the element to be visible, or has side effects. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words, making it highly concise and front-loaded. Every word contributes to stating the tool's purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a browser automation tool with no annotations and no output schema, the description is inadequate. It lacks details on behavior, error handling, or return values, failing to compensate for the missing structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for both parameters (selector and value). The description adds no additional meaning beyond what the schema provides, such as examples or constraints, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('fill out') and target ('an input field'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like puppeteer_click or puppeteer_select, which also interact with page elements, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a page loaded), exclusions, or comparisons to sibling tools like puppeteer_select for dropdowns, leaving usage context implied but unspecified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
puppeteer_hoverC
Hover an element on the page
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for element to hover |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't describe behavioral traits such as whether it waits for the element to be visible, handles errors if the selector doesn't exist, or triggers page events. For a browser automation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and target, making it easy to parse. Every word earns its place, achieving maximum clarity in minimal space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of browser automation and the lack of annotations or output schema, the description is incomplete. It doesn't explain what happens after hovering (e.g., whether it returns a value or triggers side effects), error handling, or interaction with page state. For a tool with no structured behavioral data, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'selector' parameter clearly documented as a CSS selector. The description doesn't add any meaning beyond what the schema provides, such as examples or constraints on selector syntax. Baseline score of 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('hover') and target ('an element on the page'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from its siblings like 'puppeteer_click' or 'puppeteer_select', which also interact with page elements. The purpose is clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios where hovering is appropriate (e.g., triggering dropdowns or tooltips) versus when clicking or other interactions might be better. There's no context about prerequisites or exclusions, leaving usage entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
puppeteer_screenshotC
Take a screenshot of the current page or a specific element
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the screenshot | |
| selector | No | CSS selector for element to screenshot | |
| width | No | Width in pixels (default: 800) | |
| height | No | Height in pixels (default: 600) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but doesn't describe what happens: e.g., does it save the screenshot to a file, return it as data, or require specific permissions? It omits details like potential side effects (e.g., might pause execution), error conditions, or output format, which are critical for a tool with no structured behavioral hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and target, making it easy to parse. Every part of the sentence earns its place by clarifying scope ('current page or a specific element').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a screenshot tool with no annotations and no output schema, the description is incomplete. It doesn't address key aspects: what the output is (e.g., file path, base64 data), how errors are handled, or behavioral traits like whether it waits for page load. For a tool that interacts with a browser and produces visual data, more context is needed to ensure correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter descriptions in the schema (e.g., 'CSS selector for element to screenshot', default values for width/height). The description adds minimal value beyond the schema by implying 'current page' as a default when no selector is provided, but it doesn't explain parameter interactions or provide examples. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Take a screenshot') and target ('current page or a specific element'), which is specific and actionable. It distinguishes from sibling tools like puppeteer_click or puppeteer_navigate by focusing on capturing visual output rather than interaction or navigation. However, it doesn't explicitly differentiate from all siblings (e.g., puppeteer_evaluate might also capture data).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., requires a page to be loaded), exclusions, or comparisons with other screenshot or capture methods. With siblings like puppeteer_evaluate that might retrieve page content differently, this lack of context leaves the agent guessing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
puppeteer_selectC
Select an element on the page with Select tag
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for element to select | |
| value | Yes | Value to select |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but lacks details on what 'select' entails (e.g., does it simulate a user click, change a dropdown value, or trigger events?), potential side effects, error handling, or performance considerations. This is a significant gap for a tool that likely modifies page state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero waste. It front-loads the key action and target efficiently, making it easy to parse quickly. Every word contributes to understanding the tool's purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of interacting with web elements (likely involving state changes) and no annotations or output schema, the description is incomplete. It doesn't explain what happens after selection (e.g., does it return something, trigger page updates?), error cases, or dependencies. This leaves gaps for an agent to use the tool effectively in a browser automation context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for both parameters (selector and value). The description adds no additional meaning beyond the schema, such as examples or constraints (e.g., valid CSS selector formats or value matching). Baseline 3 is appropriate since the schema adequately documents the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Select') and target ('element on the page with Select tag'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like puppeteer_click or puppeteer_fill, which might also interact with page elements. The description is specific about the element type (Select tag) but could be more precise about what 'select' means in this context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a page loaded), exclusions, or comparisons to siblings like puppeteer_fill for input fields. Without this context, an agent might struggle to choose between similar tools for interacting with web elements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
7 tool updates
- First observed
puppeteer_click - First observed
puppeteer_evaluate - First observed
puppeteer_fill - First observed
puppeteer_hover - First observed
puppeteer_navigate - First observed
puppeteer_screenshot - First observed
puppeteer_select
TDQS
Each tool has a clearly distinct purpose targeting specific browser automation actions. Click, fill, hover, navigate, screenshot, evaluate, and select all perform unique operations with no overlap in functionality.
All tools follow the exact same 'puppeteer_verb' naming pattern consistently. The verb-noun structure is uniform across all seven tools with no deviations in style or convention.
Seven tools is well-scoped for a Puppeteer automation server. Each tool represents a fundamental browser interaction that earns its place, providing essential coverage without being overwhelming or insufficient.
The toolset covers core browser automation workflows including navigation, interaction, and content capture. Minor gaps exist such as missing wait/network tools or file uploads, but agents can work around these with existing tools like evaluate.
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 Connectors
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Headless browser primitives for AI agents when sites need real JS rendering.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environment10277299MIT
- AlicenseBqualityDmaintenanceA server that enables browser automation using Playwright, allowing interaction with web pages, capturing screenshots, and executing JavaScript in a browser environment through LLMs.1218,1221MIT
- FlicenseAqualityDmaintenanceEnables LLM-powered browser automation and security testing with features like browser management, network monitoring, DOM manipulation, and captcha handling.521-
- AlicenseNot gradedqualityDmaintenanceEnables browser automation using Playwright, allowing LLMs to interact with web pages, take screenshots, generate test code, scrape web pages, and execute JavaScript in a real browser environment.18,122MIT
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/PhialsBasement/MCP-Puppeteer-Linux'
If you have feedback or need assistance with the MCP directory API, please join our Discord server