MCP 网络扫描服务器
用于 Web 内容扫描和分析的模型上下文协议 (MCP) 服务器。该服务器提供从网页获取、分析和提取信息的工具。
特征
- 页面抓取:将网页转换为 Markdown 格式,方便分析
- 链接提取:从网页中提取并分析链接
- 网站爬取:递归爬取网站以发现内容
- 链接检查:识别网页上的断开链接
- 模式匹配:查找与特定模式匹配的 URL
- 站点地图生成:为网站生成 XML 站点地图
安装
通过 Smithery 安装
要通过Smithery自动安装 Claude Desktop 的 Webscan:
npx -y @smithery/cli install mcp-server-webscan --client claude
手动安装
# Clone the repository
git clone <repository-url>
cd mcp-server-webscan
# Install dependencies
npm install
# Build the project
npm run build
用法
启动服务器
该服务器在 stdio 传输上运行,使其与 Claude Desktop 等 MCP 客户端兼容。
可用工具
fetch-page
- 获取网页并将其转换为 Markdown。
- 参数:
url
(必需):要获取的页面的 URL。selector
(可选):CSS 选择器用于定位特定内容。
extract-links
- 从网页中提取所有链接及其文本。
- 参数:
url
(必需):要分析的页面的 URL。baseUrl
(可选):过滤链接的基本 URL。limit
(可选,默认值:100):返回的最大链接数。
crawl-site
- 递归地爬取网站直至指定深度。
- 参数:
url
(必填):要抓取的起始 URL。maxDepth
(可选,默认值:2):最大爬行深度(0-5)。
check-links
find-patterns
- 查找与特定模式匹配的 URL。
- 参数:
url
(必填):要搜索的 URL。pattern
(必需):与 JavaScript 兼容的正则表达式模式,用于匹配 URL。
generate-site-map
- 通过爬取生成一个简单的 XML 站点地图。
- 参数:
url
(必需):站点地图抓取的根 URL。maxDepth
(可选,默认值:2):发现 URL 的最大抓取深度(0-5)。limit
(可选,默认值:1000):站点地图中包含的最大 URL 数量。
Claude Desktop 的使用示例
- 在 Claude Desktop 设置中配置服务器:
{
"mcpServers": {
"webscan": {
"command": "node",
"args": ["path/to/mcp-server-webscan/build/index.js"], // Corrected path
"env": {
"NODE_ENV": "development",
"LOG_LEVEL": "info" // Example: Set log level via env var
}
}
}
}
- 在对话中使用这些工具:
Could you fetch the content from https://example.com and convert it to Markdown?
发展
先决条件
项目结构(重构后)
mcp-server-webscan/
├── src/
│ ├── config/
│ │ └── ConfigurationManager.ts
│ ├── services/
│ │ ├── CheckLinksService.ts
│ │ ├── CrawlSiteService.ts
│ │ ├── ExtractLinksService.ts
│ │ ├── FetchPageService.ts
│ │ ├── FindPatternsService.ts
│ │ ├── GenerateSitemapService.ts
│ │ └── index.ts
│ ├── tools/
│ │ ├── checkLinksTool.ts
│ │ ├── checkLinksToolParams.ts
│ │ ├── crawlSiteTool.ts
│ │ ├── crawlSiteToolParams.ts
│ │ ├── extractLinksTool.ts
│ │ ├── extractLinksToolParams.ts
│ │ ├── fetchPageTool.ts
│ │ ├── fetchPageToolParams.ts
│ │ ├── findPatterns.ts
│ │ ├── findPatternsToolParams.ts
│ │ ├── generateSitemapTool.ts
│ │ ├── generateSitemapToolParams.ts
│ │ └── index.ts
│ ├── types/
│ │ ├── checkLinksTypes.ts
│ │ ├── crawlSiteTypes.ts
│ │ ├── extractLinksTypes.ts
│ │ ├── fetchPageTypes.ts
│ │ ├── findPatternsTypes.ts
│ │ ├── generateSitemapTypes.ts
│ │ └── index.ts
│ ├── utils/
│ │ ├── errors.ts
│ │ ├── index.ts
│ │ ├── logger.ts
│ │ ├── markdownConverter.ts
│ │ └── webUtils.ts
│ ├── initialize.ts
│ └── index.ts # Main server entry point
├── build/ # Compiled JavaScript (Corrected)
├── node_modules/
├── .clinerules
├── .gitignore
├── Dockerfile
├── LICENSE
├── mcp-consistant-servers-guide.md
├── package.json
├── package-lock.json
├── README.md
├── RFC-2025-001-Refactor.md
├── smithery.yaml
└── tsconfig.json
建筑
开发模式
错误处理
服务器实现了全面的错误处理:
所有错误均根据 MCP 规范正确格式化。
贡献
- 分叉存储库
- 创建你的功能分支(
git checkout -b feature/amazing-feature
) - 提交您的更改(
git commit -m 'Add some amazing feature'
) - 推送到分支(
git push origin feature/amazing-feature
) - 打开拉取请求
执照
MIT 许可证 - 详情请参阅许可证文件