github TypeScript analyzed eca371b

southleft/design-systems-mcp

github

I'm your specialized design systems assistant. Ask me about components, tokens, patterns, and best practices.

maintainer
southleft
licence
NOASSERTION
first seen
2026-06-26
last seen
2026-08-09
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 5 tools
transport counts 5 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • browse_by_category
  • browse_by_tag
  • get_all_tags
  • search_chunks
  • search_design_knowledge
code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 53

filesystem 27

  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-agentui.ts :14 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-aids.ts :9 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-aifollowup.ts :9 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-aitools.ts :8 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-docs.ts :11 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-foundations.ts :10 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-periphery.ts :11 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-prototyping.ts :9 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-sot.ts :6 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-southleft.ts :9 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/build/generate-manifest.ts :9 import fs from 'fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/check-duplicates.ts :7 import * as fs from 'fs';
show 15 more
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/clean-content.ts :13 import fs from 'fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/clean-staged-nav.ts :13 import { readdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/cleanup-corpus.ts :29 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/crawl-to-staged.ts :27 import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/dedupe-entries.ts :24 import { writeFileSync, mkdirSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingest-staged.ts :29 import { readdirSync, readFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingest-url-direct.ts :12 import * as fs from 'fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/crawl-website.ts :9 import * as fs from 'fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/csv-url-parser.ts :5 import * as fs from 'fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/ingest-csv.ts :9 import * as fs from 'fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/ingest.ts :9 import * as fs from 'node:fs/promises';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/pdf-parser.ts :106 // const fs = require('fs').promises;
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/website-crawler.ts :8 import * as fs from 'fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/repair-damaged-entries.ts :31 import { mkdirSync, writeFileSync } from 'node:fs';
  • fs (weak) southleft-design-systems-mcp-eca371b/scripts/setup-supabase.ts :7 import { readFileSync, writeFileSync, existsSync } from 'fs';

shell / exec 3

  • shell (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/crawl-website.ts :257 const { exec } = require('child_process');
  • shell (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/ingest-csv.ts :10 import { exec } from 'child_process';
  • shell (weak) southleft-design-systems-mcp-eca371b/scripts/setup-supabase.ts :6 import { execSync } from 'child_process';

network 9

  • net (weak) southleft-design-systems-mcp-eca371b/scripts/backfill-cf-embeddings.ts :49 const res = await fetch(ENDPOINT, {
  • net (weak) southleft-design-systems-mcp-eca371b/scripts/crawl-to-staged.ts :142 const response = await fetch(row.url, {
  • net (weak) southleft-design-systems-mcp-eca371b/scripts/eval-mcp.ts :102 const res = await fetch(BASE, { method: 'POST', headers, body: JSON.stringify(payload) });
  • net (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/url-fetcher.ts :30 const response = await fetch(url, {
  • net (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/website-crawler.ts :327 const response = await fetch(robotsUrl);
  • net (weak) southleft-design-systems-mcp-eca371b/scripts/repair-damaged-entries.ts :118 const response = await fetch(entry.source_location, {
  • net southleft-design-systems-mcp-eca371b/src/index.ts :848 async fetch(request: Request, env: Env, ctx: ExecutionContext) {
  • net southleft-design-systems-mcp-eca371b/src/lib/content-loader.ts :82 const response = await fetch(`/content/entries/${filename}`);
  • net southleft-design-systems-mcp-eca371b/src/sse-session.ts :56 async fetch(request: Request): Promise<Response> {

secrets 18

  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/backfill-cf-embeddings.ts :26 const SECRET = process.env.CF_EMBED_SECRET;
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/backfill-embeddings.ts :24 const supabaseKey = process.env.SUPABASE_SERVICE_KEY;
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/check-prod-connection.ts :13 const prodKey = process.env.SUPABASE_PROD_SERVICE_KEY;
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/cleanup-corpus.ts :40 const supabaseKey = process.env.SUPABASE_SERVICE_KEY;
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/compare-search-quality.ts :132 SUPABASE_SERVICE_KEY: process.env.SUPABASE_SERVICE_KEY,
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/crawl-to-staged.ts :50 const supabaseKey = process.env.SUPABASE_SERVICE_KEY;
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/dedupe-entries.ts :31 const key = process.env.SUPABASE_SERVICE_KEY;
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/ingest-staged.ts :45 const supabaseKey = process.env.SUPABASE_SERVICE_KEY;
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/ingest-url-direct.ts :20 process.env.SUPABASE_SERVICE_KEY!
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/ingest-vectors.ts :74 if (!process.env.SUPABASE_URL || !process.env.SUPABASE_ANON_KEY) {
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/repair-damaged-entries.ts :45 const supabaseKey = process.env.SUPABASE_SERVICE_KEY;
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/sync-db-compare.ts :31 const prodKey = process.env.SUPABASE_PROD_SERVICE_KEY || process.env.SUPABASE_SERVICE_KEY;
show 6 more
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/sync-db-pull.ts :27 const prodKey = process.env.SUPABASE_PROD_SERVICE_KEY || process.env.SUPABASE_SERVICE_KEY;
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/sync-db-push.ts :29 const prodKey = process.env.SUPABASE_PROD_SERVICE_KEY || process.env.SUPABASE_SERVICE_KEY;
  • secrets (weak) southleft-design-systems-mcp-eca371b/scripts/validate-ingestion.ts :27 const supabaseKey = process.env.SUPABASE_SERVICE_KEY || process.env.SUPABASE_ANON_KEY;
  • secrets southleft-design-systems-mcp-eca371b/src/lib/search-handler.ts :188 const supabaseKey = env?.SUPABASE_SERVICE_KEY || process.env.SUPABASE_SERVICE_KEY || env?.SUPABASE_ANON_KEY || process.env.SUPABASE_ANON_KEY;
  • secrets southleft-design-systems-mcp-eca371b/src/lib/supabase-catalog.ts :37 process.env.SUPABASE_SERVICE_KEY ||
  • secrets southleft-design-systems-mcp-eca371b/src/lib/vector-ingestion.ts :33 const supabaseKey = process.env.SUPABASE_SERVICE_KEY || process.env.SUPABASE_ANON_KEY;

tool registrations 5

  • search_design_knowledge southleft-design-systems-mcp-eca371b/src/sse-session.ts :330
  • search_chunks southleft-design-systems-mcp-eca371b/src/sse-session.ts :359
  • browse_by_category southleft-design-systems-mcp-eca371b/src/sse-session.ts :378
  • get_all_tags southleft-design-systems-mcp-eca371b/src/sse-session.ts :393
  • browse_by_tag southleft-design-systems-mcp-eca371b/src/sse-session.ts :402

declared dependencies 13

  • @modelcontextprotocol/sdk@^1.29.0
  • @supabase/supabase-js@^2.82.0
  • openai@^4.67.3
  • zod@^3.23.8
  • @biomejs/biome@^2.0.4
  • @types/node@^22.10.2
  • @types/pdf-parse@^1.1.5
  • cheerio@^1.1.0
  • dotenv@^17.2.1
  • pdf-parse@^1.1.1
  • tsx@^4.19.2
  • typescript@^5.7.2
show 1 more
  • wrangler@4.42.0

obfuscation 1

  • dynamic require()/import() southleft-design-systems-mcp-eca371b/src/lib/content-loader.ts :38 const contentModule = await import(`../../content/entries/${filename}`);