Skip to main content
Glama
ashley-ha

MCP Browser Agent

by ashley-ha

MCP ブラウザエージェント

鍛冶屋のバッジ

AGI House MCPハッカソンで構築

概要

このプロジェクトは、モデルコンテキストプロトコル(MCP)を使用してブラウザインタラクションを可能にするブラウザ自動化エージェントです。MCPサーバーを介して、Claudeとブラウザ自動化機能をシームレスに統合します。

MCP サーバーの強化に役立つブラウザー エージェント機能を提供してくれた Browser-Use に感謝します。

Related MCP server: selenium-mcp

システム要件

  • macOS (ダーウィン 24.2.0)

  • Python 3.12以上

  • uvパッケージマネージャー

  • Google Chrome ブラウザ (タスクを実行する前にブラウザが閉じていることを確認してください。)

インストール

Smithery経由でインストール

Smithery経由で Claude Desktop 用の Browser Automation Agent を自動的にインストールするには:

npx -y @smithery/cli install @ashley-ha/mcp-manus --client claude

手動インストール

  1. リポジトリをクローンします。

git clone <repository-url>
cd mcp
  1. uvを使用して Python 環境をセットアップします。

uv venv
source .venv/bin/activate
uv sync

構成

クロードデスクトップ構成

Claude Desktop 構成ファイルを作成または変更します。

{
  "mcpServers": {
    "browser-use": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/mcp",
        "run",
        "browser-use.py"
      ]
    }
  }
}

/ABSOLUTE/PATH/TO/browser-useプロジェクト ディレクトリへの絶対パスに置き換えます。

ブラウザの設定

エージェントは、次のデフォルト設定で Google Chrome を使用するように構成されています。

  • 開発用の非ヘッドレスモード

  • ウィンドウサイズ: 1280x1100

  • テストのためにセキュリティ機能を無効にしました

  • 録音パス: ./tmp/recordings

特徴

  • MCPツールによるブラウザ自動化

  • 国家管理および計画能力

  • インタラクティブな要素の検出と操作

  • 設定可能なブラウザコンテキスト

  • ログ記録とデバッグのサポート

使用法

エージェントは主に 2 つのツールを提供します。

  1. get_planner_state : 現在のブラウザの状態と計画コンテキストを取得します

  2. execute_actions : ブラウザで計画されたアクションを実行する

発達

ログ記録

このプロジェクトでは、次の構成で Python の組み込みログ記録を使用します。

  • すべてのログはstderrに送信されます

  • カスタム書式: %(levelname)-8s [%(name)s] %(message)s

  • ルートロガーレベル: INFO

  • サードパーティのロガーレベル: 警告

プロジェクト構造

  • browser-use.py : メインエントリポイントとサーバーの実装

  • tmp/recordings : ブラウザセッションの記録用のディレクトリ

  • uvを通じて管理される依存関係

貢献

このプロジェクトはAGI House MCPハッカソン中に構築されました。貢献を歓迎します!

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。

著作権 (c) 2025 Jaeyun Ha、Ashley Ha

本ソフトウェアおよび関連ドキュメント ファイル (以下「本ソフトウェア」) のコピーを入手したすべての人物は、以下の条件に従い、本ソフトウェアを無制限に扱う権利 (使用、コピー、変更、統合、公開、配布、サブライセンス、および/または販売する権利を含みますが、これに限定されません) および本ソフトウェアの提供を受けた人物が同様の行為を行うことを許可する権利を無償で付与されます。

上記の著作権表示およびこの許可通知は、ソフトウェアのすべてのコピーまたは大部分に含めるものとします。

本ソフトウェアは「現状有姿」で提供され、明示的または黙示的を問わず、商品性、特定目的への適合性、非侵害性を含むがこれらに限定されない、いかなる種類の保証も付与されません。いかなる場合においても、著作者または著作権者は、契約違反、不法行為、またはその他の行為にかかわらず、本ソフトウェア、本ソフトウェアの使用、またはその他の取り扱いに起因または関連して発生するいかなる請求、損害、またはその他の責任についても責任を負わないものとします。

Available Tools

2 tools
execute_actionsB

Execute actions from the planner state.

Args:
    actions: A dictionary containing the planner state and actions in format:
            {
                "current_state": {
                    "evaluation_previous_goal": str,
                    "memory": str,
                    "next_goal": str
                },
                "action": [
                    {"action_name": {"param1": "value1"}},
                    ...
                ]
            }
            
