Dev builds 3 MCP servers in a day, uses one to audit own sites
A developer built three MCP servers in a single day — wrapping a Postgres database, external web-audit APIs, and DevOps deployment APIs — then used the audit server on his own production sites, cutting mobile FCP from 3.3s to 1.7s and Performance score from 73 to 97.
Score breakdown
Building MCP servers around systems you already own — a database, an API, a deployment dashboard — and immediately dogfooding them is a fast path to both real utility and catching tool bugs that unit tests miss.
- 01`stayhub-mcp` wraps a Postgres DB, `web-audit-mcp` wraps external APIs, and `deploy-status-mcp` covers Cloudflare Pages, Vercel, and Netlify.
- 02All three servers use TypeScript + MCP SDK + Zod + dotenv, with end-to-end tests that spawn the real server over stdio.
- 03The `web-audit-mcp` server's three tools cover performance (Google PageSpeed/Lighthouse), SEO metadata (cheerio), and HTTP security headers.
A developer set out to go beyond "hello world" MCP examples by building three Model Context Protocol servers in a single day, deliberately choosing different architectural shapes to maximize learning. The first, `stayhub-mcp`, wraps the Postgres database of a booking app using Prisma and Neon, exposing five read-only tools: search listings, listing detail, booking stats, top cities by revenue, and availability for a date range. The second, `web-audit-mcp`, wraps external HTTP APIs with three tools — `audit_performance` (Google PageSpeed/Lighthouse), `audit_seo_meta` (title, description, Open Graph, and headings via cheerio), and `check_headers` (status and security headers). The third, `deploy-status-mcp`, provides read-only deployment status across Cloudflare Pages, Vercel, and Netlify. All three share the same stack: TypeScript, the MCP SDK, Zod for input validation, and dotenv for secrets, with end-to-end tests that spawn the real server over stdio and call every tool.
The `web-audit-mcp` server proved immediately valuable when pointed at the developer's own production sites.
The `web-audit-mcp` server proved immediately valuable when pointed at the developer's own production sites. On his static portfolio (hosted on Cloudflare Pages), the audit flagged an overly long title (71 chars) and meta description (181 chars), and identified a render-blocking Google Fonts stylesheet as the cause of a 3.3s First Contentful Paint and a mobile Performance score of 73. Switching to a non-blocking font load (preload + `media="print"` onload) brought FCP down to 1.7s and the Performance score up to 97. On his SaaS site StayHub (Next.js on Vercel), the audit found no Open Graph tags on the homepage, meaning social shares showed no preview card; he fixed this by adding Open Graph and Twitter Card metadata plus a branded image generated with `next/og`.
Dogfooding also uncovered a bug in the tool itself: the audit reported a heading as "Nghỉ dưỡngHoàn hảo" — two words concatenated — because the text extractor was ignoring tags rather than treating them as whitespace. The developer distills four lessons from the exercise: pick different shapes across servers, keep tools read-only when possible, write end-to-end tests that spawn the real server over stdio, and dogfood immediately. All three repos are published as open source under the MIT license.
Key facts
- 01`stayhub-mcp` wraps a Postgres DB, `web-audit-mcp` wraps external APIs, and `deploy-status-mcp` covers Cloudflare Pages, Vercel, and Netlify.
- 02All three servers use TypeScript + MCP SDK + Zod + dotenv, with end-to-end tests that spawn the real server over stdio.
- 03The `web-audit-mcp` server's three tools cover performance (Google PageSpeed/Lighthouse), SEO metadata (cheerio), and HTTP security headers.
- 04Fixing a render-blocking Google Fonts stylesheet dropped mobile FCP from 3.3s to 1.7s and raised the Performance score from 73 to 97.
- 05The audit found no Open Graph tags on the StayHub homepage; adding OG + Twitter Card metadata fixed missing social preview cards.
- 06Dogfooding revealed a bug: the heading text extractor was ignoring tags, causing adjacent words to be concatenated without whitespace.
- 07All three repos are open source under the MIT license on GitHub.
Topics
Summary and scoring are generated automatically from the original article. We always link back to the publisher and never republish images or paywalled content. Last processed Jun 7, 2026 · 12:45 UTC. How this works →