Skip to content

Commit 117601e

Browse files
Merge pull request #33 from modelcontextprotocol/jerome/init-log
Log client capabilities and extensions on initialize requests
2 parents f48f411 + 94ffb79 commit 117601e

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

src/modules/example-apps/index.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/
1616
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1717
import { ITokenValidator } from '../../interfaces/auth-validator.js';
1818
import { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';
19+
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
1920

2021
// Import createServer from each example package (compiled JS)
2122
// All packages are published on the public npm registry
@@ -115,6 +116,24 @@ export class ExampleAppsModule {
115116
}
116117

117118
try {
119+
// Log initialization requests to inspect client capabilities/extensions
120+
if (isInitializeRequest(req.body)) {
121+
const initParams = req.body?.params;
122+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
123+
const capabilities = initParams?.capabilities as Record<string, any> | undefined;
124+
console.log(JSON.stringify({
125+
severity: 'INFO',
126+
message: `=== MCP INITIALIZE REQUEST (${slug}) ===`,
127+
timestamp: new Date().toISOString(),
128+
slug,
129+
clientInfo: initParams?.clientInfo,
130+
protocolVersion: initParams?.protocolVersion,
131+
capabilities,
132+
hasExtensions: !!capabilities?.extensions,
133+
extensions: capabilities?.extensions,
134+
}));
135+
}
136+
118137
// Create fresh server and transport for each request (stateless mode)
119138
const server = createServer();
120139
const transport = new StreamableHTTPServerTransport({

src/modules/mcp/handlers/shttp.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,16 @@ export async function handleStreamableHTTP(req: Request, res: Response) {
105105
shttpTransport = await getShttpTransport(sessionId, onsessionclosed, isGetRequest);
106106
} else if (isInitializeRequest(req.body)) {
107107
// New initialization request - use JSON response mode
108-
logger.debug('Processing initialize request', {
109-
body: req.body,
108+
const initParams = req.body?.params;
109+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
110+
const capabilities = initParams?.capabilities as Record<string, any> | undefined;
111+
logger.info('=== MCP INITIALIZE REQUEST ===', {
110112
userId,
111-
headerSessionId: sessionId, // This is the sessionId from header (should be undefined for init)
112-
isInitializeRequest: true
113+
clientInfo: initParams?.clientInfo,
114+
protocolVersion: initParams?.protocolVersion,
115+
capabilities,
116+
hasExtensions: !!capabilities?.extensions,
117+
extensions: capabilities?.extensions,
113118
});
114119

115120
const onsessioninitialized = async (sessionId: string) => {

0 commit comments

Comments
 (0)