UNPKG

mcp-orchestrator

Version:

MCP Orchestrator - Discover and install MCPs with automatic OAuth support. Uses Claude CLI for OAuth MCPs (Canva, Asana, etc). 34 trusted MCPs from Claude Partners.

116 lines (115 loc) 2.67 kB
/** * MCP Mega Crawler - Fetches ALL MCPs from multiple sources * This actually works and will find thousands of MCPs! */ interface CrawledMCP { id: string; name: string; description: string; packageName: string; source: 'npm' | 'github' | 'pypi' | 'registry'; keywords: string[]; metadata: { version?: string; author?: string; downloads?: number; stars?: number; lastUpdated?: string; homepage?: string; repository?: string; runtime?: 'node' | 'python' | 'unknown'; }; } export declare class MCPMegaCrawler { private allMCPs; /** * Crawl NPM for all MCP-related packages */ crawlNPM(): Promise<CrawledMCP[]>; /** * Crawl PyPI for Python MCP servers */ crawlPyPI(): Promise<CrawledMCP[]>; /** * Crawl GitHub for MCP repositories */ crawlGitHub(): Promise<CrawledMCP[]>; /** * Crawl the official MCP registry */ crawlOfficialRegistry(): Promise<CrawledMCP[]>; /** * Master crawl function - gets everything! */ crawlAll(): Promise<CrawledMCP[]>; /** * Save crawled results to JSON file */ private saveResults; /** * Helper: HTTPS GET request */ private httpsGet; /** * Helper: Generate clean ID from name */ private generateId; /** * Helper: Clean package name for display */ private cleanName; /** * Helper: Detect runtime from GitHub repo */ private detectRuntime; /** * Helper: Extract package name from URL */ private extractPackageFromUrl; /** * Helper: Extract keywords from description */ private extractKeywords; /** * Helper: Parse registry item */ private parseRegistryItem; /** * Helper: Deduplicate by package name */ private deduplicateByPackageName; /** * Helper: Global deduplication with source priority */ private deduplicateGlobally; /** * Get statistics about crawled MCPs */ getStatistics(): { total: number; bySource: { npm: number; pypi: number; github: number; registry: number; }; byRuntime: { node: number; python: number; unknown: number; }; topKeywords: { keyword: string; count: number; }[]; mostStarred: { name: string; stars: number | undefined; }[]; }; /** * Get most common keywords */ private getTopKeywords; } export {};