> ## Documentation Index
> Fetch the complete documentation index at: https://ikun.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Stagehand MCP agent

> 一个使用 Stagehand MCP 服务器的网页抓取代理，用于自动化浏览器交互并从 Hacker News 创建结构化的内容摘要。

## 主要功能

* **安全导航**: 正确的初始化顺序可防止常见的浏览器自动化错误
* **结构化数据提取**: 有条理地提取和组织网页内容的方法
* **灵活输出**: 创建包含标题、摘要和见解的结构化摘要

## 先决条件

在运行此示例之前，您需要：

* **Browserbase 账户**: 从 [Browserbase](https://browserbase.com) 获取 API 凭证
* **OpenAI API 密钥**: 从 [OpenAI](https://platform.openai.com/settings/organization/api-keys) 获取 API 密钥

## 设置说明

### 1. 克隆并构建 Stagehand MCP 服务器

```bash theme={null}
git clone https://github.com/browserbase/mcp-server-browserbase

# 进入 stagehand 目录
cd mcp-server-browserbase/stagehand

# 安装依赖并构建
npm install
npm run build
```

### 2. 安装 Python 依赖

```bash theme={null}
pip install agno mcp openai
```

### 3. 设置环境变量

```bash theme={null}
export BROWSERBASE_API_KEY=your_browserbase_api_key
export BROWSERBASE_PROJECT_ID=your_browserbase_project_id
export OPENAI_API_KEY=your_openai_api_key
```

## 代码示例

```python theme={null}
import asyncio
from os import environ
from textwrap import dedent

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.mcp import MCPTools
from mcp import StdioServerParameters


async def run_agent(message: str) -> None:
    server_params = StdioServerParameters(
        command="node",
        # 将此路径更新为您克隆存储库的位置
        args=["mcp-server-browserbase/stagehand/dist/index.js"],
        env=environ.copy(),
    )

    async with MCPTools(server_params=server_params, timeout_seconds=60) as mcp_tools:
        agent = Agent(
            model=OpenAIChat(id="gpt-4o"),
            tools=[mcp_tools],
            instructions=dedent("""\
                您是一位网页抓取助手，可以从 Hacker News 创建简洁的读者摘要。

                关键初始化规则 - 严格遵守：
                1. 在成功导航**之后**才能使用截图工具
                2. **始终先**使用 stagehand_navigate
                3. 在执行任何其他操作之前等待导航成功消息
                4. 如果看到初始化错误，请仅重启导航
                5. 使用 stagehand_observe 和 stagehand_extract 安全地浏览页面

                可用工具和安全使用顺序：
                - stagehand_navigate：**首先**用于初始化浏览器
                - stagehand_extract：用于从页面提取结构化数据
                - stagehand_observe：用于查找元素和理解页面结构
                - stagehand_act：用于点击链接和导航到评论
                - screenshot：仅在导航成功且页面加载后使用

                您的目标是创建一个全面而简洁的摘要，包括：
                - 带有简短摘要的顶部标题
                - 关键主题和趋势
                - 值得注意的评论和见解
                - 整体科技新闻格局概览

                请有条理地提取结构化数据，并提供有价值的见解。
            """),
            markdown=True,
            show_tool_calls=True,
        )
        await agent.aprint_response(message, stream=True)


if __name__ == "__main__":
    asyncio.run(
        run_agent(
            "从 https://news.ycombinator.com 创建一份全面的 Hacker News 读者摘要"
        )
    )
```

## 可用工具

Stagehand MCP 服务器提供了几个用于 Web 自动化的工具：

| 工具                   | 目的          | 使用说明          |
| -------------------- | ----------- | ------------- |
| `stagehand_navigate` | 导航到网页       | **首先使用**进行初始化 |
| `stagehand_extract`  | 提取结构化数据     | 安全用于内容提取      |
| `stagehand_observe`  | 查找元素和理解页面结构 | 适合探索          |
| `stagehand_act`      | 与页面元素交互     | 点击、输入、滚动等操作   |
| `screenshot`         | 截屏          | **仅在**导航成功后使用 |