Note: If the page state changes (new elements appear) during action execution,
the sequence will be interrupted and you'll need to get a new planner state.
ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that execution can be interrupted by page state changes, which is a key behavioral trait, but doesn't cover other aspects like error handling, side effects, or response format. It adds some context but is incomplete for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the main purpose, followed by an 'Args' section and a note. The structure is clear, but the note could be more integrated; overall, it's efficient with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (1 parameter with nested objects, no annotations, no output schema), the description covers the parameter structure well and includes a behavioral note. However, it lacks details on return values, error cases, and full usage context, making it adequate but with gaps for a tool that likely performs mutations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It provides a detailed example of the 'actions' parameter structure, including nested objects and keys like 'current_state' and 'action', which adds significant meaning beyond the schema's generic 'object' type. This effectively documents the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'Execute actions from the planner state', which provides a verb ('Execute') and resource ('actions from the planner state'), but it's vague about what 'actions' specifically entail (e.g., UI interactions, API calls) and doesn't clearly distinguish from the sibling tool 'get_planner_state'. It's not tautological but lacks specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a note about interruption when 'the page state changes', which implies a usage context (e.g., web automation), but it doesn't explicitly state when to use this tool versus alternatives like 'get_planner_state' or provide prerequisites. The guidance is minimal and not comprehensive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_planner_stateA

Get the current browser state and planning context. This tool must be executed before execute_actions tool.

Must return a JSON string in the format:
{
    "current_state": {
        "evaluation_previous_goal": "Success|Failed|Unknown - Analysis of previous actions",
        "memory": "Description of what has been done and what to remember",
        "next_goal": "What needs to be done with the next immediate action"
    },
    "action": [
        {"action_name": {"param1": "value1", ...}},
        ...
    ]
}
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it's a read operation ('Get'), it returns specific structured data (a JSON string with defined format), and it has a prerequisite relationship with another tool. It doesn't cover aspects like error handling or performance, but for a zero-parameter tool with no annotations, this is reasonably comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and usage guideline in the first two sentences, which is good. However, it includes a detailed JSON format specification that might be better suited for an output schema. While this adds value, it makes the description longer than necessary for conciseness, as the output details could be separated into structured data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 0 parameters, no annotations, and no output schema, the description provides good contextual completeness. It explains the purpose, usage guidelines, and output format in detail. The only gap is the lack of an output schema, but the description compensates by specifying the return format explicitly, making it sufficient for the agent to understand how to use the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description doesn't need to add parameter information, and it doesn't attempt to, which is appropriate. No parameters are present to document, so this score reflects that the description doesn't introduce confusion or redundancy regarding inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get the current browser state and planning context.' It specifies the verb ('Get') and resource ('browser state and planning context'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from its sibling tool 'execute_actions' beyond stating a prerequisite relationship, which is more about usage than purpose distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'This tool must be executed before execute_actions tool.' It clearly states when to use this tool (as a prerequisite for 'execute_actions') and implies an alternative (use 'execute_actions' after this). This is a strong, directive guideline that helps the agent understand the tool's role in the workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • First observedexecute_actions
    • First observedget_planner_state

TDQS

B3.4/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: get_planner_state retrieves browser state and planning context, while execute_actions performs actions based on that state. There is no overlap or ambiguity between these functions.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern with clear action-oriented names (get_planner_state, execute_actions). The naming convention is uniform and predictable throughout the set.

Tool Count2/5

With only 2 tools for a browser automation server, the surface feels severely limited. While the tools cover a basic planning-execution loop, typical browser automation requires more granular operations like navigation, element interaction, or content extraction.

Completeness2/5

The toolset provides only a high-level planning/execution abstraction without direct browser manipulation capabilities. There are significant gaps for common browser tasks like navigating to URLs, clicking elements, extracting text, or handling dialogs, which agents would need for robust automation.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    A Model Context Protocol (MCP) integration that provides Claude Desktop with autonomous browser automation capabilities. This agent enables Claude to interact with web content, manipulate DOM elements, execute JavaScript, and perform API requests.
    13
    5 npm
    41
    TypeScript
    Mozilla Public 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables browser automation through the Claude Chrome Extension, allowing agents to navigate websites, fill forms, take screenshots, and debug web apps via standard MCP protocols.
    1
    MIT