pywebview-mcp
Playwright-style MCP server for pywebview apps that lets AI assistants see, control, and debug Python desktop web UIs without modifying source code.
README
pywebview-mcp
Playwright-style MCP server for pywebview apps — lets AI assistants see, control, and debug your Python desktop web UI without modifying your app's source code.
AI assistant → MCP tools → pywebview-mcp server → HTTP bridge → pywebview app
Features
- Screenshot the webview page via CDP (edgechromium/qt)
- Inspect the full DOM tree (tag, id, role, text, bounds)
- Click, type, scroll, press keys — full page interaction
- Find elements by CSS selector, text, role, or tag
- call_api — invoke
js_apimethods directly from Python (skip DOM when the app exposes an API) - eval_js / eval_python — run code in the page or app process
- Read Python logs captured from the app
- Launch and stop the app directly from Claude
Zero changes to your app's source code required.
Requirements
- Python 3.11+
- pywebview 6.0+
- uv (recommended)
- Windows (tested with WebView2), Linux/macOS (should work with supported renderers)
Installation
| Component | Where it runs | Needs pywebview? |
|---|---|---|
MCP server (pywebview-mcp) |
AI client's MCP process | No |
Bridge (via launch_app) |
Inside your pywebview app | Uses project's existing pywebview |
No changes to the target project. launch_app(cwd=…) runs
uv run --with pywebview-mcp@git python -m pywebview_mcp main.py — the bridge
is injected at runtime; nothing is added to pyproject.toml.
MCP server — Cursor
Add to %USERPROFILE%\.cursor\mcp.json or project .cursor/mcp.json:
{
"mcpServers": {
"pywebview": {
"command": "uvx",
"args": ["--from", "git+https://github.com/com55/pywebview-mcp", "pywebview-mcp"]
}
}
}
Local development:
{
"mcpServers": {
"pywebview": {
"command": "uv",
"args": ["run", "--directory", "/path/to/pywebview-mcp", "pywebview-mcp"]
}
}
}
Optional custom port:
"env": { "PYWEBVIEW_MCP_PORT": "7891", "PYWEBVIEW_MCP_CDP_PORT": "9222" }
MCP server — Claude Code
claude mcp add -s user pywebview -- uvx --from git+https://github.com/com55/pywebview-mcp pywebview-mcp
Or install the plugin (MCP + skill):
claude plugin install github:com55/pywebview-mcp
Running your app with the bridge
From MCP (recommended — zero project setup):
launch_app(cwd="/path/to/project") # main.py at root
launch_app(cwd="/path/to/project", script="app.py") # other name at root
launch_app(cwd="/path/to/project", script="backend/gui.py") # entry in subfolder
get_launch_help() # full script decision guide
cwd is the project root (pyproject.toml). script is the entry .py relative to cwd.
Manual equivalent:
cd your-pywebview-project
uv run --with "pywebview-mcp @ git+https://github.com/com55/pywebview-mcp" \
python -m pywebview_mcp main.py
Standard workflow
launch_app(cwd="/path/to/project")screenshot()+get_dom_tree()- Interact via
click,type_text, orcall_api("get_ui_state") get_logs()/get_app_output()to debug
Ports
| Env var | Default | Purpose |
|---|---|---|
PYWEBVIEW_MCP_PORT |
7891 | HTTP bridge (differs from pyside6-mcp's 7890) |
PYWEBVIEW_MCP_CDP_PORT |
9222 | Chrome DevTools for screenshots |
Limitations
- Screenshots require
edgechromiumorqtrenderer (CDP). Set automatically by the launcher. - Native file dialogs block automation — use
call_apito set paths instead. - Element IDs reset on every app restart — call
get_dom_tree()again. - uvx cache — after updating the package, clear uv cache or use a local path.
Architecture
pywebview_mcp/server.py— FastMCP stdio server (no pywebview dependency)pywebview_mcp/bridge.py— in-process HTTP bridgepywebview_mcp/__main__.py— monkey-patcheswebview.startfor zero-config injection
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.