cd /news/ai-agents/i-gave-my-coding-agent-eyes-on-my-re… · home › topics › ai-agents › article
[ARTICLE · art-142357] src=dev.to ↗ pub= topic=ai-agents verified=true sentiment=↑ positive

I gave my coding agent eyes on my real, logged-in browser (stdlib-only, local)

A developer built browser-buddy, an MIT-licensed MCP server plus Chrome Manifest V3 extension that lets coding agents read pages through the user's real, logged-in Chrome profile, including cookies and sessions, to bypass 403s, login walls and bot detection. The tool uses a stdio MCP server, a Unix-socket native host and chrome.runtime.connectNative, exposes two tools (read_active_tab and open_and_read_url), passes 17/17 smoke tests, and is published on the official MCP registry as io.github.hahahahahahahahah6/browser-buddy. Everything runs locally with zero dependencies, and the developer says next steps are real-world testing on Windows Chrome.

by read2 min views1 publishedSep 30, 2026

Every agentic coding tool hits the same wall eventually: the page you need is behind a login, a 403, or bot detection, and the agent's server-side fetcher is locked out. Your browser is logged in. Your agent is not. So the fix is not a better scraper — it is letting the agent borrow your eyes.

I built browser-buddy, an MCP server + Chrome extension (Manifest V3) that lets coding agents read pages through the user's real Chrome profile: cookies, sessions, logins included. MIT licensed, zero dependencies, nothing leaves your machine.

Three pieces, each dumb and replaceable:

chrome.runtime.connectNative on one side, a socket server on the other.mcp SDK package; the protocol surface I need is two tools, so I hand-rolled the framing in ~200 lines:

TOOLS = [
    {
        "name": "read_active_tab",
        "description": (
            "Read the user's currently active Chrome tab through their real, "
            "logged-in browser profile. Returns the page URL, title, and "
            "cleaned readable text. Use when WebFetch/fetch is blocked by a "
            "403, login wall, or bot detection."
        ),
        "inputSchema": {"type": "object", "properties": {}, "additionalProperties": False},
    },
    {
        "name": "open_and_read_url",
        "description": (
            "Open a URL in a background Chrome tab using the user's real "
            "browser profile (cookies and login sessions included), extract "
            "its readable text, then close the tab."
        ),
        ...
    },
]

Message flow for open_and_read_url:

agent ──JSON-RPC/stdio──▶ MCP server ──Unix socket──▶ native host
                                                          │ connectNative
                                                          ▼
                                                   Chrome extension ──▶ tab

Logs go to stderr (stdout is reserved for protocol messages — the classic stdio footgun, handled once and never again).

Headless browsers are new browsers: no cookies, no sessions, and they get fingerprinted as bots — the exact problem I was trying to escape. The insight is embarrassingly simple: the most authenticated, least-bot-detected browser in existence is the one the user is already using. So don't automate a fake browser; ask the real one to read.

This design is only acceptable because everything is local:

17/17 smoke tests pass (framing, tool schemas, socket relay, tab extraction mocks), and it's live on the official MCP registry as io.github.hahahahahahahahah6/browser-buddy. Next: real-world testing on Windows Chrome.

Try it: uvx browser-buddy-mcp (needs the extension + host from the repo).

Built in the open. Issues and PRs welcome — especially from people whose agents keep getting 403'd.

── more in #ai-agents 4 stories · sorted by recency
── more on @browser-buddy 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-gave-my-coding-age…] indexed:0 read:2min 2026-09-30 · —