UNPKG

mcp-server-tester-sse-http-stdio

Version:

MCP Server Tester with SSE support - Test MCP servers using HTTP, SSE, and STDIO transports

72 lines (71 loc) 2.16 kB
/** * Registry for managing protocol features and their tests */ export class FeatureRegistry { static features = new Map(); /** * Register a protocol feature with its tests */ static registerFeature(info) { this.features.set(info.feature, info); } /** * Get information about a specific feature */ static getFeature(feature) { return this.features.get(feature); } /** * Get all registered features */ static getAllFeatures() { return Array.from(this.features.values()); } /** * Get features by category */ static getFeaturesByCategory(category) { return Array.from(this.features.values()).filter(f => f.category === category); } /** * Get features that should run based on server capabilities */ static getApplicableFeatures(serverCapabilities) { return Array.from(this.features.values()).filter(f => !f.requiredCapability || serverCapabilities.has(f.requiredCapability)); } /** * Get features that are skipped due to missing capabilities */ static getSkippedFeatures(serverCapabilities) { return Array.from(this.features.values()).filter(f => f.requiredCapability && !serverCapabilities.has(f.requiredCapability)); } /** * Group features by category for organized display */ static getFeaturesByCategories() { const grouped = new Map(); // Initialize all categories const categories = [ 'base-protocol', 'lifecycle', 'server-features', 'utilities', ]; categories.forEach(cat => grouped.set(cat, [])); // Group features for (const feature of this.features.values()) { const categoryFeatures = grouped.get(feature.category); categoryFeatures.push(feature); } return grouped; } /** * Clear all registered features (useful for testing) */ static clear() { this.features.clear(); } } export function registerProtocolFeature(info) { FeatureRegistry.registerFeature(info); }