Jake Shore f3c4cd817b Add all MCP servers + factory infra to MCPEngine — 2026-02-06
=== NEW SERVERS ADDED (7) ===
- servers/closebot — 119 tools, 14 modules, 4,656 lines TS (Stage 7)
- servers/google-console — Google Search Console MCP (Stage 7)
- servers/meta-ads — Meta/Facebook Ads MCP (Stage 8)
- servers/twilio — Twilio communications MCP (Stage 8)
- servers/competitor-research — Competitive intel MCP (Stage 6)
- servers/n8n-apps — n8n workflow MCP apps (Stage 6)
- servers/reonomy — Commercial real estate MCP (Stage 1)

=== FACTORY INFRASTRUCTURE ADDED ===
- infra/factory-tools — mcp-jest, mcp-validator, mcp-add, MCP Inspector
  - 60 test configs, 702 auto-generated test cases
  - All 30 servers score 100/100 protocol compliance
- infra/command-center — Pipeline state, operator playbook, dashboard config
- infra/factory-reviews — Automated eval reports

=== DOCS ADDED ===
- docs/MCP-FACTORY.md — Factory overview
- docs/reports/ — 5 pipeline evaluation reports
- docs/research/ — Browser MCP research

=== RULES ESTABLISHED ===
- CONTRIBUTING.md — All MCP work MUST go in this repo
- README.md — Full inventory of 37 servers + infra docs
- .gitignore — Updated for Python venvs

TOTAL: 37 MCP servers + full factory pipeline in one repo.
This is now the single source of truth for all MCP work.
2026-02-06 06:32:29 -05:00

348 lines
9.8 KiB
CSS

