mcp-server-tester-sse-http-stdio
Version:
MCP Server Tester with SSE support - Test MCP servers using HTTP, SSE, and STDIO transports
71 lines (70 loc) • 2.54 kB
TypeScript
/**
* SDK Error Detection System
* Captures and translates MCP SDK errors into compliance test results
*/
import type { McpClient } from '../../shared/core/mcp-client.js';
import { type DiagnosticResult, type ComplianceConfig, type TestSeverity, type IssueType } from './types.js';
export interface SdkErrorTest {
readonly name: string;
readonly description: string;
readonly category: 'base-protocol' | 'lifecycle' | 'server-features';
readonly feature: string;
readonly severity: TestSeverity;
readonly mcpSpecSection?: string;
readonly operation: (_client: McpClient) => Promise<unknown>;
readonly expectsError?: boolean;
readonly expectedErrorCode?: number;
}
export interface SdkErrorResult {
testName: string;
category: string;
status: 'passed' | 'failed' | 'skipped';
message: string;
severity: TestSeverity;
duration: number;
sdkError?: {
type: 'McpError' | 'JSONRPCError' | 'Error' | 'Unknown';
code?: number;
message: string;
data?: unknown;
};
issueType?: IssueType;
expected?: string;
actual?: string;
recommendations?: string[];
specLinks?: string[];
}
export declare class SdkErrorDetector {
/**
* Standard SDK error tests that replace manual validation
*/
static readonly STANDARD_TESTS: SdkErrorTest[];
/**
* Execute SDK error detection tests
*/
static executeTests(client: McpClient, config: ComplianceConfig, tests?: SdkErrorTest[]): Promise<SdkErrorResult[]>;
/**
* Execute a single SDK error detection test
*/
static executeTest(test: SdkErrorTest, client: McpClient, config: ComplianceConfig): Promise<SdkErrorResult>;
/**
* Analyze SDK error and categorize it
*/
static analyzeSdkError(error: unknown): SdkErrorResult['sdkError'];
/**
* Validate that an error matches expected criteria
*/
static validateExpectedError(sdkError: SdkErrorResult['sdkError'], expectedCode?: number): boolean;
/**
* Create a failure result for unexpected errors
*/
static createFailureResult(test: SdkErrorTest, sdkError: SdkErrorResult['sdkError'], duration: number): SdkErrorResult;
/**
* Create a timeout promise for test execution
*/
static createTimeoutPromise(testName: string, timeoutMs: number): Promise<never>;
/**
* Convert SDK error results to standard diagnostic results
*/
static convertTodiagnosticResults(sdkResults: SdkErrorResult[]): DiagnosticResult[];
}