使用说明
项目简介
本项目 'Browser_scrape_mcp' 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在为大型语言模型(LLM)客户端提供强大的浏览器自动化和网页内容抓取能力。通过标准化的 MCP 协议,LLM 可以安全、可扩展地调用服务器提供的工具,实现智能化的网页信息提取和处理。
主要功能点
- 网页抓取与信息提取: 提供多种工具,能够根据不同的网站类型(如GitHub、Stack Overflow、文档站、通用网站)智能抓取网页内容,并返回结构化信息。
- 文件系统操作: 支持文件和目录的管理功能,例如列出目录内容、查看文件信息、读取文件内容等,方便进行本地文件操作。
- 搜索引擎集成: 集成 Tavily 搜索引擎,可以根据用户查询获取相关的网页链接和内容。
- 工具化能力: 所有功能均以 MCP 工具的形式提供,易于被 LLM 客户端调用和集成。
- 标准 MCP 协议: 遵循 MCP 协议标准,易于与其他 MCP 客户端集成,实现即插即用。
安装步骤
-
克隆仓库:
git clone https://github.com/Raghu6798/Browser_scrape_mcp.git cd Browser_scrape_mcp -
安装依赖:
pip install -r requirements.txt -
安装 Playwright 浏览器:
playwright install -
配置 API 密钥: 在项目根目录下创建 '.env' 文件,并添加 Mistral AI 和 Tavily Search 的 API 密钥:
MISTRAL_API_KEY=你的Mistral_API_密钥 TAVILY_SEARCH_API=你的Tavily_Search_API_密钥 FIRECRAWL_API_KEY=你的Firecrawl_API_密钥注意: 如果不需要使用 'search_and_scrape' 和 'scrape_content' 工具,可以不配置 'TAVILY_SEARCH_API' 和 'FIRECRAWL_API_KEY'。
服务器配置
MCP 客户端需要配置以下 JSON 格式的服务器信息才能连接到本 MCP 服务器。
{ "server name": "Browser_scrape_mcp Server", "command": "python", "args": ["main.py"] }
配置参数说明:
- 'server name': 服务器的名称,可以自定义,用于在客户端识别服务器。
- 'command': 启动服务器的命令,这里使用 'python' 解释器。
- 'args': 启动命令的参数列表,这里指定 'main.py' 为服务器主程序入口。 注意: 请确保 'main.py' 文件位于 MCP 客户端能够访问到的路径下。如果 'main.py' 路径与客户端当前工作目录不同,'args' 需要配置为 'main.py' 的绝对路径。
基本使用方法
-
启动 MCP 服务器: 打开终端,进入仓库根目录,运行以下命令启动 MCP 服务器:
python main.py服务器成功启动后,终端会显示 "Starting MCP server..." 和 "MCP server is running." 信息。保持服务器运行。
-
启动 MCP 客户端: 在另一个终端窗口中,进入仓库根目录,运行以下命令启动 MCP 客户端:
python client.py客户端启动后,会连接到 MCP 服务器,并显示 "Client session initialized successfully." 和 "Tools loaded successfully." 信息。
-
与 Agent 交互: 在客户端终端中,输入你的查询内容,例如 "Search Google for the latest news about AI",然后按回车键。Agent 将调用 MCP 服务器提供的工具进行处理,并将结果返回并在客户端终端显示。
-
退出: 在客户端终端中,输入 'exit' 并按回车键,即可安全退出客户端程序。服务器程序需要手动在服务器终端中停止。
工具函数
本 MCP 服务器提供以下工具函数,可以通过 MCP 协议被客户端调用:
- 'search_and_scrape(query: str)': 使用 Tavily 搜索并抓取最相关的网页内容。
- 'list_directory(path: str = ".")': 列出指定目录下的文件和目录。
- 'get_current_directory()': 获取当前工作目录。
- 'change_directory(path: str)': 切换当前工作目录。
- 'file_info(path: str)': 获取文件或目录的详细信息。
- 'create_directory(path: str)': 创建新的目录。
- 'scrape_content(url: str)': 抓取指定 URL 的网页内容并返回 Markdown 格式。
- 'read_file_content(file_path: str, start_line: int = 1, end_line: int = None)': 读取文件内容,支持指定行范围。
- 'preview_file(file_path: str, num_lines: int = 10)': 预览文件的前几行内容。
- 'list_all_files(path: str = ".", exclude_dirs: list = None)': 递归列出目录及其子目录下的所有文件。
- 'find_files_by_type(path: str = ".", file_type: str = None)': 查找指定类型的文件。
这些工具可以被 LLM 客户端灵活组合和调用,以实现复杂的浏览器自动化和信息处理任务。
信息
分类
网页与API