Skip to main content
Glama
tnvolman

jd-church-website-audit

Church Website Audit by Journey Digital

Church Website Audit score on Glama Church Website Audit listing card on Glama CI

A free church website audit tool (an MCP server and Cursor plugin) that checks mobile, page speed, SEO basics, and whether a first-time visitor can find service times.

Real audit output for https://www.redeemer.com/: 11/21 checks passed

Real output of audit_church_website for a public church homepage, run 2026-10-21. Finding text is shortened in the image; the full JSON is in docs/example-audit-redeemer.json.

Install

One line, from a clean checkout (Node 18+, zero dependencies). It clones the repo and runs the local self-test:

git clone https://github.com/tnvolman/jd-church-website-audit && cd jd-church-website-audit && node scripts/prove.js

Then point your MCP client at server/audit-mcp.js (see Usage). In Cursor, the repo also loads as a plugin through .cursor-plugin/plugin.json.

Prefer not to install anything? Run the same church website checker in your browser at journeydigital.ai/audit.

Related MCP server: growth-mcp

What it checks

One MCP tool, audit_church_website, sends one church homepage to Journey Digital's audit and returns every check:

  • Mobile: viewport tag, pinch-to-zoom, text size.

  • Speed: Google PageSpeed mobile performance.

  • SEO basics: title, meta description, H1, https, canonical link, robots.txt, sitemap.

  • First-time guests: service times, street address, an I'm New / Plan a Visit path, map or directions.

  • Contact and giving: tap-to-call, contact info, giving one click away.

  • About and local identity: beliefs or about link, city in the title or main heading.

  • Heads-up notes (never counted as a fail): menu size and menu labels.

Report the result as passed/total exactly as the API returns passed and total. Do not hardcode /21 and do not recompute the counts. Each check comes with a plain-English finding and a cited source for each check. It covers church website SEO basics only and does not guarantee any search ranking. Things like first-screen placement and how easy the phone menu feels still need a human look.

Usage

MCP client config (Claude Desktop, Cursor mcp.json, and similar):

{
  "mcpServers": {
    "church-website-audit": {
      "command": "node",
      "args": ["/absolute/path/to/jd-church-website-audit/server/audit-mcp.js"]
    }
  }
}

Then ask your agent: "Audit https://example-church.org with audit_church_website."

Tool arguments:

Argument

Required

Meaning

url

yes

The church homepage to check.

include_cta

no

false leaves off the consultation note. Nothing else changes.

