UNPKG

crawl-page-mcp-server

Version:

MCP server for crawling web pages and converting to markdown

291 lines (230 loc) 5.69 kB
# API参考文档 ## 工具列表 ### 1. crawl_page 抓取指定URL的页面内容并转换为指定格式。 #### 参数 | 参数名 | 类型 | 必需 | 默认值 | 描述 | |--------|------|------|--------|------| | `url` | string | ✅ | - | 要抓取的网页URL地址 | | `format` | string | ❌ | `markdown` | 输出格式:`html`、`text`、`markdown` | | `selector` | string | ❌ | - | CSS选择器,用于提取页面特定部分 | | `timeout` | number | ❌ | `10000` | 请求超时时间(毫秒) | | `userAgent` | string | ❌ | `Mozilla/5.0 (compatible; CrawlPageMCP/1.0)` | 自定义User-Agent | #### 输出格式 ```json { "url": "https://example.com", "title": "页面标题", "description": "页面描述(来自meta标签)", "keywords": "页面关键词(来自meta标签)", "format": "markdown", "content": "转换后的内容...", "contentLength": 1234, "timestamp": "2023-12-01T12:00:00.000Z" } ``` #### 使用示例 ##### 基本用法 ```json { "name": "crawl_page", "arguments": { "url": "https://example.com" } } ``` ##### 指定输出格式 ```json { "name": "crawl_page", "arguments": { "url": "https://example.com", "format": "html" } } ``` ##### 使用CSS选择器 ```json { "name": "crawl_page", "arguments": { "url": "https://news.example.com/article/123", "format": "markdown", "selector": "article .content" } } ``` ##### 自定义配置 ```json { "name": "crawl_page", "arguments": { "url": "https://example.com", "format": "text", "timeout": 15000, "userAgent": "MyBot/1.0" } } ``` ### 2. extract_links 从指定URL页面中提取所有链接。 #### 参数 | 参数名 | 类型 | 必需 | 默认值 | 描述 | |--------|------|------|--------|------| | `url` | string | ✅ | - | 要分析的网页URL地址 | | `baseUrl` | string | ❌ | - | 基础URL,用于解析相对链接 | | `filterPattern` | string | ❌ | - | 正则表达式模式,用于过滤链接 | | `timeout` | number | ❌ | `10000` | 请求超时时间(毫秒) | #### 输出格式 ```json { "url": "https://example.com", "totalLinks": 25, "links": [ { "href": "https://example.com/page1", "text": "链接文本", "title": "链接标题(可选)" } ], "timestamp": "2023-12-01T12:00:00.000Z" } ``` #### 使用示例 ##### 基本用法 ```json { "name": "extract_links", "arguments": { "url": "https://example.com" } } ``` ##### 过滤特定链接 ```json { "name": "extract_links", "arguments": { "url": "https://example.com", "filterPattern": ".*\\.pdf$" } } ``` ##### 处理相对链接 ```json { "name": "extract_links", "arguments": { "url": "https://example.com/page", "baseUrl": "https://example.com" } } ``` ## 错误处理 ### 错误响应格式 ```json { "content": [ { "type": "text", "text": "错误: 错误描述信息" } ], "isError": true } ``` ### 常见错误类型 #### 1. URL格式错误 ``` 错误: 无效的URL地址 ``` #### 2. 网络连接错误 ``` 错误: connect ECONNREFUSED 错误: getaddrinfo ENOTFOUND ``` #### 3. 超时错误 ``` 错误: timeout of 10000ms exceeded ``` #### 4. CSS选择器错误 ``` 错误: 未找到匹配选择器 "article" 的元素 ``` #### 5. HTTP错误 ``` 错误: Request failed with status code 404 错误: Request failed with status code 403 ``` ## 输出格式详解 ### HTML格式 返回原始HTML内容,保留所有标签和属性。 ```html <h1>标题</h1> <p>段落内容</p> <a href="link.html">链接</a> ``` ### Text格式 返回纯文本内容,移除所有HTML标签。 ``` 标题 段落内容 链接 ``` ### Markdown格式 将HTML转换为Markdown格式。 ```markdown # 标题 段落内容 [链接](link.html) ``` ## 配置选项 ### User-Agent字符串 常用的User-Agent字符串: ```javascript // Chrome "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" // Firefox "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:89.0) Gecko/20100101 Firefox/89.0" // Safari "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15" // 移动设备 "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1" ``` ### 超时设置建议 | 网站类型 | 建议超时时间 | |----------|--------------| | 静态网站 | 5000ms | | 动态网站 | 10000ms | | 慢速网站 | 15000-30000ms | | API接口 | 5000ms | ### CSS选择器示例 | 选择器 | 描述 | |--------|------| | `article` | 选择article标签 | | `.content` | 选择class为content的元素 | | `#main` | 选择id为main的元素 | | `h1, h2, h3` | 选择所有标题标签 | | `p:first-child` | 选择第一个p标签 | | `div.post .content` | 选择div.post下的.content元素 | ## 性能考虑 ### 1. 内存使用 - 大型页面可能消耗较多内存 - 建议对超大页面使用CSS选择器提取部分内容 ### 2. 网络带宽 - 图片和媒体文件会增加下载时间 - 考虑使用选择器跳过不需要的内容 ### 3. 并发限制 - 避免同时抓取大量页面 - 建议实现请求队列和限流机制 ## 最佳实践 ### 1. URL验证 始终验证URL格式的有效性。 ### 2. 错误处理 实现完善的错误处理和重试机制。 ### 3. 缓存策略 对于不经常变化的内容,考虑实现缓存。 ### 4. 尊重robots.txt 检查目标网站的robots.txt文件。 ### 5. 请求频率控制 避免对同一网站发送过于频繁的请求。