/**
* GSC Theme Overrides — Google Search Console light theme
* Applies Google-style colors on top of base.css
*/
body {
background: #f8f9fa;
color: #202124;
font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}
/* ─── Accent Color Overrides ──────────────────────────── */
a { color: #1a73e8; }
.loading-spinner { border-top-color: #1a73e8; }
.page-header-gradient {
background: linear-gradient(135deg, #1a73e8, #4285f4);
box-shadow: 0 1px 4px rgba(26, 115, 232, 0.3);
}
/* ─── Card Elevations (Google Material) ──────────────── */
.metric-card,
.card,
.data-table-wrap,
.page-header {
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.08);
}
/* ─── GSC-Specific Status Colors ─────────────────────── */
.gsc-status-indexed { background: #e6f4ea; color: #137333; }
.gsc-status-warning { background: #fef7e0; color: #b06000; }
.gsc-status-error { background: #fce8e6; color: #c5221f; }
.gsc-severity-mild { background: #fef7e0; color: #b06000; }
.gsc-severity-moderate { background: #fce8e6; color: #d93f0b; }
.gsc-severity-critical { background: #fce8e6; color: #a50e0e; font-weight: 700; }
.gsc-severity-low { background: #e6f4ea; color: #137333; }
.gsc-severity-medium { background: #fef7e0; color: #b06000; }
.gsc-severity-high { background: #fce8e6; color: #c5221f; }
/* ─── Google Color Metric Cards ──────────────────────── */
.metric-google-blue { color: #1a73e8; }
.metric-google-green { color: #34a853; }
.metric-google-yellow { color: #fbbc04; }
.metric-google-red { color: #ea4335; }
/* ─── Position Badges ─────────────────────────────────── */
.position-badge {
display: inline-block;
padding: 2px 8px;
border-radius: 4px;
font-size: 13px;
font-weight: 600;
}
.position-badge.green { background: #e6f4ea; color: #137333; }
.position-badge.yellow { background: #fef7e0; color: #b06000; }
.position-badge.orange { background: #fce8e6; color: #c5221f; }
/* ─── Impact Bar ──────────────────────────────────────── */
.impact-bar {
height: 6px;
background: #e8eaed;
border-radius: 3px;
overflow: hidden;
}
.impact-bar-fill {
height: 100%;
background: linear-gradient(90deg, #34a853, #fbbc04, #ea4335);
transition: width 0.3s;
}
/* ─── Impression Share Bar ────────────────────────────── */
.impression-bar {
height: 6px;
background: #e8eaed;
border-radius: 3px;
overflow: hidden;
margin-top: 8px;
}
.impression-bar-fill {
height: 100%;
background: #1a73e8;
transition: width 0.3s;
}
/* ─── Traffic Light Indicators ────────────────────────── */
.traffic-light {
width: 16px;
height: 16px;
border-radius: 50%;
flex-shrink: 0;
}
.traffic-light.green { background: #34a853; box-shadow: 0 0 0 4px rgba(52, 168, 83, 0.1); }
.traffic-light.yellow { background: #fbbc04; box-shadow: 0 0 0 4px rgba(251, 188, 4, 0.1); }
.traffic-light.red { background: #ea4335; box-shadow: 0 0 0 4px rgba(234, 67, 53, 0.1); }
/* ─── Summary Dots ────────────────────────────────────── */
.summary-dot {
width: 12px;
height: 12px;
border-radius: 50%;
display: inline-block;
}
.summary-dot.green { background: #34a853; }
.summary-dot.yellow { background: #fbbc04; }
.summary-dot.red { background: #ea4335; }
/* ─── Winner Badge ────────────────────────────────────── */
.winner-badge {
display: inline-block;
background: #34a853;
color: white;
padding: 2px 8px;
border-radius: 3px;
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
margin-left: 8px;
}
/* ─── Recommendation Box ─────────────────────────────── */
.recommendation-box {
background: #e8f0fe;
padding: 12px;
border-radius: 4px;
border-left: 3px solid #1a73e8;
}
.recommendation-box h4 {
color: #1a73e8;
font-size: 13px;
font-weight: 600;
margin-bottom: 8px;
}
.recommendation-box ul {
margin-left: 20px;
font-size: 13px;
color: #174ea6;
}
.recommendation-box li {
margin-bottom: 4px;
}
/* ─── GSC Highlight Card ──────────────────────────────── */
.gsc-highlight {
background: #e8f0fe;
padding: 12px;
border-radius: 4px;
border-left: 3px solid #1a73e8;
}
.gsc-highlight .label {
font-size: 11px;
text-transform: uppercase;
color: #1967d2;
font-weight: 600;
letter-spacing: 0.5px;
margin-bottom: 4px;
}
.gsc-highlight .value {
font-size: 20px;
font-weight: 600;
color: #1a73e8;
}
/* ─── GSC Filters ─────────────────────────────────────── */
.gsc-filters {
display: flex;
gap: 12px;
margin-bottom: 16px;
flex-wrap: wrap;
align-items: center;
}
.gsc-filter-group {
display: flex;
align-items: center;
gap: 8px;
}
.gsc-filter-group label {
font-size: 13px;
font-weight: 500;
color: #5f6368;
}
.gsc-select, .gsc-input {
padding: 6px 12px;
border: 1px solid #dadce0;
border-radius: 4px;
font-size: 13px;
background: white;
color: #202124;
outline: none;
}
.gsc-select:focus, .gsc-input:focus {
border-color: #1a73e8;
}
/* ─── GSC Cards Grid ──────────────────────────────────── */
.gsc-cards-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 16px;
}
/* ─── GSC Opportunity Card ────────────────────────────── */
.gsc-opportunity-card {
background: white;
border-radius: 8px;
padding: 16px;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.08);
transition: box-shadow 0.2s;
display: flex;
flex-direction: column;
gap: 12px;
}
.gsc-opportunity-card:hover {
box-shadow: 0 4px 6px rgba(0,0,0,0.15), 0 2px 4px rgba(0,0,0,0.1);
}
/* ─── GSC URL Card ────────────────────────────────────── */
.gsc-url-card {
background: white;
border-radius: 8px;
padding: 16px;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.08);
transition: box-shadow 0.2s;
}
.gsc-url-card:hover {
box-shadow: 0 4px 6px rgba(0,0,0,0.15), 0 2px 4px rgba(0,0,0,0.1);
}
/* ─── GSC Page Card ───────────────────────────────────── */
.gsc-page-card {
background: white;
border-radius: 8px;
padding: 16px;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.08);
transition: box-shadow 0.2s;
cursor: pointer;
}
.gsc-page-card:hover {
box-shadow: 0 4px 6px rgba(0,0,0,0.15), 0 2px 4px rgba(0,0,0,0.1);
}
/* ─── Expand/Collapse ─────────────────────────────────── */
.gsc-expand-btn {
margin-top: 12px;
padding: 8px;
background: #f8f9fa;
border: none;
border-radius: 4px;
width: 100%;
cursor: pointer;
font-size: 13px;
font-weight: 500;
color: #1a73e8;
transition: background 0.2s;
}
.gsc-expand-btn:hover { background: #e8eaed; }
/* ─── GSC Details Panel ───────────────────────────────── */
.gsc-details {
margin-top: 12px;
padding-top: 12px;
border-top: 1px solid #e8eaed;
font-size: 13px;
}
.gsc-details-section {
margin-bottom: 12px;
}
.gsc-details-section h4 {
font-size: 11px;
text-transform: uppercase;
color: #5f6368;
font-weight: 600;
letter-spacing: 0.5px;
margin-bottom: 6px;
}
/* ─── Metric Items (for cards) ────────────────────────── */
.gsc-metrics-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
font-size: 13px;
}
.gsc-metric-item {
display: flex;
flex-direction: column;
gap: 2px;
}
.gsc-metric-label {
font-size: 11px;
text-transform: uppercase;
color: #5f6368;
font-weight: 500;
letter-spacing: 0.5px;
}
.gsc-metric-value {
font-size: 15px;
font-weight: 600;
font-variant-numeric: tabular-nums;
}
/* ─── Expandable Table Rows ───────────────────────────── */
.gsc-expandable-row {
cursor: pointer;
transition: background 0.15s;
}
.gsc-expandable-row:hover { background: #f8f9fa; }
.gsc-expand-icon {
display: inline-block;
margin-right: 8px;
transition: transform 0.2s;
font-size: 10px;
}
.gsc-expand-icon.expanded { transform: rotate(90deg); }
/* ─── Page Item in Cannibalization ────────────────────── */
.gsc-page-item {
background: white;
padding: 12px;
border-radius: 4px;
border-left: 3px solid #dadce0;
margin-bottom: 8px;
}
.gsc-page-item.winner {
border-left-color: #34a853;
background: #f0f9f4;
}
.gsc-page-url {
font-size: 13px;
color: #1a73e8;
margin-bottom: 8px;
word-break: break-all;
}
.gsc-page-metrics {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
gap: 12px;
font-size: 12px;
}
/* ─── Responsive ──────────────────────────────────────── */
@media (max-width: 600px) {
.gsc-cards-grid { grid-template-columns: 1fr; }
.gsc-metrics-grid { grid-template-columns: 1fr 1fr; }
}