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
TypeScript
/**
* 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 {};