# hyperbrowserai/mcp architecture

> Architecture diagram of the GitHub repository hyperbrowserai/mcp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hyperbrowserai/mcp
- Repository: https://github.com/hyperbrowserai/mcp

## Overview

Hyperbrowser MCP Server exposes webpage collection, structured extraction, search, browser agents, persistent profiles, and documentation resources to MCP clients over stdio or SSE. Clients invoke registered tools; handlers call the Hyperbrowser SDK and return results. SSE can validate bearer API keys against Hyperbrowser, while resource discovery and reads serve bundled documentation. The graph preserves the README’s major tool families; dynamic resource modules are present in the tree but their runtime wiring was not shown, so no connections to them are asserted.

Main entry points: [`src/transports/setup_server.ts`](https://github.com/hyperbrowserai/mcp/blob/main/src/transports/setup_server.ts) (Tool Registry), [`src/transports/sse.ts`](https://github.com/hyperbrowserai/mcp/blob/main/src/transports/sse.ts) (SSE Transport), [`src/transports/stdio.ts`](https://github.com/hyperbrowserai/mcp/blob/main/src/transports/stdio.ts) (Stdio Transport), [`src/server.ts`](https://github.com/hyperbrowserai/mcp/blob/main/src/server.ts) (Server Startup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["MCP Entry"]
  node_server["Server Startup<br/>[server.ts]"]
  node_stdio["Stdio Transport<br/>[stdio.ts]"]
  node_sse["SSE Transport<br/>[sse.ts]"]
  node_registry["Tool Registry<br/>[setup_server.ts]"]
  node_schemas["Tool Schemas<br/>[tool-types.ts]"]
end

subgraph group_web["Web Data Tools"]
  node_scrape["Web Scraping<br/>[scrape-webpage.ts]"]
  node_crawl["Web Crawling<br/>[crawl-webpages.ts]"]
  node_extract["Structured Extraction"]
  node_bing["Bing Search<br/>[bing-search.ts]"]
end

subgraph group_agents["Browser Agents"]
  node_browser["Browser Use Agent<br/>[browser-use.ts]"]
  node_oai["OpenAI CUA<br/>[oai-cua.ts]"]
  node_claude["Claude Computer Use"]
end

subgraph group_profiles["Profiles"]
  node_create["Create Profile<br/>[create-profile.ts]"]
  node_delete["Delete Profile<br/>[delete-profile.ts]"]
  node_list["List Profiles<br/>[list-profiles.ts]"]
end

subgraph group_resources["Documentation Resources"]
  node_resource_handlers["Resource Handlers<br/>[get_resources.ts]"]
  node_resource_data[("Bundled Documentation<br/>[summarized.json]")]
  node_dynamic_resources["Dynamic Resources"]
  node_parser["LLMs Text Parser<br/>[llms-txt-parser.ts]"]
end

node_client(("MCP Client"))
node_hyperbrowser{{"Hyperbrowser API"}}

node_client -->|"connects via stdio"| node_stdio
node_client -->|"connects via SSE"| node_sse
node_server -->|"starts by default"| node_stdio
node_server -->|"starts on flag"| node_sse
node_stdio -->|"sets up tools"| node_registry
node_sse -->|"sets up tools"| node_registry
node_registry -->|"uses schemas"| node_schemas
node_registry -->|"registers"| node_scrape
node_registry -->|"registers"| node_crawl
node_registry -->|"registers"| node_extract
node_registry -->|"registers"| node_bing
node_registry -->|"registers"| node_browser
node_registry -->|"registers"| node_oai
node_registry -->|"registers"| node_claude
node_registry -->|"registers"| node_create
node_registry -->|"registers"| node_delete
node_registry -->|"registers"| node_list
node_registry -->|"routes resource requests"| node_resource_handlers
node_resource_handlers -->|"reads documentation"| node_resource_data
node_scrape -->|"calls SDK"| node_hyperbrowser
node_crawl -->|"calls SDK"| node_hyperbrowser
node_extract -->|"calls SDK"| node_hyperbrowser
node_bing -->|"extracts results"| node_hyperbrowser
node_browser -->|"runs agent"| node_hyperbrowser
node_oai -->|"runs agent"| node_hyperbrowser
node_claude -->|"runs agent"| node_hyperbrowser
node_sse -->|"validates API key"| node_hyperbrowser
node_dynamic_resources -.->|"contains parser"| node_parser

click node_server "https://github.com/hyperbrowserai/mcp/blob/main/src/server.ts"
click node_stdio "https://github.com/hyperbrowserai/mcp/blob/main/src/transports/stdio.ts"
click node_sse "https://github.com/hyperbrowserai/mcp/blob/main/src/transports/sse.ts"
click node_registry "https://github.com/hyperbrowserai/mcp/blob/main/src/transports/setup_server.ts"
click node_schemas "https://github.com/hyperbrowserai/mcp/blob/main/src/tools/tool-types.ts"
click node_scrape "https://github.com/hyperbrowserai/mcp/blob/main/src/tools/scrape-webpage.ts"
click node_crawl "https://github.com/hyperbrowserai/mcp/blob/main/src/tools/crawl-webpages.ts"
click node_extract "https://github.com/hyperbrowserai/mcp/blob/main/src/tools/extract-structured.ts"
click node_bing "https://github.com/hyperbrowserai/mcp/blob/main/src/tools/bing-search.ts"
click node_browser "https://github.com/hyperbrowserai/mcp/blob/main/src/tools/browser-use.ts"
click node_oai "https://github.com/hyperbrowserai/mcp/blob/main/src/tools/oai-cua.ts"
click node_claude "https://github.com/hyperbrowserai/mcp/blob/main/src/tools/claude-computer-use.ts"
click node_create "https://github.com/hyperbrowserai/mcp/blob/main/src/tools/create-profile.ts"
click node_delete "https://github.com/hyperbrowserai/mcp/blob/main/src/tools/delete-profile.ts"
click node_list "https://github.com/hyperbrowserai/mcp/blob/main/src/tools/list-profiles.ts"
click node_resource_handlers "https://github.com/hyperbrowserai/mcp/blob/main/src/resources/static/get_resources.ts"
click node_resource_data "https://github.com/hyperbrowserai/mcp/blob/main/src/resources/static/data/summarized.json"
click node_dynamic_resources "https://github.com/hyperbrowserai/mcp/tree/main/src/resources/dynamic"
click node_parser "https://github.com/hyperbrowserai/mcp/blob/main/src/resources/dynamic/llms-txt-parser.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_server,node_stdio,node_sse,node_registry,node_schemas,node_client,node_hyperbrowser toneBlue
class node_scrape,node_crawl,node_extract,node_bing toneAmber
class node_browser,node_oai,node_claude toneMint
class node_create,node_delete,node_list toneRose
class node_resource_handlers,node_resource_data,node_dynamic_resources,node_parser toneIndigo
```

## Components

### MCP Entry

- [Server Startup](https://github.com/hyperbrowserai/mcp/blob/main/src/server.ts): `src/server.ts`
- [Stdio Transport](https://github.com/hyperbrowserai/mcp/blob/main/src/transports/stdio.ts): `src/transports/stdio.ts`
- [SSE Transport](https://github.com/hyperbrowserai/mcp/blob/main/src/transports/sse.ts): `src/transports/sse.ts`
- [Tool Registry](https://github.com/hyperbrowserai/mcp/blob/main/src/transports/setup_server.ts): `src/transports/setup_server.ts`
- [Tool Schemas](https://github.com/hyperbrowserai/mcp/blob/main/src/tools/tool-types.ts): `src/tools/tool-types.ts`

### Web Data Tools

- [Web Scraping](https://github.com/hyperbrowserai/mcp/blob/main/src/tools/scrape-webpage.ts): `src/tools/scrape-webpage.ts`
- [Web Crawling](https://github.com/hyperbrowserai/mcp/blob/main/src/tools/crawl-webpages.ts): `src/tools/crawl-webpages.ts`
- [Structured Extraction](https://github.com/hyperbrowserai/mcp/blob/main/src/tools/extract-structured.ts): `src/tools/extract-structured.ts`
- [Bing Search](https://github.com/hyperbrowserai/mcp/blob/main/src/tools/bing-search.ts): `src/tools/bing-search.ts`

### Browser Agents

- [Browser Use Agent](https://github.com/hyperbrowserai/mcp/blob/main/src/tools/browser-use.ts): `src/tools/browser-use.ts`
- [OpenAI CUA](https://github.com/hyperbrowserai/mcp/blob/main/src/tools/oai-cua.ts): `src/tools/oai-cua.ts`
- [Claude Computer Use](https://github.com/hyperbrowserai/mcp/blob/main/src/tools/claude-computer-use.ts): `src/tools/claude-computer-use.ts`

### Profiles

- [Create Profile](https://github.com/hyperbrowserai/mcp/blob/main/src/tools/create-profile.ts): `src/tools/create-profile.ts`
- [Delete Profile](https://github.com/hyperbrowserai/mcp/blob/main/src/tools/delete-profile.ts): `src/tools/delete-profile.ts`
- [List Profiles](https://github.com/hyperbrowserai/mcp/blob/main/src/tools/list-profiles.ts): `src/tools/list-profiles.ts`

### Documentation Resources

- [Resource Handlers](https://github.com/hyperbrowserai/mcp/blob/main/src/resources/static/get_resources.ts): `src/resources/static/get_resources.ts`
- [Bundled Documentation](https://github.com/hyperbrowserai/mcp/blob/main/src/resources/static/data/summarized.json): `src/resources/static/data/summarized.json`
- [Dynamic Resources](https://github.com/hyperbrowserai/mcp/tree/main/src/resources/dynamic): `src/resources/dynamic`
- [LLMs Text Parser](https://github.com/hyperbrowserai/mcp/blob/main/src/resources/dynamic/llms-txt-parser.ts): `src/resources/dynamic/llms-txt-parser.ts`

### Other components

- **MCP Client**
- **Hyperbrowser API**

## Connections

- MCP Client → Stdio Transport: connects via stdio (evidence: `src/transports/stdio.ts`)
- MCP Client → SSE Transport: connects via SSE (evidence: `src/transports/sse.ts`)
- Server Startup → Stdio Transport: starts by default (evidence: `src/server.ts`)
- Server Startup → SSE Transport: starts on flag (evidence: `src/server.ts`)
- Stdio Transport → Tool Registry: sets up tools (evidence: `src/transports/stdio.ts`)
- SSE Transport → Tool Registry: sets up tools (evidence: `src/transports/sse.ts`)
- Tool Registry → Tool Schemas: uses schemas (evidence: `src/transports/setup_server.ts`)
- Tool Registry → Web Scraping: registers (evidence: `src/transports/setup_server.ts`)
- Tool Registry → Web Crawling: registers (evidence: `src/transports/setup_server.ts`)
- Tool Registry → Structured Extraction: registers (evidence: `src/transports/setup_server.ts`)
- Tool Registry → Bing Search: registers (evidence: `src/transports/setup_server.ts`)
- Tool Registry → Browser Use Agent: registers (evidence: `src/transports/setup_server.ts`)
- Tool Registry → OpenAI CUA: registers (evidence: `src/transports/setup_server.ts`)
- Tool Registry → Claude Computer Use: registers (evidence: `src/transports/setup_server.ts`)
- Tool Registry → Create Profile: registers (evidence: `src/transports/setup_server.ts`)
- Tool Registry → Delete Profile: registers (evidence: `src/transports/setup_server.ts`)
- Tool Registry → List Profiles: registers (evidence: `src/transports/setup_server.ts`)
- Tool Registry → Resource Handlers: routes resource requests (evidence: `src/transports/setup_server.ts`)
- Resource Handlers → Bundled Documentation: reads documentation (evidence: `src/resources/static/get_resources.ts`)
- Web Scraping → Hyperbrowser API: calls SDK (evidence: `src/tools/scrape-webpage.ts`)
- Web Crawling → Hyperbrowser API: calls SDK (evidence: `src/tools/crawl-webpages.ts`)
- Structured Extraction → Hyperbrowser API: calls SDK (evidence: `src/tools/extract-structured.ts`)
- Bing Search → Hyperbrowser API: extracts results (evidence: `src/tools/bing-search.ts`)
- Browser Use Agent → Hyperbrowser API: runs agent (evidence: `src/tools/browser-use.ts`)
- OpenAI CUA → Hyperbrowser API: runs agent (evidence: `src/tools/oai-cua.ts`)
- Claude Computer Use → Hyperbrowser API: runs agent (evidence: `src/tools/claude-computer-use.ts`)
- SSE Transport → Hyperbrowser API: validates API key (evidence: `src/transports/sse.ts`)
- Dynamic Resources → LLMs Text Parser: contains parser (evidence: `src/resources/dynamic/parse-resources.ts`)
