Skip to content

Commit ec21252

Browse files
dcramerclaude
andauthored
fix(cloudflare): move Sentry flush from onToolComplete to main handler (#622)
Refactors the Sentry flush approach to use the main OAuth provider wrapper instead of the onToolComplete callback. This ensures Sentry logs are flushed for all requests, not just MCP tool executions. Changes: - Remove onToolComplete callback from buildServer - Remove duplicate Sentry.flush after createMcpHandler - Add Sentry.flush in wrappedOAuthProvider for all requests - Rename corsWrappedOAuthProvider to wrappedOAuthProvider for brevity Co-authored-by: Claude Code <noreply@anthropic.com>
1 parent af6ca11 commit ec21252

2 files changed

Lines changed: 6 additions & 13 deletions

File tree

‎packages/mcp-cloudflare/src/server/index.ts‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const addCorsHeaders = (response: Response): Response => {
3333
// Wrap OAuth Provider to restrict CORS headers on public metadata endpoints
3434
// OAuth Provider v0.0.12 adds overly permissive CORS (allows all methods/headers).
3535
// We override with secure headers for .well-known endpoints and add CORS to robots.txt/llms.txt.
36-
const corsWrappedOAuthProvider = {
36+
const wrappedOAuthProvider = {
3737
fetch: async (request: Request, env: Env, ctx: ExecutionContext) => {
3838
const url = new URL(request.url);
3939

@@ -85,6 +85,9 @@ const corsWrappedOAuthProvider = {
8585

8686
const response = await oAuthProvider.fetch(request, env, ctx);
8787

88+
// Flush buffered logs before Worker terminates
89+
ctx.waitUntil(Sentry.flush(2000));
90+
8891
// Add CORS headers to public metadata endpoints
8992
if (isPublicMetadataEndpoint(url.pathname)) {
9093
return addCorsHeaders(response);
@@ -96,5 +99,5 @@ const corsWrappedOAuthProvider = {
9699

97100
export default Sentry.withSentry(
98101
getSentryConfig,
99-
corsWrappedOAuthProvider,
102+
wrappedOAuthProvider,
100103
) satisfies ExportedHandler<Env>;

‎packages/mcp-cloudflare/src/server/lib/mcp-handler.ts‎

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
* - No session state required - each request is independent
99
*/
1010

11-
import * as Sentry from "@sentry/cloudflare";
1211
import { experimental_createMcpHandler as createMcpHandler } from "agents/mcp";
1312
import { buildServer } from "@sentry/mcp-server/server";
1413
import {
@@ -169,21 +168,12 @@ const mcpHandler: ExportedHandler<Env> = {
169168
const server = buildServer({
170169
context: serverContext,
171170
tools: isAgentMode ? agentTools : undefined,
172-
onToolComplete: () => {
173-
// Flush Sentry events after tool execution
174-
ctx.waitUntil(Sentry.flush(2000));
175-
},
176171
});
177172

178173
// Run MCP handler - context already captured in closures
179-
const response = await createMcpHandler(server, {
174+
return createMcpHandler(server, {
180175
route: url.pathname,
181176
})(request, env, ctx);
182-
183-
// Flush buffered logs before Worker terminates
184-
ctx.waitUntil(Sentry.flush(2000));
185-
186-
return response;
187177
},
188178
};
189179

0 commit comments

Comments
 (0)