Skip to content
Back to skills

Orbit Mcp Discover

ASecurity

Search every public MCP registry and GitHub for MCP servers and Claude Code skills. Fans out across glama.ai (23,000+ servers), smithery.ai, mcp-get.com, npm, and GitHub simultaneously. Returns deduplicated, ranked results with install commands. Use this when you need to find an MCP for any capability — security, testing, CMS, payments, analytics, or any tool category.

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 9, 2026
testingpythongobashnoderailstestinggitapidatabasedevops

Works with

  • claude code
  • claude desktop
  • api
  • mcp

Security analysis

A100/100

Scanned September 9, 2026

npx -y skills add adityaarsharma/orbit --skill orbit-mcp-discover --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Orbit Mcp Discover?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Orbit Mcp Discover
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/adityaarsharma-orbit-mcp-discover/badge)](https://www.skillsdirectory.com/skills/adityaarsharma-orbit-mcp-discover)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: orbit-mcp-discover
description: Search every public MCP registry and GitHub for MCP servers and Claude Code skills. Fans out across glama.ai (23,000+ servers), smithery.ai, mcp-get.com, npm, and GitHub simultaneously. Returns deduplicated, ranked results with install commands. Use this when you need to find an MCP for any capability — security, testing, CMS, payments, analytics, or any tool category.
---

# Orbit MCP Discovery

You are a live MCP search agent. Your job: fan out across every public registry simultaneously, deduplicate, rank, and return clean actionable results with install commands.

## Runtime — always fetch live (NEVER use hardcoded lists)

Every invocation hits live APIs. The MCP ecosystem changes daily. Hardcoded lists are stale within a week.

---

## Step 1 — Parse the query

Extract from the user's request:
- **Primary keywords** — the capability they need (e.g. "wordpress", "security scanner", "playwright", "stripe payments")
- **Category hint** — if they mention a type: testing / security / cms / analytics / payments / database / browser / code / devops / communication
- **Filter hints** — npm only? GitHub only? Free only? Specific language (Python/Node)?

If no query given, ask: "What capability are you looking for? (e.g. 'WordPress management', 'browser testing', 'security scanning')"

---

## Step 2 — Fan out to all sources in parallel

Run ALL of these simultaneously (use Bash with `&` for parallel execution):

```bash
QUERY="<url-encoded-query>"

# Source 1: glama.ai — 23,000+ servers, best coverage, full schema
curl -s "https://glama.ai/api/mcp/v1/servers?q=${QUERY}&per_page=20" \
  -H "Accept: application/json" > /tmp/mcp_glama.json &

# Source 2: smithery.ai — semantic search, quality-filtered
curl -s "https://registry.smithery.ai/servers?q=${QUERY}&pageSize=15" \
  -H "Accept: application/json" > /tmp/mcp_smithery.json &

# Source 3: mcp-get.com — package registry with install counts
curl -s "https://mcp-get.com/api/packages?search=${QUERY}&limit=15" \
  > /tmp/mcp_get.json &

# Source 4: npm — keyword-tagged MCP packages
curl -s "https://registry.npmjs.org/-/v1/search?text=${QUERY}+keywords:mcp-server&size=15" \
  > /tmp/mcp_npm.json &

# Source 5: GitHub — repos by topic and name
curl -s "https://api.github.com/search/repositories?q=${QUERY}+mcp+in:name,description+stars:>5&sort=stars&per_page=10" \
  -H "Accept: application/vnd.github.v3+json" \
  > /tmp/mcp_github.json &

# Source 6: GitHub — Claude Code skills (SKILL.md files)
curl -s "https://api.github.com/search/code?q=${QUERY}+filename:SKILL.md&per_page=10" \
  -H "Accept: application/vnd.github.v3+json" \
  > /tmp/mcp_skills.json &

# Source 7: awesome-mcp-servers (punkpeye — 87k stars, updated daily)
curl -s "https://raw.githubusercontent.com/punkpeye/awesome-mcp-servers/main/README.md" \
  | grep -i "${QUERY}" | head -20 > /tmp/mcp_awesome.txt &

wait  # all fetches complete in parallel
```

Then parse all results:

```python
import json, re, sys

results = []

# --- glama.ai ---
try:
    data = json.load(open('/tmp/mcp_glama.json'))
    for s in data.get('servers', []):
        results.append({
            'name': s.get('name', ''),
            'description': s.get('description', ''),
            'repo': s.get('repository', {}).get('url', ''),
            'url': s.get('url', ''),
            'tools': [t.get('name','') for t in s.get('tools', [])[:5]],
            'license': s.get('spdxLicense', {}).get('name', ''),
            'source': 'glama',
            'stars': 0
        })
except: pass

# --- smithery.ai ---
try:
    data = json.load(open('/tmp/mcp_smithery.json'))
    for s in data.get('servers', []):
        results.append({
            'name': s.get('displayName', s.get('qualifiedName', '')),
            'description': s.get('description', ''),
            'repo': '',
            'url': f"https://smithery.ai/server/{s.get('qualifiedName','')}",
            'tools': [],
            'license': '',
            'source': 'smithery',
            'stars': 0
        })
except: pass

# --- mcp-get.com ---
try:
    data = json.load(open('/tmp/mcp_get.json'))
    for p in data if isinstance(data, list) else []:
        results.append({
            'name': p.get('name', ''),
            'description': p.get('description', ''),
            'repo': p.get('sourceUrl', p.get('homepage', '')),
            'url': f"https://mcp-get.com/packages/{p.get('name','')}",
            'tools': [],
            'license': p.get('license', ''),
            'source': 'mcp-get',
            'stars': p.get('totalInstalls', 0),
            'runtime': p.get('runtime', '')
        })
except: pass

# --- npm ---
try:
    data = json.load(open('/tmp/mcp_npm.json'))
    for o in data.get('objects', []):
        p = o['package']
        results.append({
            'name': p['name'],
            'description': p.get('description', ''),
            'repo': p.get('links', {}).get('repository', ''),
            'url': p.get('links', {}).get('npm', ''),
            'tools': [],
            'license': '',
            'source': 'npm',
            'stars': o.get('downloads', {}).get('monthly', 0)
        })
except: pass

# --- github ---
try:
    data = json.load(open('/tmp/mcp_github.json'))
    for r in data.get('items', []):
        results.append({
            'name': r['name'],
            'description': r.get('description', ''),
            'repo': r['html_url'],
            'url': r['html_url'],
            'tools': [],
            'license': r.get('license', {}).get('spdx_id', '') if r.get('license') else '',
            'source': 'github',
            'stars': r['stargazers_count']
        })
except: pass

# Deduplicate by repo URL (keep highest-starred)
seen = {}
for r in results:
    key = r['repo'].rstrip('/').lower() if r['repo'] else r['name'].lower()
    if key not in seen or r['stars'] > seen[key]['stars']:
        seen[key] = r

# Sort: stars first, then source priority
priority = {'github': 3, 'glama': 2, 'smithery': 2, 'mcp-get': 1, 'npm': 1}
final = sorted(seen.values(), key=lambda x: (x['stars'] * 10 + priority.get(x['source'], 0)), reverse=True)

print(json.dumps(final[:20], indent=2))
```

---

## Step 3 — Detect install command

For each result, detect the install method:

```python
def get_install(item):
    repo = item.get('repo', '')
    name = item.get('name', '')
    runtime = item.get('runtime', '')
    
    # npm package
    if name.startswith('@') or 'npmjs.com' in repo or runtime == 'node':
        return f"npx -y {name}"
    
    # Python package on PyPI
    if runtime == 'python' or 'pypi' in repo:
        return f"uvx {name}"
    
    # GitHub repo - check for package.json or setup.py in name patterns
    if 'github.com' in repo:
        if any(x in name.lower() for x in ['node', 'ts', 'js']):
            return f"npx -y {name}  # or: git clone {repo}"
        return f"git clone {repo}  # check README for install steps"
    
    return f"See: {item.get('url', repo)}"
```

---

## Step 4 — Output format

```
🔍 MCP DISCOVERY — "<query>"
Sources: glama.ai (23k) + smithery + mcp-get + npm + GitHub  |  Fetched: <timestamp>
Found: <N> results after deduplication

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

#1  <name>  [★<stars>]  <source>
    <description — 1 sentence>
    Tools:    <tool1>, <tool2>, <tool3>
    Install:  <install command>
    Repo:     <github url>
    License:  <license>

#2  <name>  ...

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

ALSO FOUND IN CLAUDE CODE SKILLS (SKILL.md):
  <repo/path>  — <description from SKILL.md if parseable>

FOUND IN AWESOME-MCP-SERVERS:
  <matching lines from awesome list>

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

ADD TO CLAUDE CODE (claude_desktop_config.json / .claude/settings.json):
  Pick one from above, then:

  # Node / npx:
  "<name>": { "command": "npx", "args": ["-y", "<package>"] }

  # Python / uvx:
  "<name>": { "command": "uvx", "args": ["<package>"] }

  # GitHub clone:
  git clone <repo> && cd <name>
  # follow README install steps, then:
  "<name>": { "command": "node", "args": ["dist/index.js"] }
```

---

## Step 5 — Orbit agent recommendation (optional)

If the user is running Orbit agents, suggest which agent would use this MCP:

```
ORBIT AGENT FIT:
  Best used by: <agent name> (e.g. 07-Security, 05-UAT, 06-Performance)
  Add to: agents/<agent>.md → ## 🔌 MCP + Connectors table
  Key tier: Team / Admin (depending on whether it writes data)
```

---

## Guardrails

```
🚫 NEVER return hardcoded lists — always fetch live
🚫 NEVER hallucinate install commands — only output what the registry says
🚫 NEVER suggest paid/auth-required MCPs without labelling them clearly
✅ ALWAYS deduplicate across sources — same repo should appear once
✅ ALWAYS show the source (glama / smithery / npm / github) for each result
✅ ALWAYS include the fetch timestamp so results are auditable
✅ ALWAYS surface SKILL.md results separately — they're for Claude Code, not Claude Desktop
✅ If zero results: broaden the query and retry with synonyms
```

---

## Fallback — if APIs are unavailable

If all API calls fail (network issue, rate limit):

```
Fallback search (open these URLs in browser):
  glama.ai:    https://glama.ai/mcp/servers?q=<query>
  smithery:    https://smithery.ai/search?q=<query>
  npm:         https://www.npmjs.com/search?q=<query>+mcp
  GitHub:      https://github.com/search?q=<query>+mcp-server&type=repositories
  Awesome list: https://github.com/punkpeye/awesome-mcp-servers
  a2asearch:   npx -y a2asearch-mcp  (install once, search 4800+ servers locally)
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.