aiwebhelper
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., "@aiwebhelperI just Alt+clicked on the total; inspect that element and tell me why it's clipped."
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.
AIWebHelper
An MCP server where a human and an AI share one browser window. The human points at what to fix; the AI sees the same screen and clicks.
Why
The human sees the screen; the AI sees the files. Bridge them with screenshots and both sides start guessing — and guessing is wrong. “fix this part” — “which part?” — screenshot — “not there, the one above.”
This tool removes that round trip. When the human points with Alt+click, the AI receives this:
하고 싶은 말: 이 합계 글씨가 너무 작아요
글자: 8,700,000원
요소: span.v.mono.income
선택자: div.ledg-sum span.v.mono.income
짐작: apps/mail/src/client/ledger/ (클래스 ledg-sum)
감싼 것: div.ledg-sum ← div.ledg-sums ← div.ledg
⚠ 잘림: 6px 모자람 (112px 필요, 106px 있음)
크기: 106×23
스타일: block · 17px · rgb(30,142,90)
주소: http://localhost:5360/ledger/e2fa416e
창 폭: 1000px (기기 픽셀비 2)The really valuable part is that the window width arrives together with the clipped amount. Clipping appears and disappears depending on the width, so “it’s clipped” and “it’s not clipped” can both be the truth — and that really happens.
Related MCP server: Chromanche
How it works
It comes in two pieces:
A browser extension (
extension/) — turned on with the toolbar button orAlt+Shift+P. It attaches only to the tab where it was switched on. Before you switch it on, it does not enter any page. The calls to a server are done by the extension on the page’s behalf (bridge.js). Skips127.0.0.1from page itself; a site can block it — on sites that pinconnect-src, like X, a choice just dies with “Failed to fetch”. The extension doesn’t hit that wall, so it behaves the same anywhere. (A bookmarklet has no bridge, so then the page has to call directly.)The server here (
server.js) — receives picks http on a port, holds them, and serves it via the MCP tool to the AI. The route works in the opposite direction too: commands left by the AI are given to the page as request held open. Instead of polling every 0.5 seconds, the page keeps on long-open request, which stays quiet even if it is open all day on a page that someone is using.
The point is not to walk inside the project. If the tool were a part of a project, you would have to embed into each project again, and you would have to worry about it mixing into a build.
The past picker (extension/picker.js) is one copy. The extension injects that file, and the server serves the same file as /picker.js (for the bookmarklet). Two elements would cause “works in the bookmarklet but not in the extension,” everything gone hard to solve.
Port
47391. The 7000, 8000, and 5000 ports are too busy with dev servers, so loss is only a matter of time — and when there are just two, picks quietly go to whichever side opened the door first. That is why, if the door cannot be opened, that your fact is written at the heading of every tool response. You can move to with AIWH_PORT; when you do, /picker.js is served baked with its own listening port.
Adding
In ~/.claude.json (or config of the MCP client you’re using):
{
"mcpServers": {
"aiwebhelper": {
"command": "node",
"args": ["/절대/경로/AIWebHelper/server.js"]
}
}
}To change the port, do "env": { "AIWH_PORT": "47391" }.
Installing the extension (first once)
Open
chrome://extensionsin ChromeTurn on Developer mode in the upper right
Choose Load unpacked → select the
extension/folder of this repo
--load-extensioncommand line option is blocked in recent Chrome (137+). The three steps above are the only way, and only once. Edge and Whale have the same in the same place.
To use as bookmarklet instead, ask the AI for how_to_start — good for browsers where an extension cannot be installed.
Usage
Go to the screen that you are going to fix (production or local).
Press the toolbar button or
Alt+Shift+P— a badge showsON.Keep using nothing else. It does not interrupt; the app runs as normal.
Alt+click on the place to fix — in the entered input type what should be change, hit Enter (you can leave it empty).
The AI waits with
wait_for_pick, and receives it in that form.
While it is on, from that moment, you are sharing one window. If you say "look at this screen", the AI reads it; if you say "click here", it clicks. The AI can also demonstrate “do you mean this one” by highlighting the pick with page_point instead of saying.
Alt+P toggles continuous picking (for a run of picks), Esc disables it, and clicking the button again turns it off.
Tools
Human → AI:
| Waits until the human picks, then returns it. Call it in the place of asking “where to fix?” |
| Most recently picked by — the first glimpse least |
| Recent picks |
| Clears them |
| Instructions to pass to the human (bookmarklet) |
AI → human–read window:
| the current screen — URL, textual content, things that can be clicked |
| “Is this what you mean?” — show it with a highlight |
| click ✦ fill ✦ keyboard key |
| sends that tab to a different URL |
| everything else — evaluate values, scroll, change size |
What to know before using
The page_* tools operate the real human window where the person is logged in. A click can really save, really compose, and really delete. It is not reversible. That is exactly the value: as convenient at the present that it is competing — it is no longer a free try.
There are three fences:
Only in the tab you switched on. It does not enter any page before turning on. Press
Escor the toolbar button — it breaks right there. Badge showsONyou are connected at the moment.Opens only to
127.0.0.1. From outside there is no path to this window.If the cage is cloudy, don’t click. On a screen with three “Save” buttons, not it will not silently choose the first save; it returns the list and lets you decide by
nth. Asking back costs one extra round trip; getting it wrong the other way can’t be undone.
The host_permissions are broad because the connection held while the on-tab navigates to a different page. activeTab disappears when the view navigates, so even a link passed to the background after switching once is cut off. With that broad scope, the currently-on tab list is the only fence, so it is better to let it off when you don’t need it.
Rules — from classes to file
Each line in presets/*.json maps and project class prefix → file. It selects by URL (match).
{
"name": "내 프로젝트",
"match": ["localhost", "example.com"],
"rules": [{ "prefix": "ledg-", "home": "src/client/ledger/" }]
}Rules are optional. The displayed element, selector, snapshot, clipping and window size all come over as they are — rules are the bonus.
This way outlives React’s source metadata (_debugSource). It is removed in React 19 and production builds have component names compressed away. CSS classes carry through the build.
Not included
Screenshot capture. With text, geometry, and the clipping, a picture is usually not needed, and pictures make dialogue heavy.
Embedding inside the app. — you have to re-embed per project and worry about deployment.
Being an Electron shell. — an earlier version was built that way, but that would bring a screenshot–copy–paste round trip; via MCP the AI just receives the pick directly.
Remote connection. Unique to
127.0.0.1— no reason other browsers obtain the pick.
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
- AlicenseAqualityCmaintenanceMCP server + Chrome extension that gives AI coding agents control of your real browser with existing sessions, logins, and cookies. Works with Cursor, Claude, Windsurf.187148MIT
- FlicenseNot gradedqualityCmaintenanceLets any MCP-capable coding agent drive your real, logged-in Chrome through a local MCP server and MV3 extension.5
- AlicenseAqualityAmaintenanceMCP server that lets AI agents drive your real Chromium browser with your existing signed-in sessions, providing visible, local, and inspectable automation for tasks like navigation, clicking, typing, and form filling.251Apache 2.0
- FlicenseNot gradedqualityCmaintenanceAn MCP server that gives AI agents mouse-and-keyboard control over a live Chrome session, enabling navigation, clicking, typing, screenshots, and DOM inspection.13
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
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/unilab-hq/AIWebHelper'
If you have feedback or need assistance with the MCP directory API, please join our Discord server