Skip to main content
Glama
kevintpeng

termux-puppeteer-mcp

by kevintpeng

Termux Puppeteer MCP Server

A Puppeteer MCP (Model Context Protocol) server that works on Android Termux by running Chromium inside an Alpine Linux container via proot-distro.

Why This Exists

Standard Puppeteer MCP servers don't work on Android/Termux because:

  • No ARM build of Chrome exists

  • Puppeteer requires a Chromium-based browser

This solution uses Alpine Linux in a containerized environment to run Chromium, while the MCP server runs in Termux and bridges commands to Alpine.

Related MCP server: Chrome MCP Docker

Quick Setup

Automated installation (recommended):

bash setup.sh

The script will automatically:

  1. Install proot-distro

  2. Install Alpine Linux

  3. Install Chromium and Node.js in Alpine

  4. Install Puppeteer in Alpine

  5. Set up the MCP server in Termux

  6. Create configuration files

No device root required!

Takes about 5-10 minutes depending on your connection.

Manual Setup

If already set up or prefer manual installation:

  • ✅ Alpine Linux installed via proot-distro

  • ✅ Chromium installed in Alpine

  • ✅ Node.js and npm in both Termux and Alpine

  • ✅ Puppeteer installed in Alpine

Available Tools

The server provides these Puppeteer tools via MCP:

  1. puppeteer_navigate - Navigate to a URL and get page content/title

  2. puppeteer_screenshot - Take screenshots (returns base64)

  3. puppeteer_pdf - Generate PDFs from URLs (returns base64)

  4. puppeteer_evaluate - Execute JavaScript in page context

  5. puppeteer_click - Click elements on pages

Usage with Claude Code

Add this to your Claude Code MCP settings:

{
  "mcpServers": {
    "puppeteer": {
      "command": "node",
      "args": ["/data/data/com.termux/files/home/termux-puppeteer-mcp/index.js"]
    }
  }
}

Or use the absolute path to node:

{
  "mcpServers": {
    "puppeteer": {
      "command": "/data/data/com.termux/files/usr/bin/node",
      "args": ["/data/data/com.termux/files/home/termux-puppeteer-mcp/index.js"]
    }
  }
}

Testing

You can test the server using the MCP inspector or by running:

node index.js

The server communicates via stdio using the MCP protocol.

How It Works

  1. MCP server runs in Termux (native Android environment)

  2. When a tool is called, it generates Puppeteer JavaScript code

  3. Code is executed inside Alpine Linux using proot-distro login alpine

  4. Chromium runs in Alpine with appropriate flags (--no-sandbox, etc.)

  5. Results are returned back through the MCP protocol

Example Commands

From Claude Code:

  • "Take a screenshot of example.com"

  • "Get the title of google.com"

  • "Generate a PDF of github.com"

  • "Click the login button on example.com"

Notes

  • No device root required (proot works without root)

  • Chromium runs in headless mode

  • Screenshots are compressed JPEG (quality 60%, 800x600) to fit MCP token limits

  • PDFs are returned as base64

  • The proot warning about sanitizing bindings is normal and can be ignored

Files

  • setup.sh - Automated installation script

  • index.js - MCP server implementation

  • package.json - Node.js dependencies

  • .mcp.json - MCP server configuration for Claude Code

  • README.md - This file

  • SETUP.md - Detailed setup guide

Sharing

To share this setup online:

  1. The setup.sh script contains all installation steps

  2. Users can run it on any Termux installation

  3. Works on ARM64 Android devices without root

License

MIT - Feel free to use and modify

Available Tools

9 tools
close_sessionA

Close a browser session and free up resources. Sessions auto-close after timeout, but explicit closing is recommended.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesThe session ID to close

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, yet the description only mentions closing and freeing resources without detailing side effects, failure modes, or idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise, front-loaded sentences with no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks output schema and does not describe success/failure behavior, but for a simple close action it is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters (sessionId described). The description adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Close') and resource ('browser session'), clearly distinguishing it from siblings like create_session or list_sessions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States that explicit closing is recommended even though sessions auto-close, providing context for when to invoke the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_sessionA

Create a new browser session for multi-step workflows. Returns a sessionId that persists state between calls. Sessions auto-expire after 5 minutes of inactivity.

ParametersJSON Schema
NameRequiredDescriptionDefault
metadataNoOptional metadata to attach to the session (e.g., agentId, purpose)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses creation, sessionId return, state persistence, and auto-expiration. It does not mention resource consumption or the need to call close_session, but overall it is transparent about key behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the primary action. Every sentence adds value: creation, return value, and expiration. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains the return value. It covers creation, persistence, and expiration. However, it does not address potential errors (e.g., session limit) or prerequisites, but for a simple tool, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, 'metadata', is described as 'Optional metadata to attach to the session (e.g., agentId, purpose).' This adds meaningful examples beyond the schema description, enhancing understanding of its usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Create a new browser session for multi-step workflows.' This is a specific verb+resource combination that distinguishes it from sibling tools like close_session (destroys) and list_sessions (lists).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'multi-step workflows' and auto-expiration after 5 minutes, providing clear context for when to use the tool. However, it does not explicitly state when not to use it or name alternatives, though siblings provide indirect guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_page_contentB

