reloaderoo
Version:
Hot-reload your MCP servers without restarting your AI coding assistant. Works excellently with VSCode MCP, well with Claude Code. A transparent development proxy for the Model Context Protocol that enables seamless server restarts during development.
115 lines • 5.28 kB
TypeScript
/**
* CapabilityAugmenter for modifying InitializeResult to add proxy capabilities
*
* This module handles the interception and modification of the initialize handshake
* between the MCP client and child server. It augments the child server's capabilities
* with proxy-specific functionality while preserving all original features.
*
* Key responsibilities:
* - Add restart_server tool to the child's tool capabilities
* - Append "-dev" suffix to server name and version for clear identification
* - Preserve all existing tools, resources, and prompts from the child
* - Enable tool list change notifications for restart events
* - Maintain protocol version compatibility
*/
import { type InitializeResult, type ServerCapabilities, type Implementation, type Tool, type ChildServerInfo, type ProxyCapabilities } from './types.js';
/**
* CapabilityAugmenter handles the modification of InitializeResult responses
* from child MCP servers to add proxy-specific capabilities and naming.
*
* This class ensures that the proxy appears as a transparent wrapper that
* enhances the child server's capabilities rather than replacing them.
*/
export declare class CapabilityAugmenter {
private readonly logger;
/**
* Main entry point for augmenting an InitializeResult from a child server.
* This method orchestrates all the individual augmentation steps.
*
* @param childResult - The original InitializeResult from the child server
* @returns Augmented InitializeResult with proxy capabilities added
* @throws Error if the childResult is malformed or missing required fields
*/
augmentInitializeResult(childResult: InitializeResult): InitializeResult;
/**
* Adds the restart_server tool to the child server's capabilities.
* Ensures tools capability exists and includes the restart functionality.
*
* @param childCapabilities - Original capabilities from child server
* @returns Enhanced capabilities with restart_server tool
*/
addRestartTool(childCapabilities: ServerCapabilities): ProxyCapabilities;
/**
* Modifies server information to append "-dev" suffix to name and version.
* This clearly identifies the server as running through the development proxy.
*
* @param originalServerInfo - Original Implementation from child server
* @returns Modified Implementation with -dev suffixes
*/
modifyServerInfo(originalServerInfo: Implementation): Implementation;
/**
* Preserves all child server capabilities while ensuring proxy capabilities are included.
* This method ensures no functionality is lost from the original server.
*
* @param originalCapabilities - Original capabilities from child
* @param proxyCapabilities - Enhanced capabilities with proxy additions
* @returns Final capabilities preserving all child features
*/
preserveChildCapabilities(originalCapabilities: ServerCapabilities, proxyCapabilities: ProxyCapabilities): ProxyCapabilities;
/**
* Extracts child server information for internal state management.
* This information is used by other proxy components for lifecycle management.
*
* @param initializeResult - The child's InitializeResult
* @returns Structured child server information
*/
extractChildServerInfo(initializeResult: InitializeResult): ChildServerInfo;
/**
* Gets the restart_server tool definition.
* Provides access to the tool definition for other components.
*
* @returns The restart_server Tool definition
*/
getRestartServerTool(): Tool;
/**
* Validates that the InitializeResult contains required fields.
* Throws descriptive errors for missing or invalid data.
*
* @param result - InitializeResult to validate
* @throws Error if validation fails
*/
private validateInitializeResult;
/**
* Appends "-dev" suffix to a string if not already present.
* Handles edge cases like empty strings and already-suffixed values.
*
* @param value - String to append suffix to
* @returns String with -dev suffix
*/
private appendDevSuffix;
/**
* Combines child server instructions with proxy-specific guidance.
* Creates comprehensive instructions for the enhanced server.
*
* @param childInstructions - Original instructions from child server
* @returns Combined instructions including proxy information
*/
private combineInstructions;
}
/**
* Convenience function to create and use a CapabilityAugmenter instance.
* Provides a simple interface for one-time augmentation operations.
*
* @param childResult - InitializeResult from child server
* @returns Augmented InitializeResult
*/
export declare function augmentCapabilities(childResult: InitializeResult): InitializeResult;
/**
* Type guard to check if capabilities include proxy enhancements.
* Useful for validation and testing scenarios.
*
* @param capabilities - ServerCapabilities to check
* @returns True if capabilities appear to be proxy-enhanced
*/
export declare function hasProxyCapabilities(capabilities: ServerCapabilities): capabilities is ProxyCapabilities;
//# sourceMappingURL=capability-augmenter.d.ts.map