ds-directory-mcp
Provides intent-based semantic search over Ant Design documentation, enabling queries across design tokens, component architectures, and code patterns via the design_system_directory tool.
Provides intent-based semantic search over Atlassian design system documentation, enabling queries across design tokens, component architectures, and code patterns via the design_system_directory tool.
Provides intent-based semantic search over Shopify Polaris documentation, enabling queries across design tokens, component architectures, and code patterns via the design_system_directory tool.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ds-directory-mcpHow do other design systems handle dark mode theming?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
|
1 | Embeddings | Local ( |
2 | Vector DB | Qdrant Cloud (1GB RAM / 4GB disk, free forever) |
3 | MCP hosting | Render free web service |
Related MCP server: linked-docs
Setup
Create a free Qdrant Cloud cluster.
python -m venv .venv && source .venv/bin/activatepip install -r requirements.txt(first run also downloads the local embedding model, ~130MB, cached after that)cp .env.example .envand fill inQDRANT_URL,QDRANT_API_KEY.
Ingesting a design system
python ingest.py "Atlassian Design System" https://atlassian.design/componentsCrawls 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.pyServes 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 registryRe-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_URLQDRANT_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.
This server cannot be deployed
Maintenance
Related MCP Connectors
Access and maintain design system docs, tokens, components, skills, and contexts across any project.
Versioned documentation registry and semantic search for AI tools and coding assistants.
Search and query nTop's knowledge base and engineering guides from AI applications.
Agentic search over your Dewey document collections from any MCP-compatible client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides resources, tools, and prompts for a Design System via MCP protocol, enabling component search, reading, and related component discovery.360 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to intelligently search and reference documentation using hybrid semantic + keyword search via MCP protocol.-
- AlicenseNot gradedqualityDmaintenanceEnables AI coding assistants to semantically search and retrieve relevant code patterns, documentation, and implementations from a codebase via MCP tools.8MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with access to design documentation across multiple code libraries, enabling discovery of existing utilities and patterns to avoid reimplementation.2MIT