From 02c009a5515dde88d0e7df6b3ba65e70c460ab76 Mon Sep 17 00:00:00 2001 From: Christian Gick Date: Wed, 18 Feb 2026 12:20:53 +0200 Subject: [PATCH] feat(CF-1354): Add withSentryTransaction to tool handlers Wrap CallToolRequest handler with withSentryTransaction for per-tool tracing. Remove broken $(vault) DSN from .env. Co-Authored-By: Claude Opus 4.6 --- .env | 2 +- src/index.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.env b/.env index 6c0d3e6..6ee3d0c 100644 --- a/.env +++ b/.env @@ -11,7 +11,7 @@ # - PostgreSQL integration for database error tracking # # Created: 2026-01-29 -SENTRY_DSN=$(vault get sentry.dsn.mcp-servers) +# SENTRY_DSN provided via ~/.claude.json env (dotenv can't expand shell commands) SENTRY_ENVIRONMENT=production SENTRY_TRACE_SAMPLE_RATE=0.1 SENTRY_PROFILE_SAMPLE_RATE=0.01 diff --git a/src/index.ts b/src/index.ts index 1307dfd..da224ad 100644 --- a/src/index.ts +++ b/src/index.ts @@ -19,7 +19,7 @@ const envPath = join(__dirname, '..', '.env'); const result = dotenv.config({ path: envPath, override: true }); // Initialize Sentry for error tracking -import { initSentry } from './sentry.js'; +import { initSentry, withSentryTransaction } from './sentry.js'; initSentry(process.env.SENTRY_ENVIRONMENT || 'production'); if (result.error) { @@ -99,6 +99,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({ server.setRequestHandler(CallToolRequestSchema, async (request) => { const { name, arguments: args } = request.params; + return withSentryTransaction(name, async () => { try { let result: string; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -543,6 +544,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => { isError: true, }; } + }); }); // Main entry point