Get the HTML content of the current page. Requires sessionId.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID (required)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and description lacks disclosure of behavioral traits. Does not specify if it is read-only, idempotent, or any side effects. Missing error scenarios like invalid session or unloaded page.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with purpose, no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks details about return format (HTML string), error handling, or prerequisites (e.g., page must be navigated). Given no output schema, the description could provide more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with sessionId described. The description only repeats the requirement, adding minimal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('HTML content of the current page'). It distinguishes from sibling tools like puppeteer_screenshot (image) and puppeteer_navigate (navigation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like puppeteer_evaluate or list_sessions. Only mentions requirement of sessionId, but does not explain context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sessionsA

List all active browser sessions with their status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavioral traits. It indicates a read-only listing operation with status, but does not disclose any side effects, permission requirements, or potential rate limits. For a simple list operation, this is adequate but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly states the tool's purpose. Every word is informative, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (zero parameters, no output schema, no annotations), the description is mostly complete. It specifies what the tool lists and that status is included. However, it could benefit from clarifying the status format or the definition of 'active', but overall it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the input schema already provides full coverage (100%). The description adds no parameter-specific information, but since there are no parameters, a baseline score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: listing all active browser sessions with their status. It uses a specific verb ('list') and resource ('browser sessions'), and distinguishes itself from sibling tools like create_session and close_session.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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 create_session or close_session. It implicitly covers the typical use case for listing sessions, but lacks explicit context about prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

puppeteer_clickC

Click an element on the current page. Requires sessionId to maintain state after navigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYesCSS selector for the element to click
sessionIdYesSession ID (required for stateful operation)
waitForNavigationNoWait for navigation after click

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It does not mention potential side effects like navigation (despite the waitForNavigation parameter), element visibility requirements, or error conditions. The agent cannot infer that clicking may trigger network requests or state changes beyond the stated navigation wait.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that conveys the core action and a key requirement. While very concise, it lacks structured information (e.g., separate usage notes), but the brevity is not excessive given the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description is incomplete. It does not explain return values (e.g., success boolean, error messages), error handling for invalid selectors or missing sessionId, or what happens when waitForNavigation is true. The minimal information forces reliance on the parameter schema alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all three parameters with descriptions, achieving 100% coverage. The description adds value by explaining the purpose of sessionId ('maintain state after navigation'), but does not elaborate on selector usage or waitForNavigation behavior beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Click an element') and the context ('on the current page'), distinguishing it from sibling tools like puppeteer_navigate or puppeteer_screenshot. However, it does not explicitly differentiate from puppeteer_evaluate, which could also simulate clicks via JavaScript.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the requirement for sessionId 'to maintain state after navigation', but provides no guidance on when to use this tool versus alternatives (e.g., puppeteer_evaluate for programmatic clicks, or puppeteer_navigate for page transitions). No when-not-to-use or exclusion criteria are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

puppeteer_evaluateB

Execute JavaScript in the page context and return the result. Requires sessionId.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYesJavaScript code to execute (can use return statement)
sessionIdYesSession ID (required)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description does not disclose potential side effects (e.g., modifying page state) or whether the execution is read-only. 'Return the result' is vague about what gets returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. Front-loaded with the core action. Perfectly concise for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks explanation of return value format (e.g., serialized JSON?) and error handling. Given no output schema, description should detail what 'result' means. Still minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so description adds no extra meaning beyond what the schema already provides for both 'script' and 'sessionId'. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action ('Execute JavaScript') and the resource ('in the page context'), and distinguishes from sibling tools like puppeteer_click or puppeteer_navigate by focusing on JavaScript evaluation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., get_page_content for HTML, puppeteer_click for interaction). Only mentions sessionId requirement, not contextual usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

puppeteer_navigateA

Navigate to a URL and get the page content/title. If sessionId provided, uses existing session. Otherwise creates a temporary session.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to navigate to
sessionIdNoOptional session ID to use. If not provided, creates a temporary session.
waitUntilNoWhen to consider navigation finished: load, domcontentloaded, networkidle0, or networkidle2networkidle2

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for disclosing behavioral traits. It only notes session behavior and the fact that it gets page content/title, but lacks details on timeouts, error handling, navigation failure behavior, or what happens with redirects. This is insufficient for a navigation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no redundant information. Every word serves a clear purpose, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and no output schema, the description should provide more context about the return value, error scenarios, prerequisites (e.g., must have a browser session), and constraints. It only covers session management and basic purpose, leaving significant gaps for an agent to use it reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds minimal extra value beyond the schema: it reiterates the sessionId behavior. It does not explain the waitUntil parameter or url format beyond what the schema already provides, so no bonus points.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Navigate to a URL and get the page content/title.' This identifies the action (navigate) and the resource (URL) distinctly, and it differentiates from sibling tools like puppeteer_click or puppeteer_screenshot, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance on session reuse: 'If sessionId provided, uses existing session. Otherwise creates a temporary session.' This helps the agent decide when to pass a session ID. However, it does not explicitly mention when to use this tool versus alternatives (e.g., using get_page_content without navigation), though the context is largely implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

