WebForge MCP Server

WebForge MCP Server

Enables the creation and management of local business websites through MCP-compatible IDEs by providing access to curated design styles and color palettes. It features an AI-powered recommendation system and a compatibility matrix to optimize website design for various business types.

Category
访问服务器

README

WebForge MCP Server

npm version License: MIT

Model Context Protocol (MCP) server for WebForge - Create and manage websites for local businesses through any MCP-compatible IDE.

Features

  • 🎨 100 Design Styles - Access to professionally crafted design styles
  • 🎭 40 Color Palettes - Curated color schemes for different business types
  • 🤖 Smart Recommendations - AI-powered style+palette combinations based on business type
  • 📊 Project Management - Create and manage website projects
  • 🔄 Compatibility Matrix - Intelligent scoring system for design combinations
  • 🔧 MCP Protocol - Works with Claude Code, Cursor, Google Antigravity, and other MCP clients

Compatible IDEs

Claude Code

npm install -g @joytorm/webforge-mcp

Add to your Claude configuration:

{
  "mcpServers": {
    "webforge": {
      "command": "webforge-mcp",
      "args": []
    }
  }
}

Cursor

  1. Install the package: npm install -g @joytorm/webforge-mcp
  2. Add to Cursor's MCP settings:
    {
      "webforge": {
        "command": "webforge-mcp"
      }
    }
    

Google Antigravity

  1. Install: npm install -g @joytorm/webforge-mcp
  2. Configure in Antigravity's MCP servers section:
    {
      "name": "webforge",
      "command": "webforge-mcp",
      "transport": "stdio"
    }
    

Prerequisites

1. Supabase Setup

You need to create the required database tables in your Supabase instance. Execute this SQL in your Supabase SQL Editor:

-- WebForge MCP Database Setup
-- Execute this SQL in the Supabase SQL Editor

-- 1. Create design_styles table
CREATE TABLE IF NOT EXISTS design_styles (
    id TEXT PRIMARY KEY,
    name TEXT NOT NULL,
    industry TEXT NOT NULL,
    style_dna JSONB NOT NULL,
    dos TEXT[] NOT NULL DEFAULT '{}',
    donts TEXT[] NOT NULL DEFAULT '{}',
    tokens TEXT NOT NULL,
    raw_length INTEGER NOT NULL DEFAULT 0,
    businesses TEXT[] NOT NULL DEFAULT '{}',
    category TEXT NOT NULL,
    category_label TEXT NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT TIMEZONE('utc'::TEXT, NOW()) NOT NULL,
    updated_at TIMESTAMP WITH TIME ZONE DEFAULT TIMEZONE('utc'::TEXT, NOW()) NOT NULL
);

-- 2. Create design_palettes table  
CREATE TABLE IF NOT EXISTS design_palettes (
    id TEXT PRIMARY KEY,
    name TEXT NOT NULL,
    mood TEXT[] NOT NULL DEFAULT '{}',
    industries TEXT[] NOT NULL DEFAULT '{}',
    category TEXT NOT NULL,
    primary_light TEXT NOT NULL,
    primary_dark TEXT NOT NULL,
    accent_light TEXT NOT NULL,
    heading_font TEXT NOT NULL,
    body_font TEXT NOT NULL,
    border_radius TEXT NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT TIMEZONE('utc'::TEXT, NOW()) NOT NULL,
    updated_at TIMESTAMP WITH TIME ZONE DEFAULT TIMEZONE('utc'::TEXT, NOW()) NOT NULL
);

-- 3. Create style_palette_compatibility table
CREATE TABLE IF NOT EXISTS style_palette_compatibility (
    style_id TEXT NOT NULL REFERENCES design_styles(id) ON DELETE CASCADE,
    palette_id TEXT NOT NULL REFERENCES design_palettes(id) ON DELETE CASCADE,
    score INTEGER NOT NULL CHECK (score >= 1 AND score <= 5),
    created_at TIMESTAMP WITH TIME ZONE DEFAULT TIMEZONE('utc'::TEXT, NOW()) NOT NULL,
    PRIMARY KEY (style_id, palette_id)
);

-- 4. Create indexes for better performance
CREATE INDEX IF NOT EXISTS idx_design_styles_category ON design_styles(category);
CREATE INDEX IF NOT EXISTS idx_design_styles_industry ON design_styles(industry);
CREATE INDEX IF NOT EXISTS idx_design_styles_businesses ON design_styles USING GIN(businesses);
CREATE INDEX IF NOT EXISTS idx_design_palettes_category ON design_palettes(category);
CREATE INDEX IF NOT EXISTS idx_design_palettes_mood ON design_palettes USING GIN(mood);
CREATE INDEX IF NOT EXISTS idx_design_palettes_industries ON design_palettes USING GIN(industries);
CREATE INDEX IF NOT EXISTS idx_compatibility_style_score ON style_palette_compatibility(style_id, score DESC);
CREATE INDEX IF NOT EXISTS idx_compatibility_palette_score ON style_palette_compatibility(palette_id, score DESC);
CREATE INDEX IF NOT EXISTS idx_compatibility_score ON style_palette_compatibility(score DESC);

