Visitar URL original
ref(core): Set MCP initialize attributes at span start · getsentry/sentry-javascript@074bcf2 · GitHub
Skip to content

Commit 074bcf2

Browse files
ref(core): Set MCP initialize attributes at span start
1 parent 3ee165d commit 074bcf2

2 files changed

Lines changed: 17 additions & 15 deletions

File tree

‎packages/core/src/integrations/mcp-server/transport.ts‎

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -103,16 +103,13 @@ export function wrapTransportOnMessage(transport: MCPTransport, options: McpServ
103103
if (oauthClientName) {
104104
spanConfig.attributes[MCP_AUTH_CLIENT_NAME] = oauthClientName;
105105
}
106-
const span = startInactiveSpan({ ...spanConfig, links });
107-
108106
if (request.method === 'initialize' && messageSessionData) {
109-
span.setAttributes({
110-
...buildClientAttributesFromInfo(messageSessionData.clientInfo),
111-
...(messageSessionData.protocolVersion && {
112-
[MCP_PROTOCOL_VERSION]: messageSessionData.protocolVersion,
113-
}),
114-
});
107+
Object.assign(spanConfig.attributes, buildClientAttributesFromInfo(messageSessionData.clientInfo));
108+
if (messageSessionData.protocolVersion) {
109+
spanConfig.attributes[MCP_PROTOCOL_VERSION] = messageSessionData.protocolVersion;
110+
}
115111
}
112+
const span = startInactiveSpan({ ...spanConfig, links });
116113

117114
storeSpanForRequest(transport, request.id, span, request.method, resolvedOptions);
118115

‎packages/core/test/lib/integrations/mcp-server/transportInstrumentation.test.ts‎

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -887,13 +887,16 @@ describe('MCP Server Transport Instrumentation', () => {
887887
{},
888888
);
889889

890-
expect(mockSpan.setAttributes).toHaveBeenCalledWith(
890+
expect(startInactiveSpanSpy).toHaveBeenCalledWith(
891891
expect.objectContaining({
892-
'mcp.client.name': 'test-client',
893-
'mcp.client.version': '1.0.0',
894-
'mcp.protocol.version': '2025-06-18',
892+
attributes: expect.objectContaining({
893+
'mcp.client.name': 'test-client',
894+
'mcp.client.version': '1.0.0',
895+
'mcp.protocol.version': '2025-06-18',
896+
}),
895897
}),
896898
);
899+
expect(mockSpan.setAttributes).not.toHaveBeenCalled();
897900
});
898901

899902
it('should add server info to initialize span on response', async () => {
@@ -1360,10 +1363,12 @@ describe('MCP Server Transport Instrumentation', () => {
13601363
});
13611364

13621365
// Span should have client and server info attributes
1363-
expect(mockSpan.setAttributes).toHaveBeenCalledWith(
1366+
expect(startInactiveSpanSpy).toHaveBeenCalledWith(
13641367
expect.objectContaining({
1365-
'mcp.client.name': 'test-client',
1366-
'mcp.client.version': '1.0.0',
1368+
attributes: expect.objectContaining({
1369+
'mcp.client.name': 'test-client',
1370+
'mcp.client.version': '1.0.0',
1371+
}),
13671372
}),
13681373
);
13691374
expect(mockSpan.setAttributes).toHaveBeenCalledWith(

0 commit comments

Comments
 (0)