Skip to main content
Glama

@mcpx-digital/site-health

MCP server for polite, permission-based site health checks.

Check HTTP status codes, find broken same-origin links, review SEO basics, and inspect common security headers — from Cursor, Claude Desktop, or any MCP client.

Permission required. Only use this server on sites you own or have explicit permission to test. All tools are defensive / informational only. This package does not include exploit payloads, attack procedures, SQLi/XSS scanners, or other offensive tooling.

Install (MCPX / npx)

npx -y @mcpx-digital/site-health

Publish note: The package is prepared for npm as @mcpx-digital/site-health. If it is not on the registry yet, publish from this repo (npm publish --access public) after logging into an account with access to the @mcpx-digital scope. Until then you can run from a local clone or GitHub.

Fallback package name (if the @mcpx-digital scope is unavailable): @theoryofshadows/site-health-mcp.

Related MCP server: webcheck-mcp

Cursor mcp.json example

Add to your Cursor MCP config (e.g. ~/.cursor/mcp.json or project .cursor/mcp.json):

{
  "mcpServers": {
    "site-health": {
      "command": "npx",
      "args": ["-y", "@mcpx-digital/site-health"]
    }
  }
}

Local clone (no npm publish required):

{
  "mcpServers": {
    "site-health": {
      "command": "node",
      "args": ["/absolute/path/to/site-health-mcp/index.js"]
    }
  }
}

Tools

Tool

What it does

http_status

Check status codes for a list of URLs (max 25), with polite delay

broken_links

Same-origin crawl from a start URL, max depth 2, polite delay; report 4xx/5xx

seo_basics

Title, meta description, canonical present? + simple length / H1 hints

security_headers

Checklist of CSP, HSTS, X-Frame-Options, etc. — presence/absence only

Hard limits (built in)

  • HTTP/HTTPS only

  • Max depth 2 for crawls; max 40 pages

  • Polite default delay (~400ms) between requests

  • Custom User-Agent identifying this tool

  • No paid APIs — plain Node.js fetch + @modelcontextprotocol/sdk

Example prompts

Development

git clone https://github.com/TheoryofShadows/site-health-mcp.git
cd site-health-mcp
npm install
npm test
node index.js   # stdio MCP server

Sell / list on MCPX

Suggested listing price: $5–$9.

  1. Ensure the package is published to npm (@mcpx-digital/site-health).

  2. List on MCPX with install command: npx -y @mcpx-digital/site-health

  3. Emphasize: permission-based, defensive only, zero paid APIs, MIT.

License

MIT © TheoryofShadows

Available Tools

4 tools
http_statusA

Check HTTP status codes for a list of URLs (max 25). Polite delay between requests. Only use on sites you own or have explicit permission to test. Defensive/informational checks only — no exploit or attack tooling.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesHTTP/HTTPS URLs to check (max 25).
delayMsNoDelay between requests in ms (default 400, max 5000).
timeoutMsNoPer-request timeout in ms (default 12000).

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose behavioral traits: a 25-URL cap, a deliberate rate-limiting behavior ('polite delay between requests'), and a legal/ethical authorization requirement. It is a read-only informational check, so the safety profile is inherently clear, but it omits any statement of what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action and scope. Every sentence carries weight (limit, rate behavior, authorization), with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward three-parameter read tool with full schema coverage, this covers purpose, limits, rate behavior, and authorization. The main remaining gap is that, with no output schema, the description never states the shape of the result (e.g., per-URL status), leaving the return format to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so delayMs and timeoutMs are already fully documented in the schema. The description only reinforces the max-25 limit and adds no syntax, format, or default detail beyond the schema, making the baseline of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Check') and resource ('HTTP status codes') with scope ('a list of URLs, max 25'). It is clearly distinguishable from siblings like seo_basics or security_headers by what it inspects, though it never names those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a real precondition ('Only use on sites you own or have explicit permission to test') and a scope restriction ('defensive/informational checks only'), which rules out misuse. However, it gives no guidance on when to choose this over the sibling tools broken_links, seo_basics, or security_headers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

