Allows AI agents to drive a real Chrome browser tab with a visible cursor and real user input through a local hub and extension.
Also known as longvo2k/pointer, @longvo2k/pointer
- Stars
- 2
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- —
- Last commit
- Nov 13, 2026
- License
- MIT
What is Pointer MCP?
Pointer allows AI agents to drive a real Chrome browser tab with a visible cursor and real user input through a local hub and extension.
Summary generated from the project's README
About Pointer MCP server
Driving a real Chrome browser tab with a visible cursor and human-like input is what Pointer enables for AI agents. By using a local hub and a Chrome extension, agents like Claude Code, Cursor, and OpenCode can interact with your existing browser sessions, including pages where you are already signed in. This setup allows the agent to perform actions in background tabs without stealing your focus, while you can monitor every movement through a visible pointer on your screen.
Developers use a variety of tools to manage this process, including browser_status, click, fill, and navigate. The system uses the chrome.debugger protocol to ensure that clicks and keystrokes behave exactly as they would from a real person. To maintain security, the hub only communicates with 127.0.0.1 and includes features to block specific sites like banks. The server is designed to be efficient, reporting only what changes on the screen to minimize token usage during tasks.
What you can do with it
- 1Automate signup flowsAsk an agent to test a registration process by selecting a specific plan and filling out a form.
- 2Debug web applicationsInstruct an AI to investigate why a specific page is not displaying data by checking the console and network logs.
- 3Conduct web researchHave an agent search for a topic on Wikipedia and provide a concise summary of the findings.
Written from the project's README. Every use case is checked against a quote from it.
How to install Pointer MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall Pointer MCP in Claude Code
$ claude mcp add pointer -- npx -y @longvo2k/pointerInstall Pointer MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"pointer": {
"command": "npx",
"args": [
"-y",
"@longvo2k/pointer"
]
}
}
}Install Pointer MCP in VS Code
.vscode/mcp.json
{
"servers": {
"pointer": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@longvo2k/pointer"
]
}
}
}Install Pointer MCP in VS Code CLI
$ code --add-mcp '{"name":"pointer","type":"stdio","command":"npx","args":["-y","@longvo2k/pointer"]}'Install Pointer MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"pointer": {
"command": "npx",
"args": [
"-y",
"@longvo2k/pointer"
]
}
}
}Install Pointer MCP in Codex
$ codex mcp add pointer -- npx -y @longvo2k/pointerInstall Pointer MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.pointer] command = "npx" args = ["-y", "@longvo2k/pointer"]
Install Pointer MCP in Gemini CLI
$ gemini mcp add -s user pointer npx -- -y @longvo2k/pointerInstall Pointer MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"pointer": {
"command": "npx",
"args": [
"-y",
"@longvo2k/pointer"
]
}
}
}Automated checks
Ran Nov 14, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablelongvo2k/pointer is public and reachablegithub.com/longvo2k/pointer ↗Pass
- Package names this repository as its source@longvo2k/pointer names longvo2k/pointer as sourcenpmjs.com/package/@longvo2k/pointer ↗Pass
- Build provenance (Sigstore attestation)Sigstore attestation for @longvo2k/pointernpmjs.com/package/@longvo2k/pointer/v/0.3.0#provenance ↗Pass
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-13github.com/longvo2k/pointer ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from @longvo2k/pointerPass
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubPointer
Let any agent drive your real Chrome tab, with a pointer you can watch.
Agents often need a page that is already open in your browser, signed in as you. Pointer lets them use your own Chrome through a small local hub and an extension, and shows every move on screen.
- Works with any agent. One MCP server for Claude Code, Cursor, OpenCode and Codex, plus a CLI.
- You can watch. A cursor slides to each target with a label like
click · Sign Up. Each agent gets its own colour and tab group. - You stay where you are. The agent works in background tabs and never steals your focus.
- You can stop it. Press
EscorAlt+Shift+S, click in its tab, or use the Stop button. It must ask you before it goes on. - Real input. Clicks and keys go through
chrome.debugger, so pages react as they would to a person. - Few tokens. Every action reports only what changed on screen. A six-step Wikipedia task used about 2,400 tokens of tool output.
Install
Easiest: let your agent do it. Paste this into Claude Code, Codex, Cursor, OpenCode, or any agent that can run shell commands:
Set up Pointer (https://github.com/longvo2k/pointer) so you can drive my Chrome. Follow its README.
1. Install the command. If Node 18+ is installed, run `npm install -g @longvo2k/pointer`.
Otherwise read https://raw.githubusercontent.com/longvo2k/pointer/main/install.sh, then run it
with POINTER_NO_OPEN=1. Ask me before it changes my shell's PATH.
2. Run `pointer setup --no-open` and use the MCP config it prints to add Pointer as an MCP server
in this agent (for Claude Code: `claude mcp add pointer -- <command and args it prints>`).
3. If this agent reads Agent Skills (SKILL.md), link the `skills/pointer` folder of the install
into your skills folder (for Claude Code: ~/.claude/skills/pointer).
4. Open https://chromewebstore.google.com/detail/pointer/jckadbekhgkcnjkjcoaecjjkpkkgamjl in my
Chrome and ask me to click "Add to Chrome". Wait until I say it is done.
5. Run `pointer status` and check it says "Extension: connected". If not, read
https://github.com/longvo2k/pointer/blob/main/docs/troubleshooting.md and tell me what you need.
6. Tell me what you set up, and whether I need to restart this session to load Pointer's tools.
By hand:
- Add the extension from the Chrome Web Store.
- Install the command:
npm install -g @longvo2k/pointer(Node 18+), orcurl -fsSL https://raw.githubusercontent.com/longvo2k/pointer/main/install.sh | POINTER_NO_OPEN=1 bash. - Connect your agent. For Claude Code:
claude mcp add pointer -- pointer-mcp. For other agents, runpointer setup, which prints the config with your paths. - Check it:
pointer statusshould say "Extension: connected".
The install guide covers the installer, other MCP clients, the agent skill, loading the extension unpacked, uninstalling, and working from a checkout.
How the agent uses it
Look once, then act by ref and read what changed:
snapshot → click e31 → fill e40 "ada@example.com"
clicked button "Code" → https://github.com/microsoft/vscode
changes in view:
+ button "Clone with HTTPS" [ref=e286]
+ link "Download ZIP" [ref=e292]
| Job | Tools |
|---|---|
| Browsers | browser_status, browsers_list, browser_use |
| Tabs | tabs_list, tab_open, tab_select, tab_close, tab_focus |
| Read | snapshot, find, read_text, screenshot, wait_for |
| Act | click, hover, fill, press, scroll, navigate, upload, dialog |
| Check | verify, viewport, layout, console, network |
| Talk to you | say, stop, resume |
The same tools work from the shell: pointer open example.com, pointer snap, pointer click e14.
Run pointer help for the list.
With several Chrome profiles, pointer browsers lists them by name and email, and
pointer use Work switches, opening the profile if it is closed.
The usage guide covers every tool, the CLI, profiles, what Pointer draws on the page, the settings (including the Classic and Sketch looks) and environment variables.
Examples
Real runs: OpenCode with a DeepSeek model drives Pointer in Chrome.
"Test the signup flow — pick the Scale plan, use ada@example.com and team Lovelace Labs, create the workspace, and check the invite link is shown. Report pass/fail per step."
"Users say the Reports page stays empty after clicking Load reports. Find the root cause from the console and network."
"On Wikipedia, search for Model Context Protocol, open the article, and give me a 3-bullet summary."
Security and privacy
- No outside servers. Pointer talks only to
127.0.0.1. No accounts, analytics or telemetry. - No code execution tool. No
eval, and no tool runs JavaScript you pass in. - Web pages cannot reach it. The hub refuses cross-site requests, DNS rebinding, and pages pretending to be the extension.
- Blocked sites. List sites like your bank in the settings, and agents cannot open or read them.
- One runtime dependency (
ws), and plain source you can read.
Page text and screenshots go to the agent you connected, and from there to its AI provider. See SECURITY.md and PRIVACY.md.
grep -rnE "https?://[A-Za-z0-9]" bin lib extension | grep -v 127.0.0.1 | grep -v w3.org/2000/svg # outside URLs: none
grep -rnE "\beval\(|new Function" bin lib extension # dynamic code: none
npm ls --omit=dev --all # dependencies: ws only
w3.org/2000/svg is the SVG namespace for the cursor icon, not a request. CI runs the same checks
on every push.
Help
Something not working? See troubleshooting. To contribute, see
CONTRIBUTING.md and run npm test before sending a change.
License
MIT. See LICENSE. The Sketch look ships two fonts under the SIL Open Font License 1.1:
Caveat and Patrick Hand by Patrick Wagesreiter (licences in
extension/fonts/).
Pointer was written from scratch. Its approach was inspired by ofershap/real-browser-mcp.
Pointer MCP questions
How do I add Pointer MCP to Claude Code?
Run claude mcp add pointer -- npx -y @longvo2k/pointer in your terminal. Add --scope user to make it available in every project.
How do I add Pointer MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
Can I watch what the agent is doing?
Yes, a visible cursor slides to each target with action labels, and each agent is assigned its own color and tab group.
Does the agent steal my focus while working?
No, the agent operates in background tabs so you can continue your work uninterrupted.
How does the agent interact with web pages?
It uses chrome.debugger to ensure clicks and keystrokes are processed by pages exactly as they would be by a human.