linkinator-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@linkinator-mcpCheck all the links on https://example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Linkinator MCP Server

A Model Context Protocol (MCP) server that provides link checking capabilities using linkinator. This allows AI assistants like Claude to scan webpages and local files for broken links.
Features
Comprehensive Link Checking: Scan websites and local files for broken links
Recursive Crawling: Follow links within the same domain
Multiple Content Types: Check links in HTML, CSS, and Markdown files
Fragment Validation: Verify anchor links and URL fragments
Flexible Configuration: Extensive options for timeouts, retries, SSL, and more
Detailed Reporting: Get status codes, broken links grouped by error type, and parent page information
Related MCP server: WebSurfer MCP
Quick Setup (Automatic)
The easiest way to get started is using the install-mcp tool, which automatically configures linkinator-mcp for Claude Desktop, Claude Code, Cursor, Cline, and other MCP clients:
npx install-mcp linkinator-mcp --client claudeThis handles all configuration automatically. Restart your Claude client after installation.
Manual Configuration
If you prefer to configure the server manually, you can edit your MCP client's configuration file directly.
Claude Code
macOS/Linux
Edit ~/.config/claude-code/config.json:
{
"mcpServers": {
"linkinator": {
"command": "npx",
"args": ["linkinator-mcp"]
}
}
}Windows
Edit %APPDATA%\claude-code\config.json:
{
"mcpServers": {
"linkinator": {
"command": "npx",
"args": ["linkinator-mcp"]
}
}
}Alternative: Global Installation
If you prefer to install the package globally first with npm install -g linkinator-mcp, you can simplify the configuration:
{
"mcpServers": {
"linkinator": {
"command": "linkinator-mcp"
}
}
}Claude Desktop
macOS/Linux
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"linkinator": {
"command": "npx",
"args": ["linkinator-mcp"]
}
}
}Windows
Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"linkinator": {
"command": "npx",
"args": ["linkinator-mcp"]
}
}
}Restart Your Client
After updating the configuration, restart your Claude client for the changes to take effect.
Usage Examples
Once configured, you can ask Claude to check links on any webpage or local file. Here are some example prompts:
Basic Link Checking
Check all the links on https://example.comRecursive Scanning
Scan https://example.com recursively and check all links on the same domainLocal File Checking
Check the links in /path/to/my/documentation/index.htmlAdvanced Options
Check https://example.com with the following options:
- Recurse through all pages
- Check CSS for URLs
- Validate anchor fragments
- Skip links to google.com and facebook.com
- Use a 10 second timeoutAvailable Options
The scan_page tool supports all of linkinator's CLI options:
Required
path (string): URL or local file path to scan
Connection Settings
concurrency (number): Number of simultaneous connections (default: 100)
port (number): Server port for local scanning (random port by default)
timeout (number): Request timeout in milliseconds (0 = no timeout)
Crawling Behavior
recurse (boolean): Follow links recursively on the same domain
serverRoot (string): Custom disk location where the server starts
directoryListing (boolean): Auto-serve directory index files
cleanUrls (boolean): Enable extensionless link resolution (e.g., /about → /about.html)
Content Parsing
markdown (boolean): Parse and scan markdown files
checkCss (boolean): Extract and validate URLs in CSS properties
checkFragments (boolean): Validate URL anchor identifiers
Filtering & Customization
linksToSkip (string[]): URL patterns to exclude (regex strings)
userAgent (string): Custom user agent header
Retry Logic
retry (boolean): Retry HTTP 429 responses with retry-after header
retryErrors (boolean): Retry 5xx errors
retryErrorsCount (number): Retry attempt limit
retryErrorsJitter (number): Random delay between retries in milliseconds
SSL & Security
allowInsecureCerts (boolean): Accept invalid SSL certificates
Output Format
The tool returns a formatted report showing:
Linkinator Scan Results for: https://example.com
Summary:
Status: ✓ PASSED / ✗ FAILED
Total Links: 150
OK: 145
Broken: 5
Skipped: 0
Broken Links:
Status 404:
- https://example.com/missing-page
Found on: https://example.com/index.html
- https://example.com/old-blog-post
Found on: https://example.com/blog.html
Status 500:
- https://api.example.com/endpoint
Found on: https://example.com/docs.htmlTroubleshooting
Server Not Appearing in Claude Code
Check that the path in
config.jsonis absolute, not relativeVerify the build directory exists:
ls /path/to/linkinator-mcp/build/index.jsCheck Claude Code logs for errors
Ensure Node.js is in your PATH
Permission Errors
If you get permission errors on macOS/Linux:
chmod +x /path/to/linkinator-mcp/build/index.jsPort Already in Use
If scanning local files and getting port errors, try specifying a port:
Check /path/to/files with port 9000Contributing
Contributions are welcome! Please see CONTRIBUTING.md for details on how to get started.
License
MIT
Related Projects
linkinator - The underlying link checking library
MCP Servers - Collection of MCP server implementations
Claude Code - AI coding assistant that uses MCP
Author
Justin Beckwith justin.beckwith@gmail.com
Acknowledgments
Built with the Model Context Protocol SDK.
Available Tools
1 toolscan_pageA
Scan links in a webpage or local file path using linkinator. Checks for broken links, validates anchors, and can crawl recursively. Supports progress notifications for long-running scans.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | URL or local file path to scan | |
| port | No | Server port for local scanning (random port by default) | |
| retry | No | Retry HTTP 429 responses with retry-after header | |
| recurse | No | Follow links recursively on the same domain | |
| timeout | No | Request timeout in milliseconds (0 = no timeout) | |
| checkCss | No | Extract and validate URLs in CSS properties | |
| markdown | No | Parse and scan markdown files | |
| cleanUrls | No | Enable extensionless link resolution (e.g., /about → /about.html) | |
| userAgent | No | Custom user agent header | |
| serverRoot | No | Custom disk location where the server starts | |
| concurrency | No | Number of simultaneous connections (default: 100) | |
| linksToSkip | No | URL patterns to exclude (regex strings) | |
| retryErrors | No | Retry 5xx errors | |
| checkFragments | No | Validate URL anchor identifiers | |
| directoryListing | No | Auto-serve directory index files | |
| retryErrorsCount | No | Retry attempt limit | |
| retryErrorsJitter | No | Random delay between retries in milliseconds | |
| allowInsecureCerts | No | Accept invalid SSL certificates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose two useful behavioral traits: recursive crawling is supported and progress notifications are emitted for long-running scans. It omits what a scan returns (a list of failures with status codes?), whether external network access occurs, and rough performance expectations for an 18-option tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the core purpose is front-loaded before the capability details. Slightly list-like, but every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter tool with full schema coverage and no output schema, the description covers the essential model: what is scanned, what is checked, and that long scans report progress. The main residual gap is the shape of the result, which an agent must discover empirically.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 18 parameters are already documented. The description nonetheless adds conceptual framing that maps to key flags — 'validates anchors' → checkFragments, 'crawl recursively' → recurse — helping an agent reason about which options to combine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Scan links in a webpage or local file path') and names the underlying engine (linkinator), plus concrete capabilities: broken-link detection, anchor validation, recursive crawling. No siblings exist, so differentiation isn't required, but the scope is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the capability list — you'd use it to check a page or file for broken links — and the note about progress notifications hints at long-running recursive scans. However, it never says when to prefer a shallow scan over recursion, when to enable markdown/CSS scanning, or what prerequisites a local path needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.3- First observed
scan_page
TDQS
Scored across 1 tool
With only one tool exposed, there is no possibility of misselection or overlap with another tool. Its purpose—scanning links in a page or local path—is unambiguous.
The single name scan_page follows a clear verb_noun snake_case pattern, which would remain predictable if more tools were added.
A single tool matches the narrow link-checking purpose and is non-trivial (recursive crawl, anchor validation, progress), but the surface is thin—no separate options for batch URLs, sitemap crawling, or result formatting.
Core scanning is covered, including recursion and anchor checks, but there are no companion operations such as scanning multiple targets in one call, site/sitemap-level entry points, or output filtering/report retrieval.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to control Chrome browsers through the Chrome DevTools Protocol, allowing for navigation, clicking, typing, and extracting page information.221 npm48MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables AI assistants to securely fetch and extract readable text content from web pages through a standardized interface.1MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables AI assistants to perform web automation tasks by connecting to remote Playwright/browserless instances, supporting navigation, screenshots, HTML extraction, and element interaction.104MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server that enables AI assistants to download files from URLs to the local filesystem.23MIT