termux-puppeteer-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@termux-puppeteer-mcpTake a screenshot of example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.shThe script will automatically:
Install proot-distro
Install Alpine Linux
Install Chromium and Node.js in Alpine
Install Puppeteer in Alpine
Set up the MCP server in Termux
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:
puppeteer_navigate - Navigate to a URL and get page content/title
puppeteer_screenshot - Take screenshots (returns base64)
puppeteer_pdf - Generate PDFs from URLs (returns base64)
puppeteer_evaluate - Execute JavaScript in page context
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.jsThe server communicates via stdio using the MCP protocol.
How It Works
MCP server runs in Termux (native Android environment)
When a tool is called, it generates Puppeteer JavaScript code
Code is executed inside Alpine Linux using
proot-distro login alpineChromium runs in Alpine with appropriate flags (
--no-sandbox, etc.)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 scriptindex.js- MCP server implementationpackage.json- Node.js dependencies.mcp.json- MCP server configuration for Claude CodeREADME.md- This fileSETUP.md- Detailed setup guide
Sharing
To share this setup online:
The
setup.shscript contains all installation stepsUsers can run it on any Termux installation
Works on ARM64 Android devices without root
License
MIT - Feel free to use and modify
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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