security_headersB

Checklist of common security headers present/absent (CSP, HSTS, X-Frame-Options, etc.). DEFENSIVE/INFORMATIONAL ONLY — does not probe, exploit, or attack. Only use on sites you own or have explicit permission to test. Defensive/informational checks only — no exploit or attack tooling.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL whose response headers to inspect.
timeoutMsNoRequest timeout in ms (default 12000).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses that the tool is defensive/informational and does not probe, exploit, or attack, and the timeoutMs parameter implies a live network request. However it does not say whether redirects are followed, whether it requires any auth, or what the request costs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The header scope is front-loaded well, but the safety statement is duplicated almost verbatim ('DEFENSIVE/INFORMATIONAL ONLY — does not probe, exploit, or attack' then 'Defensive/informational checks only — no exploit or attack tooling'). One of the two sentences could be cut without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only inspection tool with full schema coverage and no output schema, the description adequately conveys what is checked and the safety boundary. The missing piece is what the response looks like (per-header pass/fail list), which is only loosely implied by 'checklist'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (url and timeoutMs) are already documented with their meaning and defaults in the schema. The description adds no format, validation, or URL-normalization details beyond that. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: checking presence/absence of common security headers, with concrete examples (CSP, HSTS, X-Frame-Options). An agent can distinguish this from http_status, broken_links, and seo_basics by the resource inspected, though the description never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a constraint ('only use on sites you own or have explicit permission to test') rather than routing guidance. There is no statement of when to prefer this over http_status or broken_links, so the user must infer the use case from the purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seo_basicsA

Fetch an HTML page and report title, meta description, canonical link, and basic length/H1 checks. Only use on sites you own or have explicit permission to test. Defensive/informational checks only — no exploit or attack tooling.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesHTML page URL to inspect.
timeoutMsNoRequest timeout in ms (default 12000).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the network-fetch behavior and the ownership/permission precondition, which is genuinely useful. But it omits operational traits such as redirect handling, robots.txt/rate-limit behavior, and what happens on timeout or non-HTML responses.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The functional description is front-loaded and the safety constraint follows immediately after; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must convey the return shape, and it does by naming the four reported artifacts. It stops short of covering failure modes or how the length/H1 checks are expressed, which leaves a minor gap for a network-fetching tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, so the schema already documents 'url' and 'timeoutMs' including its default. The description adds no syntax, format, or constraint detail beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Fetch an HTML page') followed by an explicit enumeration of what it reports (title, meta description, canonical link, length/H1 checks). That output list cleanly separates it from siblings like security_headers and http_status without needing to consult either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an authorization constraint ('Only use on sites you own or have explicit permission to test') and a scope limit ('Defensive/informational checks only'), which is real usage guidance. However, it never says when to prefer this over the sibling tools (http_status, broken_links, security_headers), so alternative selection is left to inference.

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. 4 tool updatesv0.1.0
    • First observedbroken_links
    • First observedhttp_status
    • First observedsecurity_headers
    • First observedseo_basics

TDQS

A3.9/5.0

Scored across 4 tools

Disambiguation4/5

http_status and broken_links both report HTTP status codes, but one targets a provided list while the other crawls same-origin; descriptions clarify the boundary. seo_basics and security_headers are clearly distinct from each other and the other tools.

Naming Consistency5/5

All tools use consistent snake_case noun phrases (http_status, broken_links, seo_basics, security_headers) with no mixing of conventions. The pattern is predictable and readable.

Tool Count5/5

Four focused tools exactly match the site-health domain, each covering a distinct diagnostic area. No tool feels redundant or out of place for the stated purpose.

Completeness4/5

The set covers status codes, broken links, SEO basics, and security headers, which are core site health checks. However, it lacks common diagnostics like redirect chains, SSL/TLS certificate validity, performance, or accessibility—minor gaps for a comprehensive suite.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers