Tapsite

io.github.mgriffenPublished by GitHub account mgriffenv4.0.1Updated Oct 24, 2026

MCP server for web inspection, design system extraction, and accessibility audits

Overview

AI-generated overview

A local MCP server that lets an AI assistant inspect websites and extract design systems, accessibility audits, performance data, and structured content.

What you can do
Open and control a browser session: navigate, inspect the DOM, screenshot, click, fill, scroll, run JavaScript, and log in manually with MFA support. Extract page content: tables, links, metadata, readable text, forms, Markdown, and custom CSS/XPath/regex schemas. Pull design tokens: colors, fonts, CSS variables, spacing, shadows, layout, components, and breakpoints. Audit quality: WCAG contrast, accessibility, Core Web Vitals, security headers, dark mode, PWA, and i18n. Detect technology: frameworks, animations, icons, GraphQL, AI/ML integrations, canvas, WebAssembly, web components, third-party scripts, and client-side storage. Capture network traffic and infer API schemas, crawl multiple,
When to use it
Useful when you want an assistant to analyze a live website's design system, accessibility, performance, or content structure, compare sites or track changes over time, or extract structured data from pages, including behind a login.
Requirements
Runs locally via npm (npx tapsite or global install). Requires Node.js and Playwright Chromium, which downloads about 150MB on first run. A display is needed for manual login; Docker is headless-only. No API keys or environment variables are declared.
Before you install
The server can execute arbitrary JavaScript in pages and download images to a local output directory. It stores live session cookies in a profiles directory, which should not be committed to version control. It can use proxy rotation and anti-bot evasion on protected sites. Extracted page content may contain prompt injection; the server flags suspected patterns but does not guarantee safety.

Installation

In SourceWeft

  1. Open Tapsite in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

tapsite

[GitHub stars] [npm downloads] [License: MIT]

[tapsite — 55 Tools, One MCP Server, Total Web Intelligence]

The MCP server for web intelligence extraction. 55 tools that give AI agents the ability to understand websites — not just drive a browser, but extract structured intelligence about design systems, accessibility, performance, content, and more.

Other MCP browser tools let agents click buttons. tapsite lets agents extract a complete color palette, audit WCAG contrast ratios, diff two sites' design tokens, detect tech stacks, or pull structured data with custom CSS/XPath/regex selectors — all as structured JSON that agents can reason about.

55 Tools · 11 Categories · 4 Workflows · Multi-Format Export

Works with Claude, Cursor, Windsurf, and any MCP-compatible AI agent. LangChain/LangGraph integration coming soon.

View the full docs site →

Installation

bash
# Quick start (no install required)npx -y tapsite
# Or install globallynpm install -g tapsitenpx playwright install chromiumnpx playwright install-deps chromium

Add to your AI agent's MCP config:

json
{  "mcpServers": {    "tapsite": {      "command": "npx",      "args": ["-y", "tapsite"]    }  }}

First run: Playwright will install Chromium automatically if not already present (~150MB one-time download).

Also available on the MCP Registry and Glama.

What makes tapsite different

Other browser MCPstapsite
Click buttonsExtract full design systems
Fill formsAudit WCAG accessibility
Take screenshotsDiff sites over time
Read raw HTMLDetect tech stacks & APIs
Custom CSS / XPath / regex extraction
Anti-bot resilience & proxy rotation

Extract design systems — colors, fonts, spacing scales, breakpoints, components, shadows, icons, CSS variables, and contrast ratios from any website. Output as structured JSON or W3C design tokens.

Audit quality — accessibility scoring with WCAG contrast analysis, performance timing (Core Web Vitals), tech stack detection, dark mode support, and animation inventory.

Compare and track — diff two sites side by side, or track a single site over time with snapshot-based temporal diffs. Regressions and improvements are flagged automatically. Disk caching means crawls resume where they left off, and results are reused across sessions.

Work behind login walls — persistent browser sessions with full MFA support. A 3-tier anti-bot escalation system handles protected sites automatically — from stealth scripts to proxy rotation. Log in once manually, then extract across tool calls without re-authenticating. Credentials never enter the chat.

Tools (55)

Session (8)

