Skip to main content
Glama

기능

  • 브라우저 자동화: 탐색, 클릭, 입력, 양식 작성 및 JavaScript 평가

  • 기본적으로 경량화: Chromium보다 메모리 약 5배 절약, 원시 HTML보다 스냅샷 약 25배 작음

  • 페이지 스냅샷: 정밀한 요소 타겟팅을 위한 고유 노드 ID가 포함된 컴팩트한 YAML 접근성 트리 스냅샷 제공

  • LLM 최적화 컨텍스트: 스냅샷이 의미론적 필수 요소만 남도록 축소되어 컨텍스트 사용량을 최소화하므로 동일한 창에 더 많은 페이지와 더 긴 세션을 담을 수 있습니다

  • 구성 가능한 폴백 브라우저: 2단계 모델 — 먼저 경량 브라우저를 사용하고, 기본 브라우저가 봇 감지, 충돌 또는 타임아웃될 때만 헤드풀 Chrome, Browserless 또는 Browserbase 클라우드 브라우저로 전환합니다.

  • 속도 제한: 탐지되지 않도록 유지합니다. 와일드카드 패턴(*, *.reddit.com)으로 특정 도메인에 대한 요청 사이의 구성 가능한 최소 지연 시간과 선택적 지터(jitter)를 적용하여 에이전트가 사이트를 강타하고 봇 방어를 트리거하는 대신 스스로 속도를 조절하도록 합니다.

  • 프록시 지원: 단일 PROXY_SERVER 설정으로 모든 요청을 HTTP 프록시를 통해 라우팅합니다 — 브라우저 계층 모두에 자동 적용되므로 실제 IP가 대상에 노출되지 않습니다. 인라인 기본 인증(http://user:pass@host:port)을 지원합니다.

  • 견고한 세션 관리: 세션별 직렬화, 선택적 세션 상한(MAX_SESSIONS), 히스토리 재생을 통한 세션 중간 충돌 복구, 그리고 정상 종료 지원.

  • 세션 관리: 고유 세션 ID로 여러 작업에 걸쳐 세션 재사용

  • 크로스 플랫폼: Linux 및 macOS에서 작동하며, 필요 시 구성 가능한 실제 브라우저 폴백 제공

Related MCP server: opencode-browser-control

벤치마크

SlimAtlas는 slim-atlas-bench를 사용하여 Playwright MCP(헤드리스 및 헤드풀 Chromium)와 벤치마크되었습니다 — 5개 카테고리의 실제 사이트 25개, 각 3회 실행(총 225회), 모두 localhost의 Docker에서 실행.

설정: 각 서비스는 자체 Docker 컨테이너에서 MCP 서버로 실행됩니다. 벤치마크 하네스는 langchain-mcp-adapters를 통해 도구 호출별 지연 시간(탐색 + 스냅샷)을 측정하고, Docker stats API를 통해 컨테이너 RAM을 캡처합니다. 스냅샷 토큰은 약 4자/토큰으로 추정됩니다(원시 HTML 기준선과 동일한 방법론).

지표(중앙값)

SlimAtlas

Playwright 헤드리스

Playwright 헤드풀

탐색 + 스냅샷 (ms)

1,383

1,116

687

컨테이너 RAM (MB)

124

635

815

스냅샷 토큰

414

940

1,843

SlimAtlas는 탐색 속도를 희생하는 대신 리소스 사용량을 획기적으로 줄입니다. Chromium은 페이지 로드 속도가 빠르지만 5–6배 더 많은 RAM을 사용하고 스냅샷당 2–4배 더 많은 토큰을 생성합니다 — 에이전트 워크플로우에서 규모가 커질 때 지배적인 두 가지 비용입니다.

결과

설치

Bun ≥1.1 필요.

# Install dependencies
bun install

브라우저 바이너리는 첫 실행 시 자동으로 다운로드됩니다.

폴백 브라우저: 레벨 1은 항상 경량 브라우저입니다. 레벨 2는 FALLBACK_BROWSERheadful(헤드풀 Chrome), browserbase(클라우드), browserless(클라우드) 또는 none(기본값, 폴백 없음) 중 하나입니다. 기본 브라우저가 충돌, 타임아웃 또는 봇 감지되면 세션은 구성된 폴백으로 한 번 전환됩니다. Chrome은 Puppeteer에 번들되어 있습니다. Browserbase/Browserless는 API 자격 증명이 필요합니다(아래 참조).

사용법

MCP 서버 실행

# Standalone HTTP server (default)
bun run src/index.ts --port=8080

# Remote, authenticated
MCP_AUTH_TOKEN=s3cret bun run src/index.ts --host=0.0.0.0 --port=8080

SlimAtlas는 단일 Streamable HTTP /mcp 엔드포인트를 노출합니다. 각 클라이언트는 mcp-session-id 헤더를 통해 자체 세션을 얻습니다. MAX_SESSIONS는 동시성을 제한합니다. MCP 클라이언트를 다음에 연결하세요:

{
  "mcpServers": {
    "slimatlas": {
      "url": "http://localhost:8080/mcp",
      "transport": "http"
    }
  }
}

인증 사용 시:

{
  "mcpServers": {
    "slimatlas": {
      "url": "http://your-host:8080/mcp",
      "transport": "http",
      "headers": { "Authorization": "Bearer s3cret" }
    }
  }
}

: 원격 노출에는 --host=0.0.0.0을 사용하되, 그럴 때는 항상 MCP_AUTH_TOKEN을 설정하세요. 서버는 일반 HTTP만 지원합니다 — 앞단에서 TLS를 종료하거나(Caddy/nginx) Bearer 토큰이 네트워크를 통해 평문으로 전송됩니다.

Docker

이미지는 빌드 시 Lightpanda 바이너리를 번들하므로 컨테이너는 자체 포함 상태로 시작되며 다시 다운로드하지 않습니다:

docker build -t slimatlas .
docker run -p 8080:8080 -e MCP_AUTH_TOKEN=s3cret slimatlas
# -> http://localhost:8080/mcp

재현 가능한 빌드를 위해 Lightpanda 릴리스를 고정하세요(모든 lightpanda-io/browser 태그 — 기본값 nightly):

docker build --build-arg LIGHTPANDA_VERSION=0.3.3 -t slimatlas:0.3.3 .

멀티 아키텍처는 자동으로 처리됩니다 — 빌드는 uname -m을 통해 컨테이너의 아키텍처를 감지합니다(x86_64lightpanda-x86_64-linux, aarch64lightpanda-aarch64-linux), 따라서 바이너리는 항상 빌드 중인 플랫폼과 일치합니다.

Apple Silicon(M 시리즈 Mac): 네이티브 빌드/실행을 위해 --platform linux/arm64를 전달하세요. 이 옵션이 없으면 Docker Desktop이 기본적으로 amd64로 설정되어 Rosetta에서 컨테이너를 실행할 수 있으며, 이 경우 Lightpanda 바이너리 실행에 실패합니다(rosetta error: failed to open elf …).

docker build --platform linux/arm64 --build-arg FALLBACK_BROWSER=headful -t slimatlas .
docker run --platform linux/arm64 --name slimatlas -p 8080:8080 -e MCP_AUTH_TOKEN=s3cret -e LIGHTPANDA_POOL_SIZE=10 -e CHROME_POOL_SIZE=10 slimatlas

헤드풀 폴백 변형. 기본 이미지는 Lightpanda만 실행합니다(FALLBACK_BROWSER=none). 런타임에 FALLBACK_BROWSER=headful을 설정하는 경우에만 필요한 헤드풀 Chrome 폴백을 활성화하려면 헤드풀 변형을 빌드하세요 — Chrome 런타임 라이브러리 + Xvfb(약 150MB)를 추가하고 FALLBACK_BROWSER=headful을 사전 설정합니다:

docker build --build-arg LIGHTPANDA_VERSION=0.3.3 FALLBACK_BROWSER=headful -t slimatlas:headful .
docker run -p 8080:8080 -e MCP_AUTH_TOKEN=s3cret slimatlas:headful

Xvfb는 헤드풀 Chrome으로 전환되는 첫 번째 세션에서 컨테이너 내부에서 지연 시작됩니다 — 엔트리포인트나 수동 xvfb-run이 필요 없습니다.

Stdio 모드

서버를 하위 프로세스로 실행하는 MCP 클라이언트(로컬, 단일 클라이언트)의 경우 stdio 전송을 사용하세요:

bun run src/index.ts
{
  "mcpServers": {
    "slimatlas": {
      "command": "bun",
      "args": ["run", "path/to/mcp/src/index.ts"]
    }
  }
}

구성

MCP 클라이언트 구성에 추가하세요:

{
  "mcpServers": {
    "slimatlas": {
      "command": "bun",
      "args": ["run", "path/to/mcp/src/index.ts"]
    }
  }
}

: FALLBACK_BROWSER=none을 설정하면 경량 브라우저만 사용하고 오류를 정직하게 전파합니다. headful 또는 browserbase를 사용하면 실제 브라우저 폴백을 활성화할 수 있습니다.

모든 환경 변수 및 CLI 플래그는 docs/configs.md를 참조하세요.

폴백 브라우저

FALLBACK_BROWSER

레벨 2 브라우저

참고 사항

none (기본값)

경량 브라우저만 사용; 오류가 정직하게 전파됨

headful

헤드풀 Chrome

macOS에서 실제 창; 헤드리스 Linux에서는 xvfb 필요

browserbase

Browserbase 클라우드

BROWSERBASE_API_KEY + BROWSERBASE_PROJECT_ID 필요

알려진 어려운 도메인에 대해 기본 브라우저 건너뛰기: SKIP_LIGHTPANDA_DOMAINS(쉼표로 구분, 하위 도메인 인식) 사용. 일치하는 호스트는 폴백 브라우저에서 직접 시작됩니다. FALLBACK_BROWSER != none이 필요합니다(그렇지 않으면 목록이 경고와 함께 무시됨).

속도 제한

에이전트를 위한 정중하고 탐지 방지적인 페이싱. RateLimiter는 목록에 있는 도메인에 대한 browser_navigate 호출 사이에 서버 전체 최소 지연 시간을 적용하며, 선택적 무작위 지터를 추가하여 간격이 고정된 지문 가능한 주기가 되지 않도록 합니다. 버킷은 모든 세션에 걸쳐 호스트별로 키가 지정됩니다(대상 사이트는 세션이 아닌 IP를 보기 때문), 패턴은 와일드카드를 지원합니다:

패턴

일치 대상

버킷

*

모든 호스트

각 호스트가 독립적으로 제한됨

*.reddit.com

하위 도메인만(www.reddit.com, old.reddit.com) — 아님 reddit.com

일치하는 모든 하위 도메인이 하나의 버킷 공유

g2.com

g2.com + 하위 도메인

최상위 + 하위 도메인이 하나의 버킷 공유

기본적으로 비활성화됩니다. 비어 있지 않은 도메인 목록 0이 아닌 지연 시간으로 활성화하세요:

# Via CLI flags
bun run src/index.ts --rate-limit-domains=*.reddit.com,g2.com --rate-limit-min-delay-ms=2000 --rate-limit-jitter-ms=1500

# Or via environment / .env
RATE_LIMIT_DOMAINS=*.reddit.com,g2.com
RATE_LIMIT_MIN_DELAY_MS=2000
RATE_LIMIT_JITTER_MS=1500

프록시

실제 IP를 대상에 노출하지 마세요. 단일 PROXY_SERVER를 설정하면 SlimAtlas가 브라우저 계층의 모든 HTTP 트래픽을 이를 통해 라우팅합니다 — 브라우저별 연결 설정이 필요 없습니다:

  • 경량 브라우저(레벨 1) — 네이티브 --http-proxy 플래그를 통해 전달됩니다.

  • Chrome 폴백(레벨 2) — 시작 시 --proxy-server를 통해 적용됩니다.

# Via CLI flag
bun run src/index.ts --proxy-server=http://host:8080

# Or via environment / .env
PROXY_SERVER=http://user:pass@host:8080

인라인 기본 인증(http://user:pass@host:port)은 경량 브라우저 계층에서 지원됩니다. IP 허용 목록 프록시(자격 증명 없음)의 경우 두 계층 모두에서 그냥 작동합니다. (page.authenticate를 통한 페이지별 Chrome 인증은 로드맵에 있습니다.)

CLI 플래그

모든 환경 변수는 --flag=value 형식의 소문자 CLI 플래그로도 전달할 수 있습니다. CLI 플래그는 환경 변수를 재정의합니다. 알 수 없는 플래그는 서버가 시작 시 종료되게 합니다. 전체 목록은 docs/configs.md를 참조하세요.

bun run src/index.ts --fallback-browser=headful --lightpanda-pool-size=3 --skip-lightpanda-domains=g2.com --navigate-timeout=60000

MCP 클라이언트에서 플래그를 사용하려면 args 배열에 추가하세요:

{
  "mcpServers": {
    "slimatlas": {
      "command": "bun",
      "args": [
        "run",
        "path/to/mcp/src/index.ts",
        "--fallback-browser=headful",
        "--skip-lightpanda-domains=g2.com,linkedin.com",
        "--chrome-pool-size=3"
      ]
    }
  }
}

사용 워크플로우

# Example: Navigate, snapshot, and interact with a page

# 1. Navigate to a URL (creates a new session automatically)
result = mcp.call("browser_navigate", {"url": "https://example.com"})
# Returns: session_id: abc1, result: Navigated to https://example.com. Title: Example Domain

# 2. Take a snapshot to see the page structure
snapshot = mcp.call("browser_snapshot", {"session_id": "abc1"})
# Returns YAML with node IDs like: 0: {type: div, children: ...}

# 3. Click a node by ID (from the snapshot)
mcp.call("browser_click", {"session_id": "abc1", "nodeId": 2})

# 4. Type into a search box
mcp.call("browser_type", {"session_id": "abc1", "nodeId": 5, "text": "search query"})

# 5. Close the session when done
mcp.call("browser_close", {"session_id": "abc1"})

사용 가능한 도구

Tool

Description

Value

browser_navigate

구성 가능한 대기 전략으로 URL로 이동

모든 웹 상호작용의 진입점. load, domcontentloaded, networkidle0, networkidle2 지원

browser_snapshot

고유 노드 ID가 있는 YAML 접근성 트리 가져오기

LLM 이해에 적합한 구조화된 페이지 표현. 노드 ID로 클릭/입력 대상을 정밀하게 지정 가능

browser_view_node

ID로 특정 노드 콘텐츠 확인(텍스트 또는 이미지)

전체 페이지를 다시 읽지 않고 개별 요소를 검사. 시각적 확인을 위해 이미지를 base64로 반환

browser_click

노드 ID 또는 CSS 선택자로 요소 클릭

신뢰성과 단순성을 위해 (스냅샷의) 노드 ID를 CSS 선택자보다 권장

browser_type

선택적 키 입력 지연으로 요소에 텍스트 입력

사람의 타이핑을 시뮬레이션. 검색 상자, 양식, 텍스트 입력에 사용

browser_fill

입력 요소를 값으로 즉시 채우기

양식 필드에서 browser_type보다 빠름. 채우기 전에 기존 값을 지움

browser_go_back

브라우저 기록에서 뒤로 이동

다단계 워크플로우와 탐색 오류 수정에 필수

browser_go_forward

브라우저 기록에서 앞으로 이동

양방향 탐색을 위해 browser_go_back을 보완

browser_reload

현재 페이지 새로고침

동적 콘텐츠를 새로고침하거나 오래된 페이지 상태에서 복구

browser_get_page_info

현재 페이지 URL과 제목 가져오기

탐색 성공과 현재 컨텍스트를 확인하는 빠른 방법

browser_close

브라우저 세션을 닫고 리소스 해제

정리에 중요. 세션은 시간 초과 시 자동으로 닫히지만 명시적 닫기를 권장

테스트 실행

# Run all tests
bun test

# Run tests in watch mode
bun test --watch

요구 사항

  • Bun ≥1.1

  • Linux 또는 macOS(자동 다운로드) 또는 Chrome/Chromium(대체)

라이선스

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that lets LLM agents control all Chrome browser tabs via accessibility snapshots, element references, and a virtual cursor, supporting operations like click, type, navigate, screenshot, and video recording.
    MIT

View all related MCP servers

Related MCP Connectors

  • Live browser debugging for AI assistants — DOM, console, network via MCP.

  • Screenshot, diff, audit and sitemap-capture any web page — 5 MCP tools for AI agents.

  • MCP server for AI dialogue using various LLM models via AceDataCloud

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hasindu-madushan/slim-atlas-ai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server