Site Sense

Created By
YotamNordman2 months ago
Overview

site-sense

CI License: Apache-2.0

Give your AI coding CLI eyes into web portals. No cloud. No storage. Read-only.

site-sense demo

You're in a conversation with your AI assistant. It says "go to the Azure Portal and check the NSG rules." You alt-tab, navigate, screenshot, describe what you see, paste it back. You are the human middleware.

site-sense eliminates this. The AI calls an MCP tool → your browser extension captures the active tab → the AI sees what you see.

Quick Start

git clone https://github.com/YotamNordman/site-sense.git
cd site-sense
npm install && npm run build
npm run setup -- --browser edge    # or chrome

Load the extension in your browser:

  1. Open edge://extensions (or chrome://extensions)
  2. Enable Developer mode
  3. Click Load unpacked → select dist/extension/

Add to your CLI's MCP config:

{
  "mcpServers": {
    "site-sense": {
      "command": "node",
      "args": ["/path/to/site-sense/dist/bridge/src/index.js"]
    }
  }
}

Then ask your AI: "What's on my browser tab?"

First time → popup appears → click Allow → done. All subsequent captures are automatic until you close the terminal.

How It Works

CLI (Claude Code / Copilot CLI)
    ↕ stdin/stdout (MCP protocol)
MCP Server (TypeScript)
    ↕ Unix domain socket (no network)
Native Host (thin relay)
    ↕ Chrome native messaging (stdio)
Extension (TypeScript, Manifest V3)
    ↕ inject → content → background
Browser Tab → accessibility tree + screenshot

Two MCP tools:

ToolWhat it does
site_sense_captureAccessibility tree + screenshot of active tab
site_sense_statusCheck connection and session approval

Permission Modes

ModeWhat happensInstall warning
DefaultClick extension icon per page to grant accessNone
All-sitesToggle in popup → captures work on any pageOne-time prompt

All-sites permission is revoked when the CLI session ends.

Security

PrincipleHow
No networkNative messaging (stdio) — invisible to DLP
No storageMemory only — gone when CLI disconnects
No write opsNever clicks, types, or modifies pages
No broad permsactiveTab + scripting + nativeMessaging
No secrets capturedSkips form values, strips URL tokens
Session-scopedPermission resets every CLI session

See SECURITY.md for threat model and DLP compliance.

Architecture

Three-layer extension pipeline:

LayerContextRole
InjectPage (world: MAIN)Walks DOM, builds compact accessibility tree
ContentIsolatedRelays capture via postMessage (origin-validated)
BackgroundService workerNative messaging, session state, screenshot

Tech Stack

ComponentTechnology
ExtensionTypeScript + Vite
MCP ServerTypeScript + @modelcontextprotocol/sdk + zod
Testsvitest — 11 tests, <1s
Bundle9KB extension, 7 total deps

Troubleshooting

SymptomFix
connected: falseExtension not loaded, or ID mismatch. Check edge://extensions.
Cannot captureNavigate to an http:// or https:// page.
Content script not respondingClick the extension icon on the page, or enable all-sites mode.
Extension icon grayed outReload the extension at edge://extensions.

Docs

DocPurpose
SECURITY.mdThreat model, DLP compliance

License

Apache-2.0

Project Info
Created At
2 months ago
Updated At
2 months ago
Author Name
YotamNordman
Star
-
Language
-
License
-
Category
Tags

Recommend Servers

View All