diff --git a/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap b/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap index 6cfcc62d2..57d751bf6 100644 --- a/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap +++ b/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap @@ -6903,6 +6903,7 @@ description = "AgentCore MCP Server" readme = "README.md" requires-python = ">=3.10" dependencies = [ + "aws-opentelemetry-distro", "mcp >= 1.19.0", ] diff --git a/src/assets/python/mcp/standalone/base/pyproject.toml b/src/assets/python/mcp/standalone/base/pyproject.toml index 824f612c6..11844061a 100644 --- a/src/assets/python/mcp/standalone/base/pyproject.toml +++ b/src/assets/python/mcp/standalone/base/pyproject.toml @@ -9,6 +9,7 @@ description = "AgentCore MCP Server" readme = "README.md" requires-python = ">=3.10" dependencies = [ + "aws-opentelemetry-distro", "mcp >= 1.19.0", ] diff --git a/src/cli/commands/import/actions.ts b/src/cli/commands/import/actions.ts index b1bbdc821..5e382cb7f 100644 --- a/src/cli/commands/import/actions.ts +++ b/src/cli/commands/import/actions.ts @@ -43,7 +43,7 @@ function toAgentEnvSpec(agent: ParsedStarterToolkitConfig['agents'][0]): AgentEn runtimeVersion: (agent.runtimeVersion ?? 'PYTHON_3_12') as any, protocol: agent.protocol, networkMode: agent.networkMode, - instrumentation: { enableOtel: agent.protocol === 'MCP' ? false : agent.enableOtel }, + instrumentation: { enableOtel: agent.enableOtel }, }; /* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any */ diff --git a/src/cli/operations/agent/generate/__tests__/schema-mapper.test.ts b/src/cli/operations/agent/generate/__tests__/schema-mapper.test.ts index a96db26a9..03328f8ff 100644 --- a/src/cli/operations/agent/generate/__tests__/schema-mapper.test.ts +++ b/src/cli/operations/agent/generate/__tests__/schema-mapper.test.ts @@ -192,6 +192,16 @@ describe('mapGenerateConfigToRenderConfig', () => { const result = await mapGenerateConfigToRenderConfig(config, []); expect(result.memoryProviders[0]!.strategies).toEqual(['SEMANTIC', 'USER_PREFERENCE', 'SUMMARIZATION', 'EPISODIC']); }); + + it('enables OTel for MCP Python and disables it for MCP TypeScript', async () => { + const python = await mapGenerateConfigToRenderConfig({ ...baseConfig, protocol: 'MCP', language: 'Python' }, []); + const typescript = await mapGenerateConfigToRenderConfig( + { ...baseConfig, protocol: 'MCP', language: 'TypeScript' }, + [] + ); + expect(python.enableOtel).toBe(true); + expect(typescript.enableOtel).toBe(false); + }); }); describe('mapGenerateConfigToAgent protocol mode', () => { @@ -205,6 +215,16 @@ describe('mapGenerateConfigToAgent protocol mode', () => { expect(result).not.toHaveProperty('modelProvider'); }); + it('does not force OTel off for MCP Python (schema default enables it)', () => { + const result = mapGenerateConfigToAgent({ ...baseConfig, protocol: 'MCP', language: 'Python' }); + expect(result).not.toHaveProperty('instrumentation'); + }); + + it('keeps OTel off for MCP TypeScript', () => { + const result = mapGenerateConfigToAgent({ ...baseConfig, protocol: 'MCP', language: 'TypeScript' }); + expect(result.instrumentation).toEqual({ enableOtel: false }); + }); + it('sets protocol to HTTP explicitly', () => { const httpConfig: GenerateConfig = { ...baseConfig, diff --git a/src/cli/operations/agent/generate/schema-mapper.ts b/src/cli/operations/agent/generate/schema-mapper.ts index e9584e248..9872ee706 100644 --- a/src/cli/operations/agent/generate/schema-mapper.ts +++ b/src/cli/operations/agent/generate/schema-mapper.ts @@ -156,7 +156,7 @@ export function mapGenerateConfigToAgent(config: GenerateConfig): AgentEnvSpec { } : {}), ...buildFilesystemConfigurations(config.sessionStorageMountPath, config.efsAccessPoints, config.s3AccessPoints), - ...(protocol === 'MCP' && { instrumentation: { enableOtel: false } }), + ...(protocol === 'MCP' && config.language === 'TypeScript' && { instrumentation: { enableOtel: false } }), }; } @@ -269,7 +269,7 @@ export async function mapGenerateConfigToRenderConfig( ): Promise { const isMcp = config.protocol === 'MCP'; const gatewayProviders = isMcp ? [] : await mapGatewaysToGatewayProviders(); - const enableOtel = !isMcp && config.language !== 'TypeScript'; + const enableOtel = config.language !== 'TypeScript'; return { name: config.projectName,