puppeteer_screenshotB

Take a screenshot of the current page state and return as base64 JPEG. If sessionId provided, screenshots the current state. Otherwise navigates to URL first.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to screenshot (only used if sessionId not provided)
sessionIdNoSession ID to screenshot current state
widthNoViewport width in pixels
heightNoViewport height in pixels
delayNoAdditional delay in milliseconds after page load
waitForSelectorNoCSS selector to wait for before taking screenshot

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It mentions return format as base64 JPEG but omits important details such as whether it waits for full page load, the impact of delay and waitForSelector, viewport behavior, and any limitations (e.g., full-page screenshots, popups).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no filler. The purpose and conditional use are front-loaded, making it efficient for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, no output schema, and sibling tools, the description is incomplete. It fails to explain the return format details (e.g., size limits), full-page vs viewport behavior, the role of delay/waitForSelector in execution, and how it differs from puppeteer_screenshot_debug or puppeteer_navigate + manual screenshot.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description only adds conditional logic for sessionId vs url, which is already implied by the parameter descriptions. No additional meaning beyond the schema is provided for other parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool takes a screenshot and returns base64 JPEG. It distinguishes between using an existing session (sessionId) vs navigating to a URL. However, it does not differentiate from the sibling tool puppeteer_screenshot_debug, which likely has a similar purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance on when to use sessionId vs url. However, it lacks comparison with sibling tools (e.g., puppeteer_screenshot_debug, puppeteer_navigate) and does not specify prerequisites like needing an active session or URL validity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

puppeteer_screenshot_debugA

Take a screenshot and save it to a file, then open with termux-open for debugging. Works with sessionId to capture current state.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to screenshot (only used if sessionId not provided)
sessionIdNoSession ID to screenshot current state
widthNoViewport width in pixels
heightNoViewport height in pixels
filenameNoOutput filename (defaults to screenshot-{timestamp}.jpg)
delayNoAdditional delay in milliseconds after page load

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses file save and termux-open side effects, but could mention it's non-destructive and potential implications of saving files.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the action and purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers basic purpose but lacks details on parameter interactions (e.g., url vs sessionId precedence), return value, and differentiation from sibling screenshot tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

100% schema coverage means schema already describes parameters. Description adds little beyond saying 'Works with sessionId', which is already in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it takes a screenshot, saves to file, and opens for debugging. The name includes 'debug' to differentiate from sibling puppeteer_screenshot, but it could be more explicit about the distinct use case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use for debugging and mentions sessionId, but no explicit guidance on when to use this vs puppeteer_screenshot, nor when not to use it.

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.

  1. 9 tool updatesv2.0.0
    • First observedclose_session
    • First observedcreate_session
    • First observedget_page_content
    • First observedlist_sessions
    • First observedpuppeteer_click
    • First observedpuppeteer_evaluate
    • First observedpuppeteer_navigate
    • First observedpuppeteer_screenshot
    • First observedpuppeteer_screenshot_debug

TDQS

B3.3/5.0
Disambiguation3/5

Most tools are distinct, but puppeteer_screenshot and puppeteer_screenshot_debug overlap in purpose (both take screenshots), and get_page_content and puppeteer_navigate both return page content. This could cause confusion for an agent.

Naming Consistency2/5

Naming is inconsistent: some tools use verb_noun snake_case (close_session, create_session), while others use a 'puppeteer_' prefix with lowercase verb (puppeteer_click, puppeteer_navigate). This mixed pattern reduces predictability.

Tool Count5/5

9 tools is well-scoped for a browser automation server, covering essential session management and page interaction actions without excess.

Completeness3/5

Basic operations are covered (navigate, click, evaluate, screenshot, get content), but common actions like form filling and element waiting are missing, leaving notable gaps for complex workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Chromium browser instances through Puppeteer for inspecting dev builds, capturing screenshots, and automating UI interactions. Features permission-gated tools for secure browser navigation, DOM manipulation, and JavaScript evaluation.
    17
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI coding assistants to control a persistent Chrome browser through DevTools Protocol. Supports web navigation, screenshots, element interaction, mobile testing, console logs, and network debugging in a stable Docker environment.
    10
    7
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Real browser automation for Termux/Android. Runs Firefox or Chromium on Xvfb on your phone with a persistent daemon for sub-second commands.
    18
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides browser automation and DevTools capabilities via Puppeteer, with Docker support for consistent environments.
    1,832
    MIT

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/kevintpeng/termux-puppeteer-mcp'

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