断链检查器MCP服务器
一个模型上下文协议(MCP)服务器,它提供可流式传输的HTTP传输能力以进行链接检查。该服务器使像Claude这样的AI助手能够检查URL、扫描网页,并爬取整个网站以查找损坏的链接。
特点
- 四个强大的工具 用于链接检查:
- check_url - 验证单个URL - check_html - 检查HTML内容中的所有链接 - check_page - 获取网页上的所有链接并检查它们 - check_site - 递归地抓取并检查整个网站
- 可流式传输的HTTP传输 - 准备就绪以使用无服务器架构,无需持久连接
- JSON-RPC 2.0 - 支持标准MCP协议
- 综合结果 - 状态码、重定向、响应时间以及详细的错误信息
- 可配置选项 - 超时设置、重定向处理、自定义用户代理
安装
npm install
npm run build用法
运行服务器
开发模式:
npm run dev生产模式:
npm run build
npm start服务器默认将在3000端口启动(可通过配置调整) PORT 环境变量)。
终点(或端点)
- 健康检查:
GET /health - MCP端点:
POST /mcp
与Claude代码一起使用
在您的MCP设置中添加:
claude mcp add --transport http broken-link-checker http://localhost:3000/mcp或者手动添加到您的MCP配置中:
{
"mcpServers": {
"broken-link-checker": {
"transport": "http",
"url": "http://localhost:3000/mcp"
}
}
}工具
1. 检查网址
检查单个URL是否正常或已损坏。
参数:
url(字符串,必填)- 要检查的URLtimeout(数字,可选)- 请求超时时间,单位为毫秒(默认:30000)followRedirects(布尔值,可选) - 是否跟随重定向(默认:true)maxRedirects(数字,可选)- 最大重定向次数(默认:5)userAgent(字符串,可选)- 自定义的用户代理字符串
示例:
{
"tool": "check_url",
"arguments": {
"url": "https://example.com",
"timeout": 10000
}
}回答:
{
"url": "https://example.com",
"status": 200,
"statusText": "OK",
"broken": false,
"responseTime": 123
}2. 检查HTML
检查HTML内容中的所有链接。
参数:
html(字符串,必需) - 要检查的HTML内容baseUrl(字符串,必填) - 解析相对链接的基础URL- 所有选项来自
check_url
示例:
{
"tool": "check_html",
"arguments": {
"html": "About",
"baseUrl": "https://example.com"
}
}回答:
{
"totalLinks": 5,
"brokenLinks": 1,
"workingLinks": 4,
"results": [...]
}3. 检查页面
获取一个网页并检查其中的所有链接。
参数:
url(字符串,必填)- 要检查的页面的URL- 所有选项来自
check_url
示例:
{
"tool": "check_page",
"arguments": {
"url": "https://example.com"
}
}回复:
{
"page": {
"url": "https://example.com",
"status": 200,
"broken": false
},
"totalLinks": 25,
"brokenLinks": 2,
"workingLinks": 23,
"links": [...]
}4. 检查网站
递归地抓取并检查网站上的所有链接。
参数:
url(字符串,必填)- 网站的起始URLmaxPages(数字,可选)- 要检查的最大页面数(默认:50)- 所有选项来自
check_url
示例:
{
"tool": "check_site",
"arguments": {
"url": "https://example.com",
"maxPages": 10
}
}回答:
{
"totalPages": 10,
"totalLinks": 150,
"brokenLinks": 5,
"workingLinks": 145,
"pages": [...]
}会话使用示例
一旦连接到Claude Code,您就可以使用自然语言:
"Check if https://example.com is working"
"Scan https://mysite.com and find all broken links"
"Crawl https://blog.example.com and report any 404 errors"
"Check all the links on this page: https://docs.example.com/api"API 示例
直接HTTP请求
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "check_url",
"arguments": {
"url": "https://example.com"
}
}
}'列出可用工具
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}'部署
Docker
创建一个 Dockerfile:
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY dist ./dist
EXPOSE 3000
CMD ["node", "dist/index.js"]构建并运行:
npm run build
docker build -t broken-link-checker-mcp .
docker run -p 3000:3000 broken-link-checker-mcp云部署
此服务器采用可流式传输的HTTP传输方式,并已准备好支持无服务器架构。部署至:
- Google Cloud Run - 空闲时自动归零
- AWS Elastic Beanstalk(亚马逊网络服务 弹性豆茎服务) - 管理的Node.js托管服务
- Azure 应用服务 - 集成部署
- 渲染 一键部署
- 铁路 - 基于Git的部署
建筑学(或“建筑”)
这个实现使用了:
- Express.js - HTTP服务器
- MCP SDK(MCP软件开发工具包) - 模型上下文协议实现
- 得到了 - 用于链接检查的HTTP客户端
- parse5(解析器5) - HTML解析
- TypeScript - 类型安全的实现
- 佐德 - 运行时模式验证
与原始的断链检查器进行比较
这个MCP服务器提供:
- ✅ 支持MCP协议以集成AI
- ✅ HTTP传输(无状态,已准备好使用无服务器架构)
- 简洁、专注的API
- ✅ 现代TypeScript实现
原始图书馆提供:
- 高级HTML解析选项
- 机器人排除协议支持
- 命令行界面(CLI)
- 基于事件发射器的流处理
- 更细致的配置
许可证
麻省理工学院(MIT)
做出贡献
欢迎贡献!这是一个参考实现,可以扩展以下功能:
- 额外的链接检查选项
- 更好的错误处理
- 缓存层
- 速率限制
- 认证支持
- Webhook通知
致谢/鸣谢
受到……的启发 断链检查器 由史蒂文·瓦尚(Steven Vachon)所著/所制/等(具体根据上下文确定,此处为泛指创作或相关贡献)。
