Jake Shore 96e52666c5 MCPEngine full sync — studio scaffold, factory v2, server updates, state.json — 2026-02-12
=== NEW ===
- studio/ — MCPEngine Studio scaffold (Next.js monorepo, build plan)
- docs/FACTORY-V2.md — Factory v2 architecture doc
- docs/CALENDLY_MCP_BUILD_SUMMARY.md — Calendly MCP build report

=== UPDATED SERVERS ===
- fieldedge: Added jobs-tools, UI build script, main entry update
- lightspeed: Updated main + server entry points
- squarespace: Added collection-browser + page-manager apps
- toast: Added main + server entry points

=== INFRA ===
- infra/command-center/state.json — Updated pipeline state
- infra/command-center/FACTORY-V2.md — Factory v2 operator playbook
2026-02-12 17:58:33 -05:00

376 lines
14 KiB
TypeScript

import { drizzle } from 'drizzle-orm/neon-http';
import { neon } from '@neondatabase/serverless';
import { marketplaceListings } from './schema';
// ── MCP Server Templates ───────────────────────────────────────────────────────
interface TemplateEntry {
name: string;
slug: string;
category: string;
description: string;
tags: string[];
toolCount: number;
}
const templates: TemplateEntry[] = [
// ─── CRM ──────────────────────────────────────────────────────────────────
{
name: 'Close CRM',
slug: 'close',
category: 'CRM',
description: 'Full Close CRM integration — leads, contacts, opportunities, activities, and pipeline management.',
tags: ['crm', 'sales', 'leads', 'pipeline'],
toolCount: 42,
},
{
name: 'Pipedrive',
slug: 'pipedrive',
category: 'CRM',
description: 'Pipedrive CRM tools for deals, persons, organizations, activities, and pipeline stages.',
tags: ['crm', 'sales', 'deals', 'pipeline'],
toolCount: 38,
},
{
name: 'Keap',
slug: 'keap',
category: 'CRM',
description: 'Keap (Infusionsoft) CRM with contacts, deals, appointments, tasks, and email automation.',
tags: ['crm', 'automation', 'contacts', 'email'],
toolCount: 35,
},
{
name: 'Housecall Pro',
slug: 'housecall-pro',
category: 'CRM',
description: 'Housecall Pro for home service businesses — jobs, estimates, invoices, scheduling, and customers.',
tags: ['crm', 'field-service', 'scheduling', 'invoicing'],
toolCount: 30,
},
// ─── eCommerce ─────────────────────────────────────────────────────────────
{
name: 'BigCommerce',
slug: 'bigcommerce',
category: 'eCommerce',
description: 'BigCommerce store management — products, orders, customers, categories, and inventory.',
tags: ['ecommerce', 'products', 'orders', 'inventory'],
toolCount: 45,
},
{
name: 'Squarespace',
slug: 'squarespace',
category: 'eCommerce',
description: 'Squarespace commerce and content tools — products, orders, pages, forms, and inventory.',
tags: ['ecommerce', 'cms', 'website', 'products'],
toolCount: 28,
},
{
name: 'Lightspeed',
slug: 'lightspeed',
category: 'eCommerce',
description: 'Lightspeed POS and eCommerce — products, sales, inventory, customers, and registers.',
tags: ['ecommerce', 'pos', 'retail', 'inventory'],
toolCount: 40,
},
{
name: 'Clover',
slug: 'clover',
category: 'eCommerce',
description: 'Clover POS integration — orders, inventory, merchants, employees, and payments.',
tags: ['pos', 'payments', 'retail', 'inventory'],
toolCount: 32,
},
// ─── HR ────────────────────────────────────────────────────────────────────
{
name: 'BambooHR',
slug: 'bamboohr',
category: 'HR',
description: 'BambooHR people management — employees, time-off, benefits, reports, and onboarding.',
tags: ['hr', 'employees', 'time-off', 'onboarding'],
toolCount: 36,
},
{
name: 'Gusto',
slug: 'gusto',
category: 'HR',
description: 'Gusto payroll and HR — employees, payroll, benefits, time-tracking, and compliance.',
tags: ['hr', 'payroll', 'benefits', 'compliance'],
toolCount: 33,
},
{
name: 'Rippling',
slug: 'rippling',
category: 'HR',
description: 'Rippling workforce platform — employees, payroll, devices, apps, and policies.',
tags: ['hr', 'payroll', 'it', 'workforce'],
toolCount: 38,
},
// ─── Finance ───────────────────────────────────────────────────────────────
{
name: 'FreshBooks',
slug: 'freshbooks',
category: 'Finance',
description: 'FreshBooks accounting — invoices, expenses, clients, time entries, and reports.',
tags: ['finance', 'invoicing', 'accounting', 'expenses'],
toolCount: 34,
},
{
name: 'Wave',
slug: 'wave',
category: 'Finance',
description: 'Wave accounting and invoicing — customers, invoices, transactions, and financial reports.',
tags: ['finance', 'accounting', 'invoicing', 'free'],
toolCount: 25,
},
{
name: 'Toast',
slug: 'toast',
category: 'Finance',
description: 'Toast restaurant POS — orders, menus, employees, reporting, and payment processing.',
tags: ['finance', 'pos', 'restaurant', 'orders'],
toolCount: 35,
},
// ─── Marketing ─────────────────────────────────────────────────────────────
{
name: 'Mailchimp',
slug: 'mailchimp',
category: 'Marketing',
description: 'Mailchimp email marketing — campaigns, audiences, templates, automations, and analytics.',
tags: ['marketing', 'email', 'campaigns', 'automation'],
toolCount: 40,
},
{
name: 'Brevo',
slug: 'brevo',
category: 'Marketing',
description: 'Brevo (SendinBlue) marketing — email campaigns, SMS, contacts, automations, and transactional.',
tags: ['marketing', 'email', 'sms', 'automation'],
toolCount: 36,
},
{
name: 'Constant Contact',
slug: 'constant-contact',
category: 'Marketing',
description: 'Constant Contact email marketing — campaigns, contacts, lists, events, and reporting.',
tags: ['marketing', 'email', 'contacts', 'events'],
toolCount: 30,
},
{
name: 'Meta Ads',
slug: 'meta-ads',
category: 'Marketing',
description: 'Meta (Facebook/Instagram) advertising — campaigns, ad sets, ads, audiences, and insights.',
tags: ['marketing', 'ads', 'facebook', 'instagram'],
toolCount: 38,
},
// ─── Support ───────────────────────────────────────────────────────────────
{
name: 'Zendesk',
slug: 'zendesk',
category: 'Support',
description: 'Zendesk customer support — tickets, users, organizations, macros, views, and satisfaction.',
tags: ['support', 'tickets', 'helpdesk', 'customer-service'],
toolCount: 50,
},
{
name: 'Freshdesk',
slug: 'freshdesk',
category: 'Support',
description: 'Freshdesk helpdesk — tickets, contacts, agents, groups, canned responses, and SLAs.',
tags: ['support', 'tickets', 'helpdesk', 'sla'],
toolCount: 42,
},
{
name: 'Help Scout',
slug: 'helpscout',
category: 'Support',
description: 'Help Scout customer communication — conversations, customers, mailboxes, tags, and workflows.',
tags: ['support', 'conversations', 'email', 'customer-service'],
toolCount: 32,
},
// ─── Project Management ───────────────────────────────────────────────────
{
name: 'Trello',
slug: 'trello',
category: 'ProjectMgmt',
description: 'Trello boards, lists, and cards — full project management with labels, checklists, and members.',
tags: ['project-management', 'kanban', 'boards', 'tasks'],
toolCount: 35,
},
{
name: 'ClickUp',
slug: 'clickup',
category: 'ProjectMgmt',
description: 'ClickUp workspaces — tasks, spaces, folders, goals, time tracking, and custom fields.',
tags: ['project-management', 'tasks', 'goals', 'time-tracking'],
toolCount: 48,
},
{
name: 'Wrike',
slug: 'wrike',
category: 'ProjectMgmt',
description: 'Wrike project management — tasks, folders, projects, timesheets, comments, and workflows.',
tags: ['project-management', 'tasks', 'workflows', 'collaboration'],
toolCount: 38,
},
{
name: 'Basecamp',
slug: 'basecamp',
category: 'ProjectMgmt',
description: 'Basecamp project organization — to-dos, message boards, schedules, docs, and campfires.',
tags: ['project-management', 'collaboration', 'to-dos', 'messaging'],
toolCount: 28,
},
// ─── Scheduling ────────────────────────────────────────────────────────────
{
name: 'Acuity Scheduling',
slug: 'acuity-scheduling',
category: 'Scheduling',
description: 'Acuity Scheduling — appointments, availability, calendars, clients, and intake forms.',
tags: ['scheduling', 'appointments', 'calendar', 'booking'],
toolCount: 22,
},
{
name: 'Calendly',
slug: 'calendly',
category: 'Scheduling',
description: 'Calendly scheduling automation — event types, invitees, availability, and webhook management.',
tags: ['scheduling', 'calendar', 'booking', 'automation'],
toolCount: 20,
},
// ─── Communication ────────────────────────────────────────────────────────
{
name: 'Twilio',
slug: 'twilio',
category: 'Communication',
description: 'Twilio communications — SMS, voice calls, phone numbers, messaging services, and call logs.',
tags: ['communication', 'sms', 'voice', 'messaging'],
toolCount: 35,
},
// ─── Field Service ────────────────────────────────────────────────────────
{
name: 'ServiceTitan',
slug: 'servicetitan',
category: 'FieldService',
description: 'ServiceTitan field service management — jobs, customers, technicians, invoices, and dispatch.',
tags: ['field-service', 'jobs', 'dispatch', 'technicians'],
toolCount: 45,
},
{
name: 'Jobber',
slug: 'jobber',
category: 'FieldService',
description: 'Jobber for service businesses — quotes, jobs, invoices, clients, scheduling, and routes.',
tags: ['field-service', 'scheduling', 'invoicing', 'quotes'],
toolCount: 32,
},
{
name: 'FieldEdge',
slug: 'fieldedge',
category: 'FieldService',
description: 'FieldEdge field service — dispatching, work orders, customers, invoicing, and equipment.',
tags: ['field-service', 'dispatch', 'work-orders', 'invoicing'],
toolCount: 30,
},
{
name: 'TouchBistro',
slug: 'touchbistro',
category: 'FieldService',
description: 'TouchBistro restaurant management — menus, orders, reservations, staff, and reporting.',
tags: ['restaurant', 'pos', 'menus', 'reservations'],
toolCount: 28,
},
// ─── Real Estate ──────────────────────────────────────────────────────────
{
name: 'Reonomy',
slug: 'reonomy',
category: 'RealEstate',
description: 'Reonomy commercial real estate data — properties, ownership, sales history, and market analysis.',
tags: ['real-estate', 'commercial', 'properties', 'data'],
toolCount: 20,
},
// ─── DevTools ─────────────────────────────────────────────────────────────
{
name: 'Google Search Console',
slug: 'google-console',
category: 'DevTools',
description: 'Google Search Console — search performance, URL inspection, sitemaps, and indexing.',
tags: ['seo', 'google', 'analytics', 'search'],
toolCount: 18,
},
// ─── Automation ───────────────────────────────────────────────────────────
{
name: 'n8n Apps',
slug: 'n8n-apps',
category: 'Automation',
description: 'n8n workflow automation — workflows, executions, credentials, and webhook triggers.',
tags: ['automation', 'workflows', 'integrations', 'webhooks'],
toolCount: 25,
},
{
name: 'CloseBot',
slug: 'closebot',
category: 'Automation',
description: 'CloseBot AI sales automation — chatbots, conversations, leads, and appointment setting.',
tags: ['automation', 'chatbot', 'sales', 'ai'],
toolCount: 22,
},
];
// ── Seed runner ────────────────────────────────────────────────────────────────
async function seed() {
if (!process.env.DATABASE_URL) {
throw new Error('DATABASE_URL environment variable is required');
}
const sql = neon(process.env.DATABASE_URL);
const db = drizzle(sql);
console.log('🌱 Seeding marketplace with 37 MCP server templates…');
const now = new Date();
const rows = templates.map((t) => ({
name: t.name,
slug: t.slug,
description: t.description,
category: t.category,
tags: t.tags,
toolCount: t.toolCount,
appCount: 0,
forkCount: 0,
isOfficial: true,
isFeatured: false,
priceCents: 0,
status: 'published' as const,
createdAt: now,
publishedAt: now,
}));
await db
.insert(marketplaceListings)
.values(rows)
.onConflictDoNothing({ target: marketplaceListings.slug });
console.log(`✅ Seeded ${rows.length} marketplace templates`);
process.exit(0);
}
seed().catch((err) => {
console.error('❌ Seed failed:', err);
process.exit(1);
});