Skip to main content
Glama

Website Builder MCP Server

A Model Context Protocol (MCP) server for automated website generation with Excel data integration.

πŸš€ Features

  • βœ… Multiple Website Templates - Portfolio, blog, catalog, directory

  • βœ… Excel Data Integration - Build websites directly from Excel files

  • βœ… Component Generation - Navbar, hero, cards, forms with multiple styles

  • βœ… Responsive Design - Modern CSS framework with mobile support

  • βœ… MCP Protocol - Full Model Context Protocol server implementation

  • βœ… Automated Pages - Generate individual pages from Excel rows

Related MCP server: MCP-Maker

πŸ“Š Excel Integration

Transform Excel spreadsheets into complete websites:

Product Catalog πŸ“¦

  • Excel Format: Product Name, Description, Price, Category, Image

  • Generates: Product grid, individual product pages, category filtering

  • Perfect for: E-commerce sites, inventory displays

Staff Directory πŸ‘₯

  • Excel Format: Name, Title, Department, Email, Phone, Bio

  • Generates: Team overview, individual profiles, department pages

  • Perfect for: Company websites, organization directories

Portfolio Sites πŸ’Ό

  • Excel Format: Project Name, Description, Technologies, Link, Status

  • Generates: Project showcase, technology filtering, project details

  • Perfect for: Developer portfolios, agency showcases

Custom Data Sites πŸ“‹

  • Excel Format: Any structured data

  • Generates: Data tables, searchable listings, custom layouts

  • Perfect for: Reports, listings, catalogs

πŸ› οΈ Installation

# Clone the repository
git clone https://github.com/pmkhairnarr/website-builder-mcp.git
cd website-builder-mcp

# Install dependencies
npm install

# Start the MCP server
npm start

πŸ“ Usage

Basic Website Creation

// Create website from template
{
  "name": "create_website",
  "arguments": {
    "name": "my-portfolio",
    "template": "portfolio", 
    "title": "My Portfolio",
    "description": "Showcasing my work"
  }
}

Excel-Powered Websites

// Build from Excel file
{
  "name": "build_from_excel",
  "arguments": {
    "excelFile": "./examples/sample-products.xlsx",
    "template": "catalog",
    "siteName": "product-catalog",
    "sheetName": "Products"
  }
}

πŸ“‚ Project Structure

website-builder-mcp/
β”œβ”€β”€ server.js              # Main MCP server
β”œβ”€β”€ package.json           # Dependencies & scripts  
β”œβ”€β”€ templates/             # HTML/CSS templates
β”‚   β”œβ”€β”€ base.html         # Base page template
β”‚   └── styles.css        # Responsive CSS framework
β”œβ”€β”€ examples/              # Sample Excel files
β”‚   β”œβ”€β”€ sample-products.xlsx
β”‚   β”œβ”€β”€ sample-directory.xlsx
β”‚   └── sample-portfolio.xlsx
β”œβ”€β”€ websites/              # Generated websites
└── tests/                 # Test files

πŸ”§ Available Tools

Core Tools

  • create_website - Create from templates

  • add_page - Add pages to existing sites

  • generate_component - Create HTML components

  • list_websites - List all created sites

Excel Tools

  • build_from_excel - Generate complete sites from Excel data

πŸ“‹ Excel File Format

Product Catalog Example

Product Name

Description

Price

Category

Image

In Stock

Wireless Headphones

High-quality wireless...

$199.99

Electronics

image.jpg

Yes

Staff Directory Example

Name

Title

Department

Email

Phone

Bio

John Smith

Software Engineer

Engineering

john@company.com

555-0101

Experienced developer...

Portfolio Example

Project Name

Description

Technologies

Link

Status

E-commerce Platform

Full-stack solution...

React, Node.js

github.com/...

Completed

πŸ§ͺ Testing

# Test Excel integration
npm run test:excel

# Test MCP server
npm test

# Run direct functionality test  
node direct-test.js

🌐 Generated Websites

Websites are created in the websites/ directory with:

  • Responsive HTML pages

  • Modern CSS styling

  • Site configuration (site.json)

  • Navigation between pages

  • Mobile-friendly design

πŸ”— MCP Integration

Use with MCP-compatible clients:

  • VS Code with MCP extension

  • Claude Desktop

  • Custom MCP clients

πŸ“– API Documentation

MCP Server Configuration

{
  "mcpServers": {
    "website-builder": {
      "command": "node",
      "args": ["server.js"],
      "cwd": "./website-builder-mcp"
    }
  }
}