-- 5. Enable Row Level Security
ALTER TABLE design_styles ENABLE ROW LEVEL SECURITY;
ALTER TABLE design_palettes ENABLE ROW LEVEL SECURITY;
ALTER TABLE style_palette_compatibility ENABLE ROW LEVEL SECURITY;

-- 6. Create RLS policies for read access
DROP POLICY IF EXISTS "Allow read access to design_styles" ON design_styles;
CREATE POLICY "Allow read access to design_styles" ON design_styles FOR SELECT USING (true);

DROP POLICY IF EXISTS "Allow read access to design_palettes" ON design_palettes;
CREATE POLICY "Allow read access to design_palettes" ON design_palettes FOR SELECT USING (true);

DROP POLICY IF EXISTS "Allow read access to style_palette_compatibility" ON style_palette_compatibility;
CREATE POLICY "Allow read access to style_palette_compatibility" ON style_palette_compatibility FOR SELECT USING (true);

-- 7. Create trigger function for updated_at
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
    NEW.updated_at = TIMEZONE('utc'::TEXT, NOW());
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- 8. Create triggers for automatic updated_at
DROP TRIGGER IF EXISTS update_design_styles_updated_at ON design_styles;
CREATE TRIGGER update_design_styles_updated_at
    BEFORE UPDATE ON design_styles
    FOR EACH ROW
    EXECUTE FUNCTION update_updated_at_column();

DROP TRIGGER IF EXISTS update_design_palettes_updated_at ON design_palettes;
CREATE TRIGGER update_design_palettes_updated_at
    BEFORE UPDATE ON design_palettes
    FOR EACH ROW
    EXECUTE FUNCTION update_updated_at_column();

2. Seed the Database

After creating the tables, run the seeding script to populate them with WebForge's design data:

npm run seed

Installation

Global Installation (Recommended)

npm install -g @joytorm/webforge-mcp

Local Development

git clone https://github.com/joytorm/webforge-mcp.git
cd webforge-mcp
npm install
npm run build
npm link

Available Tools

Design Discovery

  • webforge_list_styles - List all 100 available design styles
  • webforge_list_palettes - List all 40 available color palettes
  • webforge_recommend_design - Get top 5 style+palette recommendations for a business type

Design Details

  • webforge_get_style_details - Get complete style information including CSS tokens
  • webforge_get_palette_details - Get complete palette information including all colors

Project Management

  • webforge_create_project - Create a new website project
  • webforge_list_projects - List existing projects with filtering
  • webforge_get_project - Get detailed project information
  • webforge_update_project - Update project settings

Usage Examples

Get Design Recommendations

// Ask for recommendations for a restaurant
await webforge_recommend_design({ business_type: "restaurant" })

Create a New Project

// Create a project for a dental clinic
await webforge_create_project({
  name: "Smile Dental Clinic",
  business_type: "dental clinic", 
  description: "Modern dental practice website",
  style_id: "S15", // Optional: assign a style
  palette_id: "P08" // Optional: assign a palette
})

Get Style Details

// Get complete details for a specific style
await webforge_get_style_details({ style_id: "S01" })

Environment Variables

The MCP server connects to the WebForge Supabase instance automatically. No additional environment configuration is required.

  • Supabase URL: https://supabase.optihost.pro
  • Authentication: Handled automatically via service keys

Development

# Install dependencies
npm install

# Run in development mode
npm run dev

# Build for production  
npm run build

# Run tests
npm test

# Lint code
npm run lint

# Format code
npm run format

API Reference

Recommendation Engine

The recommendation system uses a compatibility matrix that scores style+palette combinations from 1-5 based on:

  • Industry alignment - How well the style fits the business type
  • Visual harmony - Color theory and design compatibility
  • Brand perception - Mood and professional appropriateness
  • User experience - Usability for the target audience

Style Categories

  • Minimalist - Clean, modern designs with lots of whitespace
  • Creative - Bold, artistic layouts with unique elements
  • Professional - Traditional business-focused designs
  • E-commerce - Product-focused layouts with strong CTAs
  • Local Business - Community-oriented designs with local appeal

Palette Moods

  • Professional - Conservative colors for business credibility
  • Friendly - Warm, welcoming colors for service businesses
  • Modern - Contemporary color schemes for tech/startups
  • Elegant - Sophisticated palettes for premium brands
  • Energetic - Vibrant colors for fitness/entertainment

Contributing

  1. Fork the repository
  2. Create your feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

License

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

Support


Built with ❤️ by the Joytorm team

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选