jd-church-website-audit
This server provides one MCP tool, audit_church_website, for auditing a single church homepage and returning Journey Digital's report unchanged.
Audit one church homepage (with or without
https://) for mobile fit, PageSpeed performance, SEO basics, and first-time-guest findability.Return scored results as
passed/totalwithout recomputing, plus checks, findings, sources, groups, citations, disclaimer, redirect/final URL, and diagnostic flags.Optionally set
include_cta: falseto omit the consultation note.Send the submitted address to journeydigital.ai and Google PageSpeed; no API key is required.
Return an error with no checks if the service is unreachable, rate-limited, or returns a malformed report.
Not crawl multiple pages, promise search rankings, or work without a website address.
Runs Google PageSpeed mobile performance checks as part of the church website audit.
Church Website Audit by Journey Digital
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 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.jsThen 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 |
| yes | The church homepage to check. |
| no |
|
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-auditPoint 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 |
| Zero-dependency Node stdio MCP server with one tool. |
| Stdio image: |
| Glama maintainer claim. The published schema has one field, |
| Cursor plugin manifest and MCP entry. |
| How an agent should present the report. |
| JSON contract for |
| Self-test against a mock server (no live calls). |
| 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 toolaudit_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
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | One church homepage, with or without https://. Not a list of pages. | |
| include_cta | No | false omits the consultation note (cta). Omit this argument to keep the service default, which includes cta. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cta | No | Consultation note. Absent when include_cta is false. |
| url | Yes | Address the service checked. |
| total | Yes | Scored checks in the service's denominator. |
| checks | Yes | |
| groups | Yes | |
| passed | Yes | Scored checks the service marked pass. |
| couldnt | Yes | Scored checks the service could not measure. |
| js_heavy | Yes | True when the homepage looks JavaScript-heavy. |
| citations | Yes | |
| final_url | Yes | Address after redirects. |
| truncated | Yes | True when the homepage fetch hit the service's byte cap. |
| disclaimer | Yes | Disclaimer text from the service. |
| speed_source | Yes | pagespeed when Google PageSpeed returned a score, otherwise fallback. |
TDQS
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.
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.
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.
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.
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.
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 tool update
v0.1.0- First observed
audit_church_website
TDQS
Scored across 1 tool
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.
The single tool follows a clear verb_noun pattern: audit_church_website. With only one tool, there is no inconsistency across the set.
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.
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
Related MCP Connectors
Scan any website or MCP server for agent readiness: 0-100 score, a fix per failing check. Free.
Free technical-SEO audit MCP: crawl a site, run checks, return an LLM-ready shareable report.
Free website score for speed, SEO, security and AI search readiness, with the fixes.
Free SEO check of any website, AI crawler access test, and the full Audit SEO Records.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceWebsite health checker MCP server - SEO audit, accessibility scan, broken link detection, performance analysis, and page comparison.41 npm3MIT
- AlicenseNot gradedqualityDmaintenanceOpen-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.1MIT
- AlicenseAqualityDmaintenanceAn 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.6MIT
- AlicenseAqualityBmaintenanceAn 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.14254 npm1MIT