ToolDescription
tapsite_login_manualOpen headed browser for manual login + MFA
tapsite_login_checkVerify authenticated session state
tapsite_inspectNavigate to URL and inspect the DOM (nav, headings, buttons, forms, tables, links)
tapsite_screenshotTake a screenshot of the current page
tapsite_interactClick or fill an indexed element from the last inspect
tapsite_scrollScroll the page
tapsite_run_jsExecute arbitrary JavaScript and return the result
tapsite_closeClose the browser session

Content Extraction (6)

ToolDescription
tapsite_extract_tableExtract a specific table as structured data
tapsite_extract_linksExtract all links with text and href
tapsite_extract_metadataExtract page metadata (title, description, OG tags, etc.)
tapsite_extract_contentExtract main readable content (article body, headings, paragraphs)
tapsite_extract_formsExtract all forms with fields, labels, and actions
tapsite_extract_markdownExtract page content as clean Markdown (raw, fit, or citations mode) with optional chunking

Custom Extraction (2)

ToolDescription
tapsite_extract_customExtract structured data using custom schemas (CSS selectors, XPath, or regex)
tapsite_extract_schema_suggestAnalyze page DOM and auto-suggest extraction schemas

Design Tokens (5)

ToolDescription
tapsite_extract_colorsExtract color palette (hex values + usage counts)
tapsite_extract_fontsExtract font families, sizes, weights
tapsite_extract_css_varsExtract CSS custom properties
tapsite_extract_spacingExtract spacing scale values
tapsite_extract_shadowsExtract box-shadow and text-shadow patterns

Visual Assets (4)

ToolDescription
tapsite_extract_imagesExtract all images with src, alt, dimensions
tapsite_download_imagesDownload images to local output directory
tapsite_extract_svgsExtract inline SVGs
tapsite_extract_faviconExtract favicon URLs and sizes

Layout Intelligence (3)

ToolDescription
tapsite_extract_layoutExtract layout tree (inline text representation)
tapsite_extract_componentsDetect repeated UI components and patterns
tapsite_extract_breakpointsExtract responsive breakpoints from CSS media queries

Quality & Compliance (7)

ToolDescription
tapsite_extract_a11yAccessibility audit (ARIA, roles, contrast issues)
tapsite_extract_contrastAudit WCAG contrast ratios between text and background
tapsite_extract_perfExtract performance metrics (Core Web Vitals, resource sizes)
tapsite_extract_securityAudit security headers (CSP, HSTS, SRI, permissions policy)
tapsite_extract_darkmodeDetect dark mode support and extract dark palette
tapsite_extract_pwaDetect PWA support (manifest, service worker, installability)
tapsite_extract_i18nExtract internationalization signals (lang, hreflang, translations)

Technology Detection (10)

ToolDescription
tapsite_extract_stackDetect frontend framework, libraries, and tech stack
tapsite_extract_animationsExtract CSS animations and transitions
tapsite_extract_iconsDetect icon libraries and extract icon usage
tapsite_extract_graphqlDetect GraphQL endpoints and introspect schemas
tapsite_extract_aimlDetect AI/ML integrations (models, embeddings, inference endpoints)
tapsite_extract_canvasExtract canvas and WebGL usage patterns
tapsite_extract_wasmDetect WebAssembly modules and usage
tapsite_extract_web_componentsDetect custom elements and shadow DOM usage
tapsite_extract_third_partyInventory third-party scripts, trackers, and services
tapsite_extract_storageAudit client-side storage (cookies, localStorage, sessionStorage, IndexedDB)

Network & API (2)

ToolDescription
tapsite_capture_networkCapture network requests during a page load
tapsite_extract_api_schemaInfer API schema from observed network traffic

Multi-page (2)

ToolDescription
tapsite_crawlCrawl multiple pages from a start URL
tapsite_diff_pagesCompare two URLs (cross-site) or track changes over time (temporal) using real extractors

Export (2)

ToolDescription
tapsite_exportExport inspection results as JSON + Markdown + HTML report + CSV tables + screenshots
tapsite_export_design_reportFull design system report: report.html (visual), design-tokens.json (W3C format), design-tokens.css (copy-pasteable :root vars)

Engine

Resilient extraction engine. Parallel browser pooling for concurrent page extraction. Persistent disk caching — crawls resume where they left off and results are reused across sessions. 3-tier anti-bot escalation with automatic proxy rotation for protected sites.

