Skip to content

Latest commit

 

History

History
217 lines (165 loc) · 9.16 KB

File metadata and controls

217 lines (165 loc) · 9.16 KB

drpy-node MCP Server

这是一个基于 Model Context Protocol (MCP) 实现的辅助服务,旨在帮助 AI 助手更方便地维护 drpy-node 项目。

通过这个 MCP 服务,AI 可以直接安全地访问项目文件系统、管理爬虫源、检查路由信息以及执行基本的运维操作。

目录

安装与运行

本服务位于项目的 drpy-node-mcp 目录下,拥有独立的依赖环境。

1. 安装依赖

初次使用前,请确保在 drpy-node-mcp 目录下安装了必要的 Node.js 依赖:

cd drpy-node-mcp
npm install

2. 运行服务

该服务使用 Stdio 传输协议,通常由支持 MCP 的客户端(如 Claude Desktop、Cursor、VS Code 插件等)自动启动。

如果需要手动调试运行:

node index.js

客户端配置 (Trae/Claude Desktop)

要将此 MCP 服务添加到 Trae 或其他支持 MCP 的客户端,请在客户端的 MCP 配置文件(通常是 config.json)中添加以下内容:

{
  "mcpServers": {
    "drpy-node-mcp": {
      "command": "node",
      "args": [
        "E:/gitwork/drpy-node/drpy-node-mcp/index.js"
      ]
    }
  }
}

注意: 请确保 args 中的路径是您本地机器上 index.js 的绝对路径。

可用工具 (Tools)

本服务提供以下工具供 AI 调用:

文件系统操作

  • list_directory

    • 描述: 列出项目中的文件和目录。
    • 参数: path (可选,默认为项目根目录 .)
    • 用途: 探索项目结构。
  • read_file

    • 描述: 读取指定文件的内容。
    • 参数: path (必填,相对于项目根目录的文件路径)
    • 用途: 读取代码、配置文件等。
  • write_file

    • 描述: 写入内容到文件(如果目录不存在会自动创建)。
    • 参数:
      • path (必填)
      • content (必填)
    • 用途: 修改代码、新建文件。
  • delete_file

    • 描述: 删除指定的文件或目录。
    • 参数: path (必填)
    • 用途: 清理废弃文件。

爬虫源管理

  • list_sources

    • 描述: 专门列出 spider/js/spider/catvod/ 目录下的所有爬虫源文件。
    • 参数: 无
    • 用途: 快速获取当前项目中的所有爬虫源列表,无需遍历整个目录。
  • check_syntax

    • 描述: 检查指定 JavaScript 文件的语法是否正确(使用 node --check)。
    • 参数: path (必填)
    • 用途: 在修改或创建 JS 文件后,验证是否存在语法错误。

高级开发工具 (New)

  • fetch_spider_url

    • 描述: 使用 drpy-node 的请求库抓取 URL 内容,支持自定义 Header 和 Method。
    • 参数:
      • url (必填): 目标 URL。
      • options (可选): 请求配置对象。
        • method: HTTP 方法 (GET, POST)。
        • headers: 请求头 (User-Agent, Cookie, Referer 等)。
        • data: 请求体数据 (POST 数据)。
    • 用途: AI 在编写源之前,先调用此工具确认网站的可访问性,测试反爬策略(如是否需要特定 UA 或 Cookie),并获取原始内容以供分析。
  • debug_spider_rule

    • 描述: 调试 drpy 爬虫规则,支持解析 HTML 内容或在线抓取 URL。
    • 参数:
      • html (可选): 需要解析的 HTML 文本内容。
      • url (可选): 需要抓取的网页 URL(若未提供 html,则会自动请求此 URL)。
      • rule (必填): drpy 解析规则 (如 .list li, a&&href, body&&Text)。
      • mode (必填): 解析模式,可选 pdfa (列表), pdfh (HTML), pd (URL)。
      • baseUrl (可选): 用于拼接相对链接的基础 URL。
      • options (可选): 请求配置 (method, headers, data)。
    • 用途: AI 在编写或修复源时,可直接使用此工具验证选择器是否正确,无需运行完整爬虫。
  • get_spider_template

    • 描述: 获取标准的 drpy JS 爬虫源模板代码。
    • 参数: 无
    • 特性:
      • 默认使用基础写法: 一级, 二级, 搜索, 推荐 均采用字符串/对象规则,简单易懂。
      • 保留高级选项: 包含注释掉的 async function 模板,供复杂场景(如动态加载、加密参数)使用。
    • 用途: AI 创建新源时,优先使用基础模板;仅在基础规则无法满足需求时,才启用高级异步函数。
  • get_drpy_libs_info

    • 描述: 获取 drpy-node 运行环境中可用的全局变量、辅助函数及开发规范。
    • 参数: 无
    • 包含信息:
      • 全局函数: request, pdfa, pdfh, ungzip, $.require
      • 开发规范: 明确指出优先使用字符串/对象规则,避免滥用异步函数。
      • 上下文变量 (this): input, MY_PAGE, MY_CATE
      • 第三方库: Cheerio, CryptoJS, Underscore
    • 用途: 帮助 AI 了解当前的沙箱环境支持哪些能力,以便正确使用 this 上下文和内置库。
  • validate_spider

    • 描述: 对爬虫源文件进行深度校验,包括 JS 语法检查和 drpy 规则结构检查。
    • 参数: path (必填)
    • 检查项:
      • JS 语法正确性 (node --check)
      • rule 对象及必要字段 (title, url) 存在性
      • 高级特性检测: 异步解析函数、代理规则 (proxy_rule)、本地导入 ($.require)
      • 逻辑一致性: filterablefilter_def 的对应关系
    • 用途: 在编写完源文件后,进行最终的质量把关,确保源码符合 drpy-node 的运行规范。

