主要功能

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

先决条件

在运行此示例之前,您需要:

  • Browserbase 账户: 从 Browserbase 获取 API 凭证
  • OpenAI API 密钥: 从 OpenAI 获取 API 密钥

设置说明

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

git clone https://github.com/browserbase/mcp-server-browserbase

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

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

2. 安装 Python 依赖

pip install agno mcp openai

3. 设置环境变量

export BROWSERBASE_API_KEY=your_browserbase_api_key
export BROWSERBASE_PROJECT_ID=your_browserbase_project_id
export OPENAI_API_KEY=your_openai_api_key

代码示例

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截屏仅在导航成功后使用