Skip to main content
Glama
ds-directory-mcp

ds-directory-mcp

by NoWorries

ds-directory-mcp

Self-hosted, free-tier semantic search (RAG) + MCP server for external design system documentation. Replaces keyword-based search (e.g. Google Programmable Search) with intent-based vector search over design tokens, component architectures, and code patterns — exposed to any MCP-compatible AI assistant via one tool: design_system_directory.

Architecture

[Phase 1: Ingestion]  ──>  [Phase 2: Storage & Search]  ──>  [Phase 3: MCP Gateway]
 ingest.py (crawl,             Qdrant Cloud                    server.py
 chunk, embed)                 (vector DB, free tier)          (FastMCP, Render free tier)

Phase

Component

Free-tier service

1

Crawl & scrape

requests + BeautifulSoup4 (local, or GitHub Actions)

1

Embeddings

Local (sentence-transformers, BAAI/bge-small-en-v1.5) — no account, no API key

2

Vector DB

Qdrant Cloud (1GB RAM / 4GB disk, free forever)

3

MCP hosting

Render free web service

Related MCP server: linked-docs

Setup

  1. Create a free Qdrant Cloud cluster.

  2. python -m venv .venv && source .venv/bin/activate

  3. pip install -r requirements.txt (first run also downloads the local embedding model, ~130MB, cached after that)

  4. cp .env.example .env and fill in QDRANT_URL, QDRANT_API_KEY.

Ingesting a design system

python ingest.py "Atlassian Design System" https://atlassian.design/components

Crawls same-domain links from the given start URL(s), strips nav/footer/script noise, chunks text (800 chars, 100 overlap), embeds each chunk, and upserts into the design_system_index Qdrant collection with {url, design_system_name, text_content} payloads.

Running the MCP server locally

python server.py

Serves design_system_directory(user_query: str) over Streamable HTTP.

Adding design systems

Register each one in systems.yaml (name + start URL(s)) instead of typing the command by hand each time:

python ingest.py --system "Shopify Polaris"   # one entry from the registry
python ingest.py --all                        # every entry in the registry

Re-running a system deletes its previously indexed chunks first (matched by design_system_name), so re-ingestion replaces stale content instead of piling up duplicates.

Automated re-indexing (GitHub Actions, free)

.github/workflows/reindex.yml runs python ingest.py --all on a weekly cron (also triggerable manually via "Run workflow"). This runs on GitHub's free Actions minutes — no always-on server needed, unlike the MCP server itself. Set these as repo secrets (Settings → Secrets and variables → Actions), never commit them:

  • QDRANT_URL

  • QDRANT_API_KEY

Render hosts the always-on MCP query server; GitHub Actions handles the periodic batch re-crawl — different lifecycles, so they're split across two free hosts.

Deploying (Render free tier)

render.yaml is included — connect this repo in the Render dashboard ("New +" → "Blueprint"), and set QDRANT_URL, QDRANT_API_KEY as secrets in the service's environment settings (never commit them). Render's free tier sleeps on idle — the first request after a period of inactivity will be slow ("cold start"); surface a loading state for this in any client UI. It's also only 512MB RAM — untested whether that's enough headroom for sentence-transformers + the embedding model alongside the MCP server itself; if embed_query() OOMs in practice, the fix is either a smaller model or Render's cheapest paid tier, not a code change.

Notes

  • Secrets live only in environment variables (local .env, or the host's dashboard) — never in git.

  • Ingestion sleeps 1s between page fetches to respect target servers.

  • At 768 dimensions, ~100k vectors uses ~300MB — comfortably under Qdrant's 1GB RAM ceiling.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides resources, tools, and prompts for a Design System via MCP protocol, enabling component search, reading, and related component discovery.
      511 npm
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to intelligently search and reference documentation using hybrid semantic + keyword search via MCP protocol.
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI coding assistants to semantically search and retrieve relevant code patterns, documentation, and implementations from a codebase via MCP tools.
      8
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Provides AI assistants with access to design documentation across multiple code libraries, enabling discovery of existing utilities and patterns to avoid reimplementation.
      2
      MIT