系统维护

  • get_routes_info

    • 描述: 分析 controllers/index.js,返回当前系统注册的所有 Fastify 路由控制器信息。
    • 参数: 无
    • 用途: 帮助 AI 理解当前的 API 和页面路由结构。
  • restart_service

    • 描述: 尝试通过 PM2 重启 drpys 服务。
    • 参数: 无
    • 注意: 仅在服务器环境安装了 PM2 且服务名为 drpys 时有效。

AI 交互示例 (Best Practice)

配置完成后,您可以直接用自然语言向 AI 提出需求,AI 会自动选择合适的工具。以下是几个典型场景:

场景 1:修改现有爬虫源

用户指令:

"请帮我检查一下 '360影视[官].js' 这个源,把它的 api 地址更新为 'https://new-api.360.com',修改完记得检查一下语法。"

AI 执行流程:

  1. 调用 list_sources 确认文件名。
  2. 调用 read_file 读取 spider/js/360影视[官].js 的内容。
  3. 在内存中修改代码。
  4. 调用 write_file 将新代码写回。
  5. 调用 check_syntax 确保没有引入语法错误。

场景 2:排查服务启动问题

用户指令:

"我最近加了几个新路由,但是服务启动好像有问题,帮我看看现在注册了哪些控制器,然后重启一下服务。"

AI 执行流程:

  1. 调用 get_routes_info 获取当前 controllers/index.js 中的注册信息。
  2. 向用户汇报发现的路由。
  3. 调用 restart_service 重启 PM2 服务。

场景 3:创建新源

用户指令:

"在 js 目录下帮我新建一个名为 'test_spider.js' 的源,写入一个基础的 drpy 模板。"

AI 执行流程:

  1. 调用 write_file 创建 spider/js/test_spider.js 并写入模板代码。
  2. 调用 list_sources 确认文件已创建。

场景 4:智能创建与校验爬虫源 (New)

用户指令:

"我要写一个新网站的源,网站叫 '酷酷影视',首页是 'https://kuku.com'。需要支持二级页面的异步解析,并且有防盗链处理。请用 drpy 模板帮我写好结构,如果不确定环境里有哪些库,先查一下。"

AI 执行流程:

  1. 调用 get_spider_template 获取标准模板。
  2. 调用 get_drpy_libs_info 确认 pdfh 等函数是否可用。
  3. 基于模板和用户提供的网址,生成代码并调用 write_file 写入 spider/js/酷酷影视.js
  4. 最后调用 validate_spider 对新文件进行语法和结构双重检查,确保可以直接运行。

配置说明

  • 安全限制: 所有文件操作都被限制在 drpy-node 项目根目录下,无法访问项目外部的文件。
  • 依赖: 本服务依赖于 @modelcontextprotocol/sdk, fs-extra, zod 等库。