Workflows (4)

ToolDescription
tapsite_teardownComprehensive competitive design teardown (all extractors)
tapsite_auditPre-launch quality audit (a11y, contrast, perf, SEO, darkmode)
tapsite_harvestInventory all site assets (images, SVGs, forms, fonts, links)
tapsite_designsystemExtract design tokens as W3C JSON and CSS variables

LangChain / LangGraph integration (coming soon)

Native LangChain and LangGraph integration is on the roadmap. When released, it will provide a dedicated Python wrapper with tool subsets and managed session lifecycle.

Security

Prompt injection defense (hidden element filtering + output sanitization), HTTPS enforced, private IPs blocked, auth headers redacted. Credentials never enter the chat — log in manually with full MFA support.

Prompt injection defense

Extractors skip hidden elements (display:none, visibility:hidden, opacity:0, zero-size, clip-hidden) to prevent invisible text injection. All output is scanned for prompt injection patterns — instruction overrides, role hijacking, exfiltration attempts, and tool manipulation are flagged inline as [INJECTION_DETECTED].

Credential safety

Never pass credentials through the chat. Use tapsite_login_manual to open a headed browser, log in manually (including MFA), then tapsite_login_check to confirm. Credentials never touch the AI provider's servers or local transcripts.

Docker

tapsite ships a Dockerfile and docker-compose.yml for headless-only use — CI pipelines, server deployments, or anywhere you don't want a local Node.js install.

bash
docker build -t tapsite .docker compose up

tapsite_login_manual is not available in Docker (it requires a display). To use authenticated sessions in Docker, log in locally first, then mount the profiles/ directory into the container:

yaml
volumes:  - ./output:/app/output  - ./profiles:/app/profiles

Security note: profiles/ contains live session cookies. Don't commit it to version control (it's already in .gitignore).

Development setup

bash
git clone https://github.com/mgriffen/tapsitecd tapsitenpm installnpx playwright install chromiumnpx playwright install-deps chromium

MCP config pointing to local source:

json
{  "mcpServers": {    "tapsite": {      "command": "node",      "args": ["/absolute/path/to/tapsite/src/server.js"]    }  }}

Project structure

src/  server.js        — MCP server entry point  browser.js       — shared Chromium context (ensureBrowser, closeBrowser)  helpers.js       — shared helpers (safeNavigate, summarizeResult, indexPage)  sanitizer.js     — prompt injection detection  diff.js          — per-extractor diff logic and extractor name/args mapping  snapshots.js     — temporal snapshot I/O (saveSnapshot, loadLatestSnapshot)  browser-pool.js  — parallel browser context pooling  cache.js         — persistent disk caching with TTL  markdown.js      — HTML-to-Markdown converter (raw/fit/citations)  chunker.js       — LLM-friendly text chunking (fixed/semantic/sentence)  content-filter.js — BM25 relevance filtering  anti-bot.js      — block detection and tier escalation  proxy.js         — proxy rotation with failure tracking  stealth-setup.js — Puppeteer-extra stealth plugin registration  extraction-strategies.js — CSS/XPath/regex flexible extractors  extractors.js    — browser-context extraction functions (page.evaluate())  exporter.js      — file export: JSON, Markdown, HTML, CSV  inspector.js     — DOM extraction for inspect tools  cli.js           — standalone CLI (login, inspect, session)  config.js        — paths and defaults  tools/    session.js     — login, inspect, screenshot, interact, scroll, run_js, close    extraction.js  — all extract_* tools    network.js     — capture_network, extract_api_schema, extract_stack    multipage.js   — crawl, diff_pages    export.js      — export, export_design_report    workflows.js   — teardown, audit, harvest, designsystemprofiles/          — browser state / session cookies (gitignored)output/            — export results + snapshots (gitignored)

Output formats

  • output/run-{timestamp}/ — tapsite_export: JSON, Markdown, HTML, screenshots, CSV tables
  • output/design-report-{timestamp}/ — tapsite_export_design_report: report.html, design-tokens.json, design-tokens.css
  • output/snapshots/{domain}/ — tapsite_diff_pages temporal snapshots

License

MIT

Source: README.md at commit 85ed415

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v4.0.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts