Skill v1.0.0
currentAutomated scan100/100version: "1.0.0"
MCP Discovery Skill
Dynamic MCP package discovery at runtime. Instead of relying on a static registry, this skill verifies MCP availability by querying npm, GitHub, and vendor documentation.
Purpose
When a user selects a tool during /design-ops:setup, this skill discovers the best connection method:
- Check for official/vendor MCPs
- Evaluate community packages (with quality metrics)
- Find API documentation for direct integration
- Return a recommendation with confidence level
Why Dynamic Discovery?
- 100+ potential tools across operations/design/analytics
- Static registries become stale immediately
- New MCPs are published constantly
- Tool-agnostic design requires runtime discovery
Trigger
Invoked by tool-evaluator skill during setup flow:
skill: mcp-discoveryinput:tool: "monday"pillar: "operations"
Discovery Flow
User selects tool (e.g., "Monday.com")│▼┌─────────────────────────────────────────────────────────────┐│ Step 1: Check Known Tools (fast path) ││ - Look up in known_tools.yaml for common tools ││ - If found with high confidence, return immediately │└─────────────────────────────────────────────────────────────┘│ not found▼┌─────────────────────────────────────────────────────────────┐│ Step 2: Search npm for Official MCP ││ - npm view @modelcontextprotocol/server-{tool} ││ - npm view @{vendor}/mcp-server ││ - Check for vendor-published packages │└─────────────────────────────────────────────────────────────┘│▼┌─────────────────────────────────────────────────────────────┐│ Step 3: Search npm for Community MCPs ││ - npm search {tool} mcp --json ││ - Filter by: downloads > 1000, updated < 6 months ││ - Rank by quality metrics │└─────────────────────────────────────────────────────────────┘│▼┌─────────────────────────────────────────────────────────────┐│ Step 4: Check Anthropic MCP Servers Repo ││ - GitHub API: repos/anthropics/mcp-servers/contents ││ - Look for tool-specific server │└─────────────────────────────────────────────────────────────┘│▼┌─────────────────────────────────────────────────────────────┐│ Step 5: Discover API Documentation ││ - Web search: "{tool} API documentation" ││ - Check common patterns: api.{tool}.com, developers.{tool} ││ - Scrape for authentication requirements │└─────────────────────────────────────────────────────────────┘│▼┌─────────────────────────────────────────────────────────────┐│ Step 6: Return Discovery Result ││ - Recommendation: mcp | api | both | unavailable ││ - Confidence level based on source quality ││ - Warning if community package │└─────────────────────────────────────────────────────────────┘
Output Schema
tool: mondaydiscovery_result:# MCP discoverymcp_found: true | falsemcp_source: official | vendor | community | nonemcp_package: "@monday/mcp-server"mcp_confidence: high | medium | low# Quality metrics (when available)npm_weekly_downloads: 5000npm_last_updated: "2025-03-15"github_stars: 120# API discoveryapi_available: trueapi_docs_url: "https://developer.monday.com/api-reference"api_auth_type: "api_key" | "oauth" | "token"# Final recommendationrecommendation: mcp | api | both | unavailablestatus: connected | available | api_only | unavailable# Warningswarning: "Community package - not officially supported" | nullwarning_code: community_package | low_downloads | outdated | none
Confidence Levels
| Level | Source | Criteria | |
|---|---|---|---|
| high | Official | Package from @modelcontextprotocol/*, vendor namespace, or official HTTP MCP | |
| high | Vendor | Published by tool vendor (e.g., @notionhq/notion-mcp-server, @storybook/mcp) | |
| high | HTTP | Official HTTP MCPs (e.g., Figma, Supabase, Vercel) with validated: true | |
| medium | Community (popular) | >5000 weekly downloads, updated in last 3 months, validated: true | |
| low | Community (obscure) | <1000 downloads, placeholder packages, or not updated in 6+ months | |
| none | Unavailable | No MCP available for this tool |
Known Tools (Fast Path)
For the 42 most common tools, we use a verified registry (known-tools.yaml) that has been validated against npm and official documentation. All entries have validated: true.
Registry Schema (v2.0)
# skills/mcp-discovery/known-tools.yamlversion: "2.0"last_validated: "2026-04-19"validation_method: "npm view + official docs"# Each tool entry includes:# - mcp_source: official | vendor | community | none# - mcp_package: npm package name (null for HTTP MCPs)# - mcp_type: stdio | http# - mcp_url: URL for HTTP MCPs# - mcp_confidence: high | medium | low | none# - validated: true (verified to exist)# - install_cmd: explicit install command (optional)# - warning: caution message (optional)# - env_required: required environment variables
Example Entries (Verified)
# Vendor stdio MCP (high confidence)notion:mcp_source: vendormcp_package: "@notionhq/notion-mcp-server"mcp_type: stdiomcp_confidence: highvalidated: trueenv_required:- NOTION_API_KEY# Official stdio MCP (deprecated but functional)github:mcp_source: officialmcp_package: "@modelcontextprotocol/server-github"mcp_type: stdiomcp_confidence: highvalidated: truewarning: "Package marked deprecated on npm"env_required:- GITHUB_PERSONAL_ACCESS_TOKEN# Official HTTP MCPfigma:mcp_source: officialmcp_package: nullmcp_type: httpmcp_url: "https://mcp.figma.com/mcp"mcp_confidence: highvalidated: trueinstall_cmd: "claude mcp add --transport http figma https://mcp.figma.com/mcp"# Official HTTP MCPsupabase:mcp_source: officialmcp_package: nullmcp_type: httpmcp_url: "https://api.supabase.com/mcp"mcp_confidence: highvalidated: trueinstall_cmd: "claude mcp add supabase https://api.supabase.com/mcp"# Community MCP (medium confidence)linear:mcp_source: communitymcp_package: "mcp-server-linear"mcp_type: stdiomcp_confidence: mediumvalidated: truewarning: "Community package by dvcrn"# No MCP available (API only)google_analytics:mcp_source: nonemcp_package: nullmcp_confidence: nonevalidated: trueapi_docs: "https://developers.google.com/analytics"recommendation: apinote: "Use Google Analytics Data API directly."
Registry Summary (42 tools)
| Pillar | Total | MCP Available | API Only | Unavailable | |
|---|---|---|---|---|---|
| Operations | 12 | 8 | 3 | 1 | |
| Design | 10 | 7 | 1 | 2 | |
| Analytics | 12 | 3 | 7 | 2 | |
| Infrastructure | 8 | 6 | 2 | 0 | |
| Total | 42 | 24 | 13 | 5 |
This is the source of truth for DESIGN-OPS tool recommendations. All packages have been verified to exist.
Discovery Implementation
Step 1: Check Known Tools Registry (Fast Path)
# First, check known-tools.yaml for validated entries# If found with validated: true, return immediately# This prevents unnecessary npm queries for known tools
Step 2: npm Package Search
# Check for official MCP packages (modelcontextprotocol namespace)npm view @modelcontextprotocol/server-{tool} --json 2>/dev/null# Check for vendor package patternsnpm view @{tool}hq/{tool}-mcp-server --json 2>/dev/null # e.g., @notionhq/notion-mcp-servernpm view @{tool}/mcp --json 2>/dev/null # e.g., @storybook/mcpnpm view mcp-server-{tool} --json 2>/dev/null # e.g., mcp-server-linear
Step 3: npm Community Search
# Search for community packagesnpm search {tool} mcp --json | jq '.[] | select(.name | contains("mcp"))'
Quality filters:
- Weekly downloads > 1000
- Updated within last 6 months
- Has README and documentation
- Not a placeholder (version > 0.0.1)
Step 4: HTTP MCP Detection
Some tools provide HTTP-based MCPs instead of npm packages:
| Tool | HTTP MCP URL | Install Command | |
|---|---|---|---|
| Figma | https://mcp.figma.com/mcp | claude mcp add --transport http figma https://mcp.figma.com/mcp | |
| Supabase | https://api.supabase.com/mcp | claude mcp add supabase https://api.supabase.com/mcp | |
| Vercel | https://mcp.vercel.com | claude mcp add --transport http vercel https://mcp.vercel.com |
Step 5: API Documentation Discovery
Web search for:
{tool} REST API documentation{tool} developer API{tool} API reference
Common URL patterns:
https://api.{tool}.comhttps://developers.{tool}.comhttps://{tool}.com/developershttps://docs.{tool}.com/api
Caching Strategy
- Session cache: Discovery results cached for current session
- Config cache: Successful discoveries written to user config
- Re-discovery: Happens on explicit
/design-ops:setupruns
# In ~/.claude/design-ops-config.yamltools:- id: mondaytype: mcpmcp_package: "@monday/mcp-server"mcp_source: vendormcp_confidence: high# Cached discovery result - prevents re-querydiscovery_cached: "2025-04-17"
Community Package Warning
When a community MCP is the only option, return with warning:
discovery_result:mcp_found: truemcp_source: communitymcp_package: "some-community-mcp"mcp_confidence: lowwarning: "Community package - not officially supported"warning_code: community_packagealternatives:- type: apidescription: "Direct API integration available"api_docs: "https://api.example.com"
The setup wizard will present this warning to the user:
### Community Package Notice{Tool} uses a community-maintained MCP package.**Package:** `{package-name}`**Downloads:** {weekly_downloads}/week**Last updated:** {last_updated}Community packages are not officially supported. They may:-Stop working if not maintained-Have security or reliability issues**Alternatives:**-Use direct API integration instead-Wait for official MCP release[Use community package] [Use direct API instead] [Skip this tool]
Error Handling
npm not available
error: npm_unavailablemessage: "npm not available for package discovery"fallback: "Check references/tool-registry.md manually"
Network timeout
error: network_timeoutmessage: "Could not reach npm registry"fallback: "Using cached known-tools data"
Unknown tool
error: unknown_toolmessage: "No MCP or API found for {tool}"recommendation: unavailablesuggestion: "Check if tool has public API documentation"
Integration Points
Called by: tool-evaluator skill
# In tool-evaluator flowfor tool in selected_tools:# First check if already installedif tool_installed_in_settings(tool):status = "connected"else:# Invoke discoverydiscovery = invoke_skill("mcp-discovery", tool=tool)# Use discovery result for recommendation
Writes to: config-schema
Discovery results populate these config fields:
mcp_source: official | vendor | community | nonemcp_package: npm package namemcp_confidence: high | medium | low
MCP Installation Types
stdio MCPs (npm packages)
Standard npm packages that run via standard I/O:
# Generic install patternclaude mcp add {name} -- npx -y {package}# Examplesclaude mcp add notion -- npx -y @notionhq/notion-mcp-serverclaude mcp add github -- npx -y @modelcontextprotocol/server-githubclaude mcp add linear -- npx -y mcp-server-linear
HTTP MCPs (hosted services)
HTTP-based MCPs that connect to hosted services:
# Generic install patternclaude mcp add --transport http {name} {url}# Examplesclaude mcp add --transport http figma https://mcp.figma.com/mcpclaude mcp add --transport http vercel https://mcp.vercel.comclaude mcp add supabase https://api.supabase.com/mcp
Detection Logic
When generating install commands:
if mcp_type == "http":if install_cmd exists:use install_cmd # Explicit command takes precedenceelse:generate: "claude mcp add --transport http {name} {mcp_url}"elif mcp_type == "stdio":if install_cmd exists:use install_cmdelse:generate: "claude mcp add {name} -- npx -y {mcp_package}"
Validation Before Install
Before installing any package, the discovery flow SHOULD:
- Run
npm view {package} --jsonto verify existence - If 404, log warning and fall back to
recommendation: api - Check for deprecation warnings in npm response
- Cache validation results for session
This prevents issues if packages are unpublished or renamed.
References
skills/mcp-discovery/known-tools.yaml— Source of truth for tool recommendationsreferences/config-schema.md— Config fields populated by discoveryskills/tool-evaluator/SKILL.md— Parent skill that invokes discovery
Version: 2.0