snow-flow
Version:
Snow-Flow v3.2.0: Complete ServiceNow Enterprise Suite with 180+ MCP Tools. ATF Testing, Knowledge Management, Service Catalog, Change Management with CAB scheduling, Virtual Agent chatbots with NLU, Performance Analytics KPIs, Flow Designer automation, A
311 lines • 9.57 kB
TypeScript
/**
* Base MCP Server with Agent Integration
* Provides common functionality for all MCP servers in the agent ecosystem
*/
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { ServiceNowClient } from '../../utils/servicenow-client.js';
import { ServiceNowOAuth } from '../../utils/snow-oauth.js';
import { Logger } from '../../utils/logger.js';
import { AgentContextProvider } from './agent-context-provider.js';
import { MCPMemoryManager, AgentContext } from './mcp-memory-manager.js';
import { MCPResourceManager } from './mcp-resource-manager.js';
export interface MCPToolResult {
[key: string]: unknown;
content: Array<{
type: string;
text?: string;
data?: any;
}>;
metadata?: {
agent_id?: string;
session_id?: string;
duration_ms?: number;
artifacts_created?: string[];
};
_meta?: {
[key: string]: unknown;
};
}
export declare abstract class BaseMCPServer {
protected server: Server;
protected client: ServiceNowClient;
protected oauth: ServiceNowOAuth;
protected logger: Logger;
protected contextProvider: AgentContextProvider;
protected memory: MCPMemoryManager;
protected resourceManager: MCPResourceManager;
constructor(name: string, version?: string);
/**
* Execute a tool with agent context tracking
*/
protected executeWithAgentContext<T>(toolName: string, args: any, operation: (context: AgentContext) => Promise<T>): Promise<MCPToolResult>;
/**
* MANDATORY authentication and connection validation before ServiceNow operations
*/
protected validateServiceNowConnection(): Promise<{
success: boolean;
error?: string;
}>;
/**
* Check authentication with proper error handling (deprecated - use validateServiceNowConnection)
*/
protected checkAuthentication(): Promise<boolean>;
/**
* Create standard authentication error response with detailed instructions
*/
protected createAuthenticationError(error?: string): MCPToolResult;
/**
* Smart artifact discovery - check for existing artifacts before creating new ones
*/
protected discoverExistingArtifacts(type: string, name: string, searchTerms?: string[]): Promise<{
found: boolean;
artifacts: any[];
suggestions: string[];
}>;
/**
* Ensure active Update Set for tracking changes
*/
protected ensureUpdateSet(context: AgentContext, purpose?: string): Promise<string | null>;
/**
* Automatically track artifact in Update Set
*/
protected trackArtifact(sysId: string, type: string, name: string, updateSetId?: string): Promise<void>;
/**
* Get ServiceNow table name for artifact type
*/
protected getTableForType(type: string): string;
/**
* Report progress during long operations
*/
protected reportProgress(context: AgentContext, progress: number, phase: string): Promise<void>;
/**
* Store artifact with agent tracking
*/
protected storeArtifact(context: AgentContext, artifact: {
sys_id: string;
type: string;
name: string;
description?: string;
config?: any;
update_set_id?: string;
}): Promise<void>;
/**
* Notify handoff to another agent
*/
protected notifyHandoff(context: AgentContext, to_agent: string, artifact_info: {
type: string;
sys_id: string;
next_steps: string[];
}): Promise<void>;
/**
* Request Queen intervention for issues
*/
protected requestQueenIntervention(context: AgentContext, issue: {
type: string;
priority: 'low' | 'medium' | 'high' | 'critical';
description: string;
attempted_solutions?: string[];
}): Promise<void>;
/**
* Get session context for coordination
*/
protected getSessionContext(session_id: string): Promise<any>;
/**
* Create success response with metadata
*/
protected createSuccessResponse(message: string, data?: any, metadata?: any): MCPToolResult;
/**
* Create error response with metadata
*/
protected createErrorResponse(message: string, error?: any, metadata?: any): MCPToolResult;
/**
* Enhanced error handling with intelligent recovery strategies
*/
protected handleServiceNowError(error: any, operation: string, context: AgentContext, fallbackOptions?: {
enableRetry?: boolean;
enableScopeEscalation?: boolean;
enableManualSteps?: boolean;
}): Promise<MCPToolResult>;
/**
* Categorize error for appropriate recovery strategy
*/
private categorizeError;
/**
* Handle authentication errors with automatic recovery
*/
private handleAuthenticationError;
/**
* Handle permission errors with scope escalation
*/
private handlePermissionError;
/**
* Handle network errors with intelligent retry
*/
private handleNetworkError;
/**
* Handle validation errors with correction suggestions
*/
private handleValidationError;
/**
* Handle scope errors with automatic fallback
*/
private handleScopeError;
/**
* Handle generic errors with comprehensive guidance
*/
private handleGenericError;
/**
* Helper methods for error handling
*/
private extractErrorCode;
private extractFieldInfoFromError;
private generateRecoveryOptions;
private escalateToGlobalScope;
/**
* Determine required roles based on operation type
*/
private determineRequiredRoles;
/**
* Determine required OAuth scopes based on operation type
*/
private determineRequiredOAuthScopes;
/**
* Enhanced role assignment with better validation
*/
private attemptEnhancedRoleAssignment;
/**
* Attempt OAuth scope elevation
*/
private attemptOAuthScopeElevation;
/**
* Enhanced deployment context extraction
*/
private extractEnhancedDeploymentContext;
/**
* Analyze error for global scope strategy
*/
private analyzeErrorForGlobalScopeStrategy;
/**
* Validate global scope deployment permissions
*/
private validateGlobalScopePermissions;
/**
* Determine global deployment strategy
*/
private determineGlobalDeploymentStrategy;
/**
* Attempt automatic role assignment (usually requires admin privileges)
*/
private attemptRoleAssignment;
private fallbackToGlobalScope;
/**
* Extract deployment context from operation and context
*/
private extractDeploymentContext;
/**
* Extract artifact type from operation string
*/
private extractArtifactType;
/**
* Extract artifact name from operation string
*/
private extractArtifactName;
/**
* Deploy widget in global scope
*/
private deployWidgetInGlobalScope;
/**
* Deploy flow in global scope
*/
private deployFlowInGlobalScope;
/**
* Deploy script include in global scope
*/
private deployScriptInGlobalScope;
/**
* Deploy business rule in global scope
*/
private deployBusinessRuleInGlobalScope;
/**
* Generic global scope deployment for unknown artifact types
*/
private deployGenericArtifactInGlobalScope;
/**
* Update context with global deployment information
*/
private updateContextWithGlobalDeployment;
/**
* Enhanced context update with deployment tracking
*/
private updateContextWithEnhancedGlobalDeployment;
/**
* Enhanced widget deployment in global scope
*/
private deployWidgetInGlobalScopeEnhanced;
/**
* Enhanced flow deployment in global scope
*/
private deployFlowInGlobalScopeEnhanced;
/**
* Enhanced script deployment in global scope
*/
private deployScriptInGlobalScopeEnhanced;
/**
* Enhanced business rule deployment in global scope
*/
private deployBusinessRuleInGlobalScopeEnhanced;
/**
* Enhanced table deployment in global scope
*/
private deployTableInGlobalScopeEnhanced;
/**
* Enhanced generic artifact deployment in global scope
*/
private deployGenericArtifactInGlobalScopeEnhanced;
/**
* Handle application scope fallback
*/
private handleApplicationScopeFallback;
/**
* Attempt generic global scope deployment
*/
private attemptGenericGlobalScopeDeployment;
/**
* Validate global deployment
*/
private validateGlobalDeployment;
/**
* Generate global scope recommendations
*/
private generateGlobalScopeRecommendations;
/**
* Analyze global scope failure
*/
private analyzeGlobalScopeFailure;
private delay;
/**
* Handle mock data removal - ensure real operations only
*/
protected assertNoMockData(operation: string): void;
/**
* List available MCP resources
*/
protected listMCPResources(): Promise<any>;
/**
* Read a specific MCP resource by URI
*/
protected readMCPResource(uri: string): Promise<any>;
/**
* Get resource manager statistics
*/
protected getMCPResourceStats(): any;
/**
* Clear resource cache (useful for development)
*/
protected clearMCPResourceCache(): void;
/**
* Start the MCP server
*/
start(): Promise<void>;
}
//# sourceMappingURL=base-mcp-server.d.ts.map