io.github.tidybytetools/link-check-lite
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., "@io.github.tidybytetools/link-check-litecheck these links and tell me which are broken: https://example.com, https://example.com/old-page"
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.
link-check-lite
Free tool that checks a list of links. It tells you which ones work, which are broken, and where redirects end up. Need sitemaps, speed checks, sketchy-domain warnings or CSV reports? The paid version does that: link-check on Gumroad
MIT license. Python 3.10 or newer, on Windows, Mac and Linux. The checker itself uses only Python's built-in tools.
Install
pip install link-check-liteOr use pipx, which keeps it in its own space:
pipx install link-check-liteWant the newest code from GitHub instead?
pip install git+https://github.com/tidybytetools/link-check-liteRelated MCP server: MCP Web Tools
Use it
Put your links in a text file, one per line. Lines that start with # are skipped.
link-check-lite links.txt
link-check-lite links.txt -w 3 --timeout 20 # gentler and more patientExample run:
OK 200 https://example.com/
OK 200 https://httpbin.org/redirect/2 -> https://httpbin.org/get (2 redirects)
FAIL 404 https://example.com/old-page
FAIL --- https://no-such-site.example ([Errno -2] Name or service not known)
4 checked, 2 ok, 2 brokenExit code is 0 when every link works and 1 when any link is broken, so it works in a cron job or CI.
When you run it in a terminal it ends with one short line about the paid version. --quiet turns it off, and it never shows when output is piped.
Known limits
Some sites block bots. They may answer 403 or 429 even when the page opens fine in a browser.
No JavaScript. Redirects done with JavaScript are not followed.
Text file only. No CSV input, no sitemaps, and results print to the screen.
No robots.txt and no per-site rate limit. It checks 5 links at a time with a small pause. Don't point it at thousands of pages on one site.
Not a safety check. It does not tell you if a link is a scam.
Lite vs paid
lite (free) | ||
Status codes and broken links | yes | yes |
Redirect chain and final URL | yes | yes |
Text file input | yes | yes |
CSV input and sitemap URLs (with sitemap index) | no | yes |
Response time and slow-link flag | no | yes |
http vs https checks | no | yes |
Look-alike and sketchy domain warnings (local rules) | no | yes |
robots.txt and one-hit-per-second per site | no | yes |
CSV, JSON and Markdown reports | no | yes |
How it compares to other free tools
All of these are free. Pick what fits you.
link-check-lite | ||||
Checks a plain list of links | yes | yes | no, it crawls | no, it crawls |
Crawls a whole site | no | no | yes | yes |
Install | pip | binary / cargo | pip | binary / go |
Built-in MCP server for AI apps | yes | no | no | no |
Lots of options | no | yes | yes | yes |
If you need to crawl a big site or check links inside Markdown files, lychee and linkchecker are great.
Use it from Claude Desktop or Cursor (MCP)
There is a small free MCP server built in. It gives your AI app one tool, check_links. It needs uv.
uvx --from link-check-lite link-check-lite-mcpClaude Desktop (claude_desktop_config.json) or Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"link-check-lite": {
"command": "uvx",
"args": ["--from", "link-check-lite", "link-check-lite-mcp"]
}
}
}Tool: check_links(urls, timeout=10.0). Send up to 200 links. It returns one result per link.
Use it from Python
from link_check_lite import check_link
print(check_link("https://example.com"))
# {'url': 'https://example.com', 'status': 200, 'ok': True, 'final_url': 'https://example.com', 'redirects': [], 'error': None}For AI agents
Use when: you need to know if web links work and where their redirects end up.
Don't use when: you need to know if a link is safe, need a whole site crawled, or need speed or https checks. Use the paid version for those.
Input: a list of http(s) URLs (max 200 per MCP call), plus an optional
timeoutin seconds.Output: a list of
{url, status, ok, final_url, redirects, error}.statusis null when the link could not connect.okis true for 200-399.redirectslists each hop as"CODE url".CLI exit code is 0 when all links work and 1 when any link is broken or on error. See also
llms.txt.
Tests
pip install "mcp>=1.2,<2"
python3 -m unittest discover testsThe tests use a tiny local web server, so they don't need the internet.
License
MIT. See LICENSE.
Available Tools
1 toolcheck_linksA
Check web links and follow their redirects.
urls: up to 200 http(s) links.
timeout: seconds to wait for each link.
Returns one result per link: {url, status, ok, final_url, redirects, error}.
status is the HTTP code of the last hop (null if it could not connect).
ok is true for 200-399. redirects lists each hop as "CODE url".
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | ||
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it discloses the 200-link cap, that the timeout applies per link, that redirect hops are followed and listed, and that a failed connection yields status null. It omits HTTP method used, any maximum redirect depth, and whether authentication/cookies are sent or bodies downloaded.
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?
Front-loaded with the one-line purpose, then parameter notes, then return shape - tight and scannable with no filler. The return-value block partly restates the output schema, but the status/ok/redirects semantics justify its place.
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 a simple two-parameter tool with an output schema present, the definition covers purpose, capacity, timeout semantics, and result interpretation. Remaining gaps (request method, redirect limit, network egress behavior) are minor for correct invocation.
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 coverage is 0%, so the description must compensate, and it does define both parameters: urls as up to 200 http(s) links and timeout as seconds waited per link. That is enough meaning to invoke correctly, though it does not clarify whether timeout is per redirect hop or per whole chain.
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?
The description opens with a specific verb and resource: 'Check web links and follow their redirects.' It immediately tells an agent both the operation and the redirect-following behavior, which is the key distinguishing trait of this tool.
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 purpose and a capacity limit is stated ('up to 200 http(s) links'), but there is no explicit when-to-use framing, no exclusions (e.g., non-HTTP schemes, internal hosts), and no alternatives named - though no siblings exist to route against.
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
- First observed
check_links
TDQS
Scored across 1 tool
There is only one tool, so there is no possibility of confusing it with another. Its purpose—checking a batch of URLs and reporting status, redirects, and errors—is stated unambiguously.
The single tool name check_links follows a clear verb_noun snake_case convention, and its parameters (urls, timeout) are consistently lower snake_case. There is no competing convention to clash with.
A one-tool surface is thin even for a narrow link-checking domain; common adjacent operations (single-URL check, redirect resolution only, or batch job status) are not separable. The rubric's 'too few (1)' bracket applies, though the tightly scoped purpose softens the mismatch.
The tool returns per-link status, ok flag, final_url, redirect chain, and error, which covers the core lifecycle of a link check including failures and unreachable hosts. Minor gaps remain (e.g., HTTP method/header control, retry or concurrency options, handling links beyond the 200 cap), but agents can work around them.
Maintenance
Related MCP Connectors
Live web checks for AI agents: sitemaps, robots.txt, URL status, broken links, feeds, citations.
URL intelligence for AI agents and developers. 16 tools, 25 signal weights, 20 free checks.
MCP tools for AI agents: render URLs to image/PDF, check link health, convert HTML/CSV/JSON.
Email validation, link previews and article-to-Markdown extraction for AI agents
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables checking for broken links on web pages and entire websites through natural language commands. Provides detailed reports including HTTP status codes and supports options like excluding external links and respecting robots.txt.2MIT
- AlicenseAqualityDmaintenanceEnables AI agents to extract structured content from URLs, search the web via DuckDuckGo, monitor site availability, and convert HTML to markdown without requiring API keys.536 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to validate AI infrastructure claims, check endpoint availability, solve CAPTCHA challenges, convert web pages to Markdown, search the web, extract structured JSON, and fetch bot-protected HTML through native tool calls.MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to capture screenshots and PDFs, read web pages as Markdown, preview links, look up DNS/SSL/WHOIS and email records, verify addresses, generate QR codes, barcodes and social images, convert images, and translate text.1923 npmMIT