浏览器自动化服务器

轻量级MCP服务器,允许Zed中的Codex通过Firefox浏览网页,并提供低令牌响应。

  • by cardozQ
  • Python
  • 本地部署
  • 1 星标
  • 更新于

使用说明

Zed+Codex的Firefox MCP服务器

轻量级MCP服务器,允许Zed中的Codex通过Firefox以较低的令牌响应浏览网页。

它能做什么

  • 使用DuckDuckGo搜索网络
  • 通过Playwright在Firefox中打开页面
  • 提取结构化页面内容
  • 列表页面链接
  • 在当前页面内搜索文本
  • 跟踪简单浏览历史记录

项目布局

src/
  server.py       FastMCP server and tool registration
  controller.py   Orchestrates browser, search, extraction, and state
  browser.py      Firefox / Playwright automation
  search.py       DuckDuckGo search with browser fallback
  extractor.py    Readability + BeautifulSoup extraction
  state.py        Session state and extraction cache
  utils.py        Logging, retry, URL helpers, truncation, chunking
docs/
  architecture.md
.zed/
  settings.json   Project-local Zed MCP server registration

需求

  • Python 3.11+
  • uv
  • 为Playwright安装的Firefox
  • 启用代理/MCP支持的Zed

设置

uv venv
source .venv/bin/activate
uv sync
playwright install firefox

手动运行服务器

.venv/bin/python src/server.py

服务器使用stdio传输并将日志写入 logs/mcp.log.

在Zed中使用它

此项目中已包含项目本地Zed配置 .zed/settings.json.

当前服务器配置:

{
  "context_servers": {
    "firefox-web": {
      "command": "/home/patrick/Experiments/FCP/.venv/bin/python",
      "args": [
        "/home/patrick/Experiments/FCP/src/server.py"
      ]
    }
  }
}

步骤:

  1. 在Zed中打开此项目文件夹。
  2. 如果系统提示,请信任工作区。
  3. 重新启动Zed或重新加载窗口。
  4. 打开代理设置或MCP/上下文服务器视图。
  5. 确认 firefox-web 出现并正在运行。

可用的MCP工具

  • web.search(query)
  • web.open(url)
  • web.open_result(index)
  • web.extract()
  • web.links()
  • web.find(text)
  • web.history()
  • web.research(query, result_index=0, max_related_links=5)

工作流示例

  1. web.search("OpenAI")
  2. web.open_result(0)
  3. web.extract()
  4. web.find("GPT-5")
  5. web.links()

紧凑的工作流程:

  1. web.research("OpenAI")
  2. 检查 page_snapshot
  3. 从中选择URL related_links
  4. web.open(url) 继续探索

备注

  • 搜索使用DuckDuckGo HTML搜索。
  • 如果DuckDuckGo向原始HTTP请求返回反机器人挑战,搜索模块将退回到基于Firefox的页面获取。
  • 提取的内容被截断和分块,以降低令牌使用率。
  • 缓存的提取结果存储在进程内存中。
  • 第12阶段为代理式浏览添加了一个紧凑的研究工作流程。

日志

主日志文件:

logs/mcp.log

日志当前记录:

  • 工具使用
  • 搜索查询
  • 访问过的URL
  • 提取尺寸
  • 错误

当前状态

完整的:

  • 第0阶段至第12阶段

剩下的:

  • 第13阶段
  • 第14阶段的文档仍可进一步扩展,但核心项目文档现已到位