Set JOURNEY_DIGITAL_AUDIT_BASE_URL to use another origin (default https://journeydigital.ai). There is no API key. If the audit service is unreachable or returns a malformed report, the tool returns an error; it never invents results.

Docker

The image speaks MCP over stdio. It is node:22-alpine, installs nothing, and runs as the node user:

docker build -t jd-church-website-audit .
docker run -i --rm jd-church-website-audit

Point the MCP client at that command. JOURNEY_DIGITAL_AUDIT_BASE_URL still overrides the origin.

Privacy

The church website address you submit is sent to journeydigital.ai, which fetches that page, and to Google PageSpeed for the speed check. Plugin audits store anonymous counts only. See the privacy policy, terms and PRIVACY.md.

What is in this repo

Path

Purpose

server/audit-mcp.js

Zero-dependency Node stdio MCP server with one tool.

Dockerfile, .dockerignore

Stdio image: node:22-alpine, no npm install, runs as node.

glama.json

Glama maintainer claim. The published schema has one field, maintainers.

mcp.json, .cursor-plugin/plugin.json

Cursor plugin manifest and MCP entry.

skills/present-church-website-audit/SKILL.md

How an agent should present the report.

SPEC.md

JSON contract for POST /api/audit.

scripts/prove.js

Self-test against a mock server (no live calls).

docs/

The example audit image and its raw JSON.

About

Built and published by Michael McClanahan at Journey Digital, a small church website design studio in Wilson, NC. Questions: sales@journeydigital.ai. Not endorsed by Cursor or Grok Bot.

Contributing

Issues and pull requests are welcome. Keep the server zero-dependency, run node scripts/prove.js before opening a PR, and never hardcode or recompute scores: the tool passes the API's passed and total through unchanged. Notable changes go in CHANGELOG.md.

License

MIT. Copyright 2026 Michael McClanahan.

Available Tools

1 tool
audit_church_websiteAudit a church websiteA

Audits one church homepage for mobile fit, speed, SEO basics, and first-time-guest findability, and returns Journey Digital's report unchanged. Use it when the user gives one church website address. Do not use it to crawl a site, to promise a search ranking, or when no address was given. Sends that address to journeydigital.ai, which fetches the page, and the speed check to Google PageSpeed. No API key. Plugin audits store an anonymous count, so repeating the call records another count, and the church website itself is not modified. If the service is unreachable, rate-limited, or the report is malformed, the result is an error and includes no checks. Privacy: https://journeydigital.ai/privacy Terms: https://journeydigital.ai/terms

NameRequiredDescriptionDefault
urlYesOne church homepage, with or without https://. Not a list of pages.
include_ctaNofalse omits the consultation note (cta). Omit this argument to keep the service default, which includes cta.

Output Schema

NameRequiredDescription
ctaNoConsultation note. Absent when include_cta is false.
urlYesAddress the service checked.
totalYesScored checks in the service's denominator.
checksYes
groupsYes
passedYesScored checks the service marked pass.
couldntYesScored checks the service could not measure.
js_heavyYesTrue when the homepage looks JavaScript-heavy.
citationsYes
final_urlYesAddress after redirects.
truncatedYesTrue when the homepage fetch hit the service's byte cap.
disclaimerYesDisclaimer text from the service.
speed_sourceYespagespeed when Google PageSpeed returned a score, otherwise fallback.

TDQS

A4.6/5.0
Behavior5/5

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

Adds significant context beyond the annotations: data is sent to journeydigital.ai and Google PageSpeed, no API key is needed, an anonymous count is incremented on repeat calls (explaining the non-idempotent hint), the church site is not modified, and failures return an error with no checks. The privacy/terms links further disclose the data-handling surface.

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?

The core purpose and trigger are front-loaded in the first two sentences, followed by side effects and failure modes in a logical order. It is dense but nearly every sentence carries a distinct behavioral fact; the privacy/terms URLs are the only marginal additions.

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

Completeness5/5

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

Given a two-parameter tool with an output schema, the description covers triggers, exclusions, external dependencies, side effects, and failure behavior. An agent has everything needed to decide to call it and interpret a failure correctly.

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 coverage is 100%, so both parameters are already fully documented in the schema (including 'one church homepage, not a list of pages'). The description reinforces the single-page scope but adds no syntax or format details beyond what the schema provides, so the baseline 3 applies.

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?

States a specific verb and resource ('Audits one church homepage') and enumerates the dimensions checked (mobile fit, speed, SEO basics, guest findability) plus what is returned ('Journey Digital's report unchanged'). An agent can tell exactly what this tool produces without opening the schema.

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

Usage Guidelines5/5

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

Explicit positive trigger ('when the user gives one church website address') and explicit exclusions ('Do not use it to crawl a site, to promise a search ranking, or when no address was given'). With no siblings, the exclusions do the routing work that alternatives normally would.

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. 1 tool updatev0.1.0
    • First observedaudit_church_website

TDQS

A4.6/5.0

Scored across 1 tool

Disambiguation5/5

There is only one tool, and its purpose is explicitly narrow: audit one church homepage. There are no sibling tools with overlapping scope, so misselection is not a concern.

Naming Consistency5/5

The single tool follows a clear verb_noun pattern: audit_church_website. With only one tool, there is no inconsistency across the set.

Tool Count4/5

The server is deliberately scoped to a single audit operation, so one tool is reasonable rather than incomplete. It is slightly thin compared with multi-operation servers, but it matches the stated narrow purpose.

Completeness4/5

The tool covers the stated audit dimensions: mobile fit, speed, SEO basics, and first-time-guest findability. Minor gaps exist around batch or multi-page auditing, but the description explicitly excludes crawling, so the surface is coherent for its intended use.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Website health checker MCP server - SEO audit, accessibility scan, broken link detection, performance analysis, and page comparison.
    41 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Open-source MCP server that audits websites for AI search readiness, providing deterministic scoring (0-100) and prioritized fix lists for metrics like JSON-LD, llms.txt, heading hierarchy, and AI crawler access.
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that audits websites for accessibility (WCAG 2.1 AA/EAA), performance, SEO, design quality, and mobile responsiveness, providing actionable scores, grades, and prioritized fixes.
    6
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that audits websites for technical and on-page SEO, enabling users to ask why a page isn't ranking and receive specific, actionable answers.
    14
    254 npm
    1
    MIT