-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy pathserver.ts
More file actions
36 lines (32 loc) · 1.81 KB
/
server.ts
File metadata and controls
36 lines (32 loc) · 1.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { ConformanceCheck, CheckStatus } from '../types.js';
export function createServerInitializationCheck(initializeResponse: any, expectedSpecVersion: string = '2025-06-18'): ConformanceCheck {
const result = initializeResponse?.result;
const protocolVersion = result?.protocolVersion;
const serverInfo = result?.serverInfo;
const capabilities = result?.capabilities;
const errors: string[] = [];
if (!initializeResponse?.jsonrpc) errors.push('Missing jsonrpc field');
if (!initializeResponse?.id) errors.push('Missing id field');
if (!result) errors.push('Missing result field');
if (!protocolVersion) errors.push('Missing protocolVersion in result');
if (protocolVersion !== expectedSpecVersion) errors.push(`Protocol version mismatch: expected ${expectedSpecVersion}, got ${protocolVersion}`);
if (!serverInfo) errors.push('Missing serverInfo in result');
if (!serverInfo?.name) errors.push('Missing server name in serverInfo');
if (!serverInfo?.version) errors.push('Missing server version in serverInfo');
if (capabilities === undefined) errors.push('Missing capabilities in result');
const status: CheckStatus = errors.length === 0 ? 'SUCCESS' : 'FAILURE';
return {
id: 'mcp-server-initialization',
name: 'MCPServerInitialization',
description: 'Validates that MCP server properly responds to initialize request',
status,
timestamp: new Date().toISOString(),
specReferences: [{ id: 'MCP-Lifecycle', url: 'https://modelcontextprotocol.io/specification/2025-06-18/basic/lifecycle' }],
details: {
expectedSpecVersion,
response: initializeResponse
},
errorMessage: errors.length > 0 ? errors.join('; ') : undefined,
logs: errors.length > 0 ? errors : undefined
};
}