🀝 Contributing

  1. Fork the repository

  2. Create feature branch (git checkout -b feature/amazing-feature)

  3. Commit changes (git commit -m 'Add amazing feature')

  4. Push to branch (git push origin feature/amazing-feature)

  5. Open Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

🎯 Use Cases

  • Business Websites - Generate company sites from employee data

  • Product Showcases - Create catalogs from inventory spreadsheets

  • Portfolio Sites - Build project showcases from work data

  • Directory Sites - Create searchable listings from contact data

  • Report Sites - Transform data reports into web presentations

πŸš€ Advanced Features

  • Automatic slug generation for SEO-friendly URLs

  • Responsive grid layouts for all device sizes

  • Smart column detection for Excel processing

  • Template customization for brand consistency

  • Batch processing for large datasets

  • Error handling with detailed feedback


Built with ❀️ for the AI Development Community

Available Tools

5 tools
add_pageC

Add a new page to existing website

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNameYesWebsite name
pageNameYesPage name
titleYesPage title
contentYesPage content (HTML)
layoutNodefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is an 'Add' operation (implying creation/mutation), but doesn't disclose any behavioral traits like authentication requirements, rate limits, whether the operation is idempotent, what happens on duplicate page names, or what the response looks like. The description is minimal and lacks crucial operational context.

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?

The description is extremely concise at just 7 words, front-loading the core purpose immediately. Every word earns its place - 'Add' (action), 'new page' (what), 'to existing website' (context). There's zero waste or redundancy in this minimal description.

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

Completeness2/5

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

For a mutation tool with 5 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what happens after adding the page, what format the content should be in, how to verify the page was added successfully, or any error conditions. The agent would need to guess about many operational aspects of this 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 80% (4 of 5 parameters have descriptions), so the baseline is 3. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain relationships between parameters (e.g., how pageName relates to title), doesn't clarify the 'layout' parameter's purpose or options, and doesn't provide examples of valid content formats.

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?

The description clearly states the action ('Add a new page') and the resource ('to existing website'), making the purpose immediately understandable. It distinguishes from siblings like 'create_website' (which creates entire sites) and 'list_websites' (which only lists), though it doesn't explicitly differentiate from 'generate_component' or 'build_from_excel'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'generate_component' or 'build_from_excel'. It mentions 'existing website' which implies a prerequisite (the website must already exist), but doesn't specify how to check that or what happens if it doesn't exist. No explicit when-not-to-use scenarios are provided.

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

build_from_excelC

Build website from Excel data file

ParametersJSON Schema
NameRequiredDescriptionDefault
excelFileYesPath to Excel file
sheetNameNoSheet name (optional)
templateNocatalog
siteNameYesWebsite name
titleColumnNoColumn for titles (optional)
outputPathNoOutput directory (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool builds a website, implying a creation/mutation operation, but doesn't specify what 'build' entails (e.g., generates static files, deploys to a server, requires specific permissions, or has side effects). No information about error handling, rate limits, or output format is included, leaving significant gaps.

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?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place by conveying essential information without redundancy.

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

Completeness2/5

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

Given the tool's complexity (6 parameters, mutation operation) and lack of annotations and output schema, the description is insufficient. It doesn't explain what the tool returns, how the website is built, error conditions, or dependencies. For a tool that likely generates significant output, more context is needed to guide effective use.

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 high (83%), so the baseline is 3. The description doesn't add meaningful parameter semantics beyond what the schema provides (e.g., it doesn't explain how Excel data maps to website content, what 'template' choices imply, or format expectations). It relies entirely on the schema for parameter details.

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?

The description clearly states the action ('Build website') and the resource ('from Excel data file'), making the purpose immediately understandable. It distinguishes this tool from siblings like 'add_page' or 'list_websites' by specifying it creates a website from Excel data. However, it doesn't explicitly differentiate from 'create_website' which might be a more general version.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'create_website' or 'generate_component'. It doesn't mention prerequisites (e.g., needing an Excel file), exclusions, or comparative use cases. The agent must infer usage from the tool name and parameters alone.

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

create_websiteC

Create a new website from template

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesWebsite name
templateNobasic
titleYesWebsite title
descriptionNoWebsite description
outputPathNoOutput directory

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates a new website, implying a write operation, but fails to mention critical details like required permissions, whether the creation is reversible, potential side effects (e.g., overwriting existing files), or error handling. This leaves significant gaps for a mutation tool.

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?

The description is a single, efficient sentence with no wasted words, clearly front-loading the core action. It is appropriately sized for the tool's complexity.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is inadequate. It doesn't cover behavioral aspects like permissions, side effects, or response format, and while schema coverage is high, the description doesn't compensate for the lack of structured safety or output information.

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?

