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
JavaScript
/**
* 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);
}