Building a website with MCP Village
MCP Village hosts a real website that the owner edits by talking to you. The
owner is usually a busy, non-technical small-business person. Your job is to
do the work and report back plainly — never explain HTML, Liquid, or SEO
mechanics unless they ask.
The connector ships its own deeper guides and starter templates; pull them in
rather than guessing:
get_docs("layouts") — the layout paradigm (read before a multi-page site).
get_docs("reference") — every Liquid variable, tag, and filter available.
list_skeletons / get_skeleton(key) — ready-made starters; start from one.
list_skills / get_skill(name) — packaged procedures, including an
seo-baseline and per-industry build guides (restaurant, trades, clinic,
portfolio, nonprofit, and more). When the owner's business matches one, fetch
and follow it.
The golden path
get_site before changing anything. It holds the AUTHORITATIVE facts —
name, email, phone, address, logo, status. Never invent a business fact. In
pages, render them as {{ site.name }} / {{ site.email }} / {{ site.phone }}
/ {{ site.address }} so they stay correct everywhere; if a detail you need
isn't set, ask the owner rather than guessing.
Build the frame once. For anything beyond a single page, start from
get_skeleton("layout") and write it to /layout. The layout holds the
shared header, nav, footer, and a complete SEO <head>. Every page then
inherits it.
Write pages as BODY-ONLY content — just the inner <section>s, NEVER a
full <!doctype>/<html>/<head> document. The platform automatically wraps
your content in a complete, SEO-ready page. Writing a full document opts the
page out of the layout and the auto-SEO.
Pass title + description on every page (write_file) — they surface
as {{ page.title }} / {{ page.description }}. Unique and specific: this is
the highest-leverage SEO step.
Reuse with partials. Write a snippet to /partials/<name> and include it
with {% partial "/partials/<name>" %}. Partials and the layout only render
inside render: "liquid" content.
Record the business facts for SEO with set_seo — business_type
(Restaurant, Dentist, Plumber…), hours, area_served, geo_lat/geo_lng,
price_range, social. They power rich results and local ranking. Follow the
seo-baseline skill for the full checklist.
Don't build robots.txt, sitemap.xml, or llms.txt — they're generated
automatically. Writing them shadows the generated ones.
Other common jobs
- Images: pages are text. Add photos with
upload_file (a URL, or base64
data); reference them by the returned url. list_media shows what's already
uploaded.
- Repeating content (blog posts, products, articles):
create_post. Each
renders through a template and gets article/product structured data
automatically. Set each post's meta_title / meta_description.
- Leads: visitors submit forms;
list_submissions and list_contacts show
them. There's no create_submission — only visitors create those.
- Multiple sites:
list_sites shows the owner's sites; use_site switches
which one you're editing; create_site makes a new one (ask for the name, what
it's about, and a contact email first, confirm, THEN create — it's a real
public subdomain, and the system computes the address from the name).
Talking to the owner
Keep replies short, friendly, and non-technical. Confirm what you changed and
give the link to view it (write_file returns the page's url). Skip the markup
and the SEO jargon unless they ask for it.
1---2name: website-builder3description: Build, launch, or update a small-business website by talking to the MCP Village connector — pages, business hours, contact forms, leads, blog posts, and SEO, all in plain English. Use when a non-technical owner wants a real website created or kept current (e.g. "build me a site for my café", "change my phone number", "add a contact form", "show me my leads") and the MCP Village connector (mcpvillage.com/mcp) is connected.4---56# Building a website with MCP Village78MCP Village hosts a real website that the owner edits by talking to you. The9owner is usually a busy, **non-technical** small-business person. Your job is to10do the work and report back plainly — never explain HTML, Liquid, or SEO11mechanics unless they ask.1213The connector ships its own deeper guides and starter templates; **pull them in**14rather than guessing:15- `get_docs("layouts")` — the layout paradigm (read before a multi-page site).16- `get_docs("reference")` — every Liquid variable, tag, and filter available.17- `list_skeletons` / `get_skeleton(key)` — ready-made starters; start from one.18- `list_skills` / `get_skill(name)` — packaged procedures, including an19 `seo-baseline` and per-industry build guides (restaurant, trades, clinic,20 portfolio, nonprofit, and more). When the owner's business matches one, fetch21 and follow it.2223## The golden path24251. **`get_site` before changing anything.** It holds the AUTHORITATIVE facts —26 name, email, phone, address, logo, status. Never invent a business fact. In27 pages, render them as `{{ site.name }}` / `{{ site.email }}` / `{{ site.phone }}`28 / `{{ site.address }}` so they stay correct everywhere; if a detail you need29 isn't set, ask the owner rather than guessing.30312. **Build the frame once.** For anything beyond a single page, start from32 `get_skeleton("layout")` and write it to `/layout`. The layout holds the33 shared header, nav, footer, and a complete SEO `<head>`. Every page then34 inherits it.35363. **Write pages as BODY-ONLY content** — just the inner `<section>`s, NEVER a37 full `<!doctype>`/`<html>`/`<head>` document. The platform automatically wraps38 your content in a complete, SEO-ready page. Writing a full document opts the39 page out of the layout and the auto-SEO.40414. **Pass `title` + `description` on every page** (`write_file`) — they surface42 as `{{ page.title }}` / `{{ page.description }}`. Unique and specific: this is43 the highest-leverage SEO step.44455. **Reuse with partials.** Write a snippet to `/partials/<name>` and include it46 with `{% partial "/partials/<name>" %}`. Partials and the layout only render47 inside `render: "liquid"` content.48496. **Record the business facts for SEO** with `set_seo` — `business_type`50 (Restaurant, Dentist, Plumber…), `hours`, `area_served`, `geo_lat`/`geo_lng`,51 `price_range`, `social`. They power rich results and local ranking. Follow the52 `seo-baseline` skill for the full checklist.53547. **Don't build `robots.txt`, `sitemap.xml`, or `llms.txt`** — they're generated55 automatically. Writing them shadows the generated ones.5657## Other common jobs5859- **Images:** pages are text. Add photos with `upload_file` (a URL, or base6460 data); reference them by the returned `url`. `list_media` shows what's already61 uploaded.62- **Repeating content** (blog posts, products, articles): `create_post`. Each63 renders through a template and gets article/product structured data64 automatically. Set each post's `meta_title` / `meta_description`.65- **Leads:** visitors submit forms; `list_submissions` and `list_contacts` show66 them. There's no `create_submission` — only visitors create those.67- **Multiple sites:** `list_sites` shows the owner's sites; `use_site` switches68 which one you're editing; `create_site` makes a new one (ask for the name, what69 it's about, and a contact email first, confirm, THEN create — it's a real70 public subdomain, and the system computes the address from the name).7172## Talking to the owner7374Keep replies short, friendly, and non-technical. Confirm what you changed and75give the link to view it (`write_file` returns the page's `url`). Skip the markup76and the SEO jargon unless they ask for it.