The schema description coverage is 80%, so the schema already documents most parameters well. The description adds minimal value by implying the use of a template, but doesn't explain parameter interactions (e.g., how 'name' and 'title' differ) or provide context beyond what the schema offers. Baseline 3 is appropriate given high schema coverage.

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?

The description clearly states the action ('create') and resource ('website') with the specific method 'from template', which distinguishes it from siblings like 'add_page' or 'build_from_excel'. However, it doesn't explicitly differentiate from 'generate_component' or 'list_websites' in terms of scope or purpose.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'add_page' or 'build_from_excel', nor does it mention prerequisites such as needing a template or output directory. It lacks explicit when-to-use or when-not-to-use instructions.

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

generate_componentC

Generate HTML component (navbar, footer, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
propsNoComponent properties
styleNomodern

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the tool 'generates' components, implying a creation/mutation operation, but doesn't disclose behavioral traits such as whether it modifies existing data, requires specific permissions, handles errors, or produces output format. This is a significant gap for a tool with no annotation coverage.

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?

The description is extremely conciseβ€”a single, efficient sentence that front-loads the core purpose without unnecessary details. Every word earns its place, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the complexity (3 parameters with nested objects, no output schema, and no annotations), the description is incomplete. It lacks details on return values, error handling, and behavioral context, which are crucial for a generation tool. The description does not compensate for the missing structured data, leaving gaps in understanding how to use the tool effectively.

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 33% (only 'props' has a description), so the description must compensate. It mentions 'navbar, footer, etc.', which aligns with the 'type' enum, adding context beyond the schema. However, it doesn't explain 'props' or 'style' parameters, leaving them partially undocumented. Baseline is adjusted due to low coverage, but the description adds some value.

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?

The description clearly states the verb ('generate') and resource ('HTML component'), specifying example types like navbar and footer. It distinguishes from siblings by focusing on component generation rather than website/page creation or listing, though it doesn't explicitly differentiate from 'add_page' which might also involve components.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'add_page' or 'create_website'. The description implies usage for generating specific HTML components, but lacks context on prerequisites, dependencies, or exclusions, leaving the agent to infer based on tool names alone.

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

list_websitesB

List all created websites

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('List all created websites') but doesn't mention any behavioral traits such as pagination, rate limits, sorting, or what format the list returns. This leaves significant gaps for an agent to understand how to use it effectively.

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?

The description is a single, efficient sentence that directly states the tool's function with no unnecessary words. It's front-loaded and perfectly sized for a simple listing tool.

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

Completeness2/5

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

Given the tool's simplicity (0 parameters, no output schema), the description is minimal but adequate for basic understanding. However, with no annotations and no output schema, it lacks details on behavioral aspects like return format or limitations, which could be important for an agent to use it correctly in context with sibling tools.

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

Parameters4/5

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

The tool has 0 parameters, and the schema description coverage is 100%, so there's no need for parameter details in the description. The baseline for this scenario is 4, as the description appropriately focuses on the tool's purpose without redundant parameter information.

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?

The description clearly states the verb ('List') and resource ('all created websites'), making the purpose immediately understandable. It doesn't differentiate from sibling tools like 'create_website' or 'add_page', but it's not misleading or tautological.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'build_from_excel' or 'generate_component'. It simply states what the tool does without context about appropriate scenarios or exclusions.

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. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.0
    • First observedadd_page
    • First observedbuild_from_excel
    • First observedcreate_website
    • First observedgenerate_component
    • First observedlist_websites

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes: create_website, add_page, and generate_component target different aspects of website creation and modification, while build_from_excel and list_websites serve separate data import and listing functions. However, add_page and generate_component could be slightly ambiguous in scope, as both involve adding elements to a website, though their descriptions clarify one is for pages and the other for components.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern throughout, such as create_website, add_page, and list_websites, which enhances readability and predictability. There is a minor deviation with build_from_excel, which uses a prepositional phrase instead of a simple noun, but this does not significantly disrupt the overall consistency.

Tool Count5/5

With 5 tools, the count is well-scoped for a website builder server, covering core operations like creation, modification, listing, and data import. Each tool appears to earn its place without redundancy, making the set manageable and focused on essential website-building tasks.

Completeness3/5

The tool surface covers key creation and listing functions but has notable gaps in lifecycle management. For example, there are tools to create and add pages, but no update or delete operations for websites or pages, which could lead to dead ends for agents needing to modify or remove existing content. The domain of website building is partially addressed, but missing CRUD operations limit completeness.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pmkhairnarr/website-builder-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server