Skip to main content
Glama

功能特性

  • 浏览器自动化:导航、点击、输入、填写表单以及执行 JavaScript

  • 默认轻量:内存占用约为 Chromium 的 1/5,快照体积比原始 HTML 小约 25 倍

  • 页面快照:生成紧凑的 YAML 无障碍树快照,带有唯一节点 ID,便于精确定位元素

  • 针对 LLM 优化的上下文:快照仅保留语义核心内容,大幅降低上下文占用,让您能在相同的窗口内处理更多页面和更长的会话

  • 可配置的回退浏览器:双层模型——优先使用轻量浏览器,仅在默认浏览器被检测为机器人、崩溃或超时时,才升级到 有头 ChromeBrowserlessBrowserbase 云浏览器

  • 速率限制:保持低调。对特定域名的请求强制执行可配置的最小延迟间隔,支持通配符模式(**.reddit.com),并可选择添加随机抖动,让您的代理自行控制节奏,而不是被目标网站的反爬机制拦截

  • 代理支持:通过单个 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 次),全部在 Docker 中运行。

测试设置:每个服务作为 MCP 服务器运行在自己的 Docker 容器中。基准测试工具通过 langchain-mcp-adapters 测量每次工具调用的延迟(导航 + 快照),并通过 Docker stats API 捕获容器内存。快照令牌数按约 4 字符/令牌估算(与原始 HTML 基线采用相同方法)。

指标(中位数)

SlimAtlas

Playwright 无头

Playwright 有头

导航 + 快照(毫秒)

1,383

1,116

687

容器内存(MB)

124

635

815

快照令牌数

414

940

1,843

SlimAtlas 以导航速度换取显著更低的内存占用。Chrome 在页面加载方面更快,但内存占用高出 5–6 倍,每个快照产生的令牌数多出 2–4 倍——这两项正是代理大规模运行时的主要成本。

结果

安装

需要 Bun ≥1.1。

# Install dependencies
bun install

浏览器二进制文件会在首次运行时自动下载。

回退浏览器:第 1 层始终是轻量浏览器。第 2 层由 FALLBACK_BROWSER 决定——可选值为 headful(有头 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-linuxaarch64lightpanda-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)。如需启用有头 Chrome 回退(仅当您在运行时设置 FALLBACK_BROWSER=headful 时才需要),请构建有头变体——它会额外安装 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 可仅使用轻量浏览器并如实传递错误。使用 headfulbrowserbase 可启用真实浏览器回退。

有关所有环境变量和 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.comold.reddit.com)——不包括 reddit.com

所有匹配的子域名共享一个限流桶

g2.com

g2.com 及其子域名

主域名 + 子域名共享一个限流桶

默认禁用。通过设置非空域名列表非零延迟来启用:

# 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 标志

每个环境变量也可以作为小写 CLI 标志以 --flag=value 形式传入。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

所有 Web 交互的入口点。支持 loaddomcontentloadednetworkidle0networkidle2

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