MCP instrumentation retries synchronously failing handlers
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 68/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- typescript
- Domaine
- observability
Piste de recherche
Start at the wrapMcpServerWithSentry entry point and reproduce the synchronous handler example with the official MCP SDK. Trace the inner and outer wrappers to confirm why the same error causes a second callback invocation. Done means a throwing synchronous handler runs once and its error reaches the MCP client, with coverage for tools, resources, or prompts as appropriate.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Wrapping an MCP server with wrapMcpServerWithSentry can execute a synchronous handler twice when its first invocation throws. This repeats application side effects. If the second invocation succeeds, the MCP client receives that success instead of the original failure.
Reproduced on develop at ceb8517523 with the official TypeScript SDK 1.30.0 and 2.0.0 clients and servers, including in a deployed Cloudflare Worker. Tools, resources, and prompts registered after wrapping are affected; resource callbacks registered before wrapping are also affected. Unwrapped callbacks and asynchronous rejections execute once.
For example, register this tool after wrapping, then call it once through an MCP client:
let calls = 0;
const server = wrapMcpServerWithSentry(new McpServer({ name: 'example', version: '1.0.0' }));
server.registerTool('example', {}, () => {
calls += 1;
if (calls === 1) {
throw new Error('operation failed');
}
return { content: [{ type: 'text', text: 'unexpected retry' }] };
});
Expected: calls === 1 and the tool error reaches the client. Actual: calls === 2 and the client receives unexpected retry as a successful result.
The inner handler wrapper captures and rethrows the application error. The outer fallback catches that same error and invokes the original callback again, treating it as an instrumentation failure.
- Langage dominant
- TypeScript
- Étoiles
- 8.7k
- Forks
- 1.9k
- Merge moyen
- 2 j 10 min
- PR mergées (30 j)
- 560
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de getsentry/sentry-javascript
-
javascript
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
getsentry/sentry-javascript#24200 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
javascript Task
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
getsentry/sentry-javascript#24134 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Cloudflare Workers javascript Tests
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
getsentry/sentry-javascript#24051 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Bug Bun javascript
Difficulté 2/5 1-3 heures Accessibilité débutants 92/100
getsentry/sentry-javascript#24045 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
vercel-edge: Missing exportsOuvertejavascript
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
getsentry/sentry-javascript#24043 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de getsentry/sentry-javascript
Issues similaires
-
Mend: dependency security vulnerability untriaged
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
opensearch-project/security-dashboards-plugin#2545 ·
Les mainteneurs répondent en général sous 1 jour
-
Add: Dream TR SDOuvertecheck:passed streams:add
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
doctor integrity sample scans soft-deleted pages on Postgres (batch path has no deleted_at filter)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
SocialGouv/egapro#4672 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
area:agents area:tui bug
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
anthropics/claude-code#98358 ·
Les mainteneurs répondent en général sous 1 jour