这是一个基于 Model Context Protocol (MCP) 实现的辅助服务,旨在帮助 AI 助手更方便地维护 drpy-node 项目。
通过这个 MCP 服务,AI 可以直接安全地访问项目文件系统、管理爬虫源、检查路由信息以及执行基本的运维操作。
本服务位于项目的 drpy-node-mcp 目录下,拥有独立的依赖环境。
初次使用前,请确保在 drpy-node-mcp 目录下安装了必要的 Node.js 依赖:
cd drpy-node-mcp
npm install该服务使用 Stdio 传输协议,通常由支持 MCP 的客户端(如 Claude Desktop、Cursor、VS Code 插件等)自动启动。
如果需要手动调试运行:
node index.js要将此 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的绝对路径。
本服务提供以下工具供 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 文件后,验证是否存在语法错误。
- 描述: 检查指定 JavaScript 文件的语法是否正确(使用
-
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- 描述: 获取标准的
drpyJS 爬虫源模板代码。 - 参数: 无
- 特性:
- 默认使用基础写法:
一级,二级,搜索,推荐均采用字符串/对象规则,简单易懂。 - 保留高级选项: 包含注释掉的
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) - 逻辑一致性:
filterable与filter_def的对应关系
- JS 语法正确性 (
- 用途: 在编写完源文件后,进行最终的质量把关,确保源码符合 drpy-node 的运行规范。
- 描述: 对爬虫源文件进行深度校验,包括 JS 语法检查和
-
get_routes_info- 描述: 分析
controllers/index.js,返回当前系统注册的所有 Fastify 路由控制器信息。 - 参数: 无
- 用途: 帮助 AI 理解当前的 API 和页面路由结构。
- 描述: 分析
-
restart_service- 描述: 尝试通过 PM2 重启
drpys服务。 - 参数: 无
- 注意: 仅在服务器环境安装了 PM2 且服务名为
drpys时有效。
- 描述: 尝试通过 PM2 重启
配置完成后,您可以直接用自然语言向 AI 提出需求,AI 会自动选择合适的工具。以下是几个典型场景:
用户指令:
"请帮我检查一下 '360影视[官].js' 这个源,把它的 api 地址更新为 'https://new-api.360.com',修改完记得检查一下语法。"
AI 执行流程:
- 调用
list_sources确认文件名。 - 调用
read_file读取spider/js/360影视[官].js的内容。 - 在内存中修改代码。
- 调用
write_file将新代码写回。 - 调用
check_syntax确保没有引入语法错误。
用户指令:
"我最近加了几个新路由,但是服务启动好像有问题,帮我看看现在注册了哪些控制器,然后重启一下服务。"
AI 执行流程:
- 调用
get_routes_info获取当前controllers/index.js中的注册信息。 - 向用户汇报发现的路由。
- 调用
restart_service重启 PM2 服务。
用户指令:
"在 js 目录下帮我新建一个名为 'test_spider.js' 的源,写入一个基础的 drpy 模板。"
AI 执行流程:
- 调用
write_file创建spider/js/test_spider.js并写入模板代码。 - 调用
list_sources确认文件已创建。
用户指令:
"我要写一个新网站的源,网站叫 '酷酷影视',首页是 'https://kuku.com'。需要支持二级页面的异步解析,并且有防盗链处理。请用 drpy 模板帮我写好结构,如果不确定环境里有哪些库,先查一下。"
AI 执行流程:
- 调用
get_spider_template获取标准模板。 - 调用
get_drpy_libs_info确认pdfh等函数是否可用。 - 基于模板和用户提供的网址,生成代码并调用
write_file写入spider/js/酷酷影视.js。 - 最后调用
validate_spider对新文件进行语法和结构双重检查,确保可以直接运行。
- 安全限制: 所有文件操作都被限制在
drpy-node项目根目录下,无法访问项目外部的文件。 - 依赖: 本服务依赖于
@modelcontextprotocol/sdk,fs-extra,zod等库。