Permet aux MCP servers de pousser des événements et de réveiller les agents IA abonnés lorsqu'une tâche applicative spécifique est terminée.
Aussi connu sous wakeshift/wakeshift-node, @wakeshift/sdk
- Étoiles
- 0
- Outils
- —
- Téléchargements, 30 jours
- —
- Dernière version
- —
- Dernier commit
- 8 nov. 2026
- Licence
- Apache-2.0
Qu'est-ce que Wakeshift MCP ?
Wakeshift est un serveur MCP. Permet aux MCP servers de pousser des événements et de réveiller les agents IA abonnés lorsqu'une tâche applicative spécifique est terminée.
Résumé généré à partir du README du projet
À propos du MCP server Wakeshift
wakeshift-node permet de réveiller des agents IA tels que Claude Code, Codex ou ChatGPT lorsque des tâches de fond sont terminées. Les développeurs utilisent ce SDK pour permettre aux MCP servers de pousser des événements vers des conversations abonnées, garantissant qu'un agent est notifié immédiatement dès qu'une tâche applicative spécifique est achevée. Cela fonctionne en définissant des événements et en les attachant aux outils via la méthode registerTool.
L'intégration nécessite une variable d'environnement WAKESHIFT_KEY pour activer le service. Si la clé est manquante, le serveur continue de fonctionner normalement sans envoyer de notifications. Le système prend en charge divers environnements, notamment Node.js 22.12 ou version ultérieure, Cloudflare Workers avec le flag nodejs_compat, et Mastra. Il propose également un mécanisme de watch pour les API dépourvues de webhooks, permettant au serveur d'interroger les mises à jour de statut toutes les quelques secondes jusqu'à la fin d'une tâche.
Cet outil se distingue par sa gestion automatique du cycle de vie des abonnements. Il peut utiliser un flag once pour mettre fin à un abonnement après une seule livraison et gère la complexité du mappage des arguments d'outils vers des déclencheurs d'événements spécifiques. Il garantit que seule la conversation ayant initié une tâche spécifique reçoit la mise à jour correspondante.
Ce que vous pouvez faire avec
- 1Notifier les agents après un crawl webUn agent IA peut lancer le crawl d'un site web et recevoir une mise à jour automatique lorsque le processus est terminé.
- 2Interroger des API sans webhooksLes développeurs peuvent utiliser la fonction watch pour vérifier périodiquement le statut d'une API externe jusqu'à ce qu'une tâche soit accomplie.
- 3Automatiser les workflows d'agents pilotés par les événementsVous pouvez définir des événements personnalisés qui déclenchent l'envoi de payloads spécifiques vers le client IA.
Extrait du README du projet. Chaque cas d'utilisation est vérifié par rapport à une citation du document.
Comment installer Wakeshift MCP
Formats vérifiés le 10 nov. 2026Ajouter à CursorAjouter à GooseInstaller Wakeshift MCP dans Claude Code
$ claude mcp add wakeshift-node -- npx -y @wakeshift/sdkInstaller Wakeshift MCP dans Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Installer Wakeshift MCP dans VS Code
.vscode/mcp.json
{
"servers": {
"wakeshift-node": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Installer Wakeshift MCP dans VS Code CLI
$ code --add-mcp '{"name":"wakeshift-node","type":"stdio","command":"npx","args":["-y","@wakeshift/sdk"]}'Installer Wakeshift MCP dans Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Installer Wakeshift MCP dans Codex
$ codex mcp add wakeshift-node -- npx -y @wakeshift/sdkInstaller Wakeshift MCP dans Codex config.toml
~/.codex/config.toml
[mcp_servers.wakeshift-node] command = "npx" args = ["-y", "@wakeshift/sdk"]
Installer Wakeshift MCP dans Gemini CLI
$ gemini mcp add -s user wakeshift-node npx -- -y @wakeshift/sdkInstaller Wakeshift MCP dans Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Vérifications automatisées
Exécuté le 15 nov. 2026Rapport complet →A passé nos vérifications automatisées. Il ne s'agit pas d'un audit de sécurité : lisez le code et donnez au serveur l'accès le plus restreint dont il a besoin. Fonctionnement des vérifications
- Dépôt source lié et accessiblewakeshift/wakeshift-node is public and reachablegithub.com/wakeshift/wakeshift-node ↗Réussi
- Le nom du package correspond au dépôt source@wakeshift/sdk names wakeshift/wakeshift-node as sourcenpmjs.com/package/@wakeshift/sdk ↗Réussi
- Provenance du build (attestation Sigstore)Sigstore attestation for @wakeshift/sdknpmjs.com/package/@wakeshift/sdk/v/0.11.1#provenance ↗Réussi
- Licence open source (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗Réussi
- Commit ou version publiée au cours de l'année écouléeLast commit or release 2026-11-08github.com/wakeshift/wakeshift-node ↗Réussi
- OpenSSF ScorecardNon vérifié
- Nom du package non proche d'un package populaireNo popular package one edit away from @wakeshift/sdkRéussi
- Aucun avis critique dans le package ou ses dépendancesNon vérifié
- Aucune instruction cachée destinée au modèle0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersRéussi
- Les outils destructifs sont étiquetésNon vérifié
- Le point de terminaison distant répond à la poignée de main MCPNon vérifié
README
Voir sur GitHub@wakeshift/sdk
Wakeshift lets an MCP server wake the AI agents that use it. Let agents subscribe to things in your app: define your events, add one argument to the tool that starts the work, and Wakeshift wakes the conversation that asked, whether it's Claude Code, Codex, ChatGPT or another.
Install
npm install @wakeshift/sdk @modelcontextprotocol/server zod
On @modelcontextprotocol/sdk 1.x, install @wakeshift/sdk @modelcontextprotocol/sdk zod instead.
Quickstart
A crawler that wakes the conversation that started a crawl:
import { McpServer, createMcpHandler } from "@modelcontextprotocol/server"
import { z } from "zod"
import { Wakeshift } from "@wakeshift/sdk"
const wake = new Wakeshift() // reads WAKESHIFT_KEY; without one, Wakeshift is off and the server runs as before
const crawlFinished = wake.defineEvent("crawl.finished", {
description: "A crawl finished",
args: z.object({ job: z.string() }),
payload: z.object({ status: z.string(), pages: z.number() }),
})
export const handler = createMcpHandler(() => {
const server = new McpServer({ name: "crawler", version: "1.0.0" })
const attached = wake.attach(server)
attached.registerTool(
"start_crawl",
{ description: "Crawl a site.", inputSchema: z.object({ url: z.string() }), subscribes: [crawlFinished] },
async ({ url }, ctx, call) => {
const job = crypto.randomUUID() // your tool minted the ID, so only this conversation can know it
await call.subscribe(crawlFinished, { job }, { once: true })
startCrawl(url, job)
return `Crawl ${job} started.`
},
)
return server
})
// When the crawl finishes, in your worker or webhook handler:
export async function onCrawlFinished(job: string, pages: number) {
await crawlFinished.emit({ job }, { status: "completed", pages })
}
What just happened:
- The key comes from
WAKESHIFT_KEY. Without one, Wakeshift is off: every call still works, nothing is sent, and your server runs as it would without it. Construction makes no network request. registerToolis your MCP SDK's own, withsubscribesadded andcallappended to the handler. Your input schema stays yours: Wakeshift adds its arguments intools/listand strips them before your code runs.- Only your tools can subscribe to
crawl.finished, because it declares neitherpersonal,authorizenorpublic. That's the safe default for IDs your tool mints. onceends the subscription after one delivery, and a call that fails ends what it subscribed.emitwakes every conversation subscribed with those arguments. Withouttext, the agent reads the description and the arguments.
No webhook? Watch
If your API can't call you back, check its status until the work is done, and emit once:
crawlFinished.watch({ job }, async ({ signal }) => {
const s = await api.status(job, { signal })
return s.done ? { status: s.state, pages: s.pages } : undefined // undefined: keep waiting
}, { every: "10s", timeout: "2h" })
It runs in this process (a restart or a serverless freeze ends it), at most 10 checks at once, and emits once even if a webhook got there first with the same id. To start it however the subscription was made, call it from the event's onSubscribe: ({ args }) => crawlFinished.watch(args, check). await wake.close() stops every watch on shutdown.
Unit tests
import { createTestClient, createToolCall, withCall } from "@wakeshift/sdk/testing"
const wake = createTestClient() // enabled and offline: records wake.emits and wake.subscriptions
const call = createToolCall() // a typed ToolCall for a handler you call directly
await startCrawlHandler({ url: "https://x.test" }, ctx, call)
assert.equal(call.subscriptions[0].event, "crawl.finished")
await withCall(wake, call, () => wrappedHandler()) // wake.currentCall() returns call inside
To keep a real client off in tests whatever the environment says, construct it with new Wakeshift({ key: "" }).
Signing people in, webhooks, tools registered elsewhere (wrap and wake.currentCall()), testing, and who may subscribe: wakeshift.ai/docs.
Compatibility
| Node | 22.12 or later (ES modules; CommonJS loads it with require()). Node 20.19 or later runs it too (20.x is past end of life): like 22.12, it has require() of ES modules on by default, which attach on @modelcontextprotocol/sdk 1.x needs |
| MCP SDKs | @modelcontextprotocol/server 2.3 or later, or @modelcontextprotocol/sdk 1.23 or later |
| zod | 3.25 or later, or 4 |
| TypeScript | 5.8 or later; for CommonJS, module: nodenext |
| Cloudflare Workers | with the nodejs_compat flag |
| Mastra | @mastra/mcp 2.7 or later, through @wakeshift/sdk/mastra |
| A runtime with no MCP SDK server (xmcp, hand-rolled JSON-RPC) | @wakeshift/sdk/tools |
| Unit tests | @wakeshift/sdk/testing |
Questions sur Wakeshift MCP
Comment ajouter Wakeshift MCP à Claude Code ?
Exécutez claude mcp add wakeshift-node -- npx -y @wakeshift/sdk dans votre terminal. Ajoutez --scope user pour le rendre disponible dans tous les projets.
Comment ajouter Wakeshift MCP à Cursor ?
Ouvrez ~/.cursor/mcp.json et ajoutez le serveur sous mcpServers, avec la configuration Cursor indiquée dans la section d'installation ci-dessus.
Comment activer Wakeshift ?
Wakeshift est activé en fournissant une WAKESHIFT_KEY. Sans cette clé, le serveur fonctionne normalement sans envoyer d'événements.
Puis-je utiliser Wakeshift si mon API ne supporte pas les webhooks ?
Oui, vous pouvez utiliser la méthode watch pour interroger l'état de votre API jusqu'à ce que le travail soit terminé, puis émettre l'événement.
Que se passe-t-il si un appel d'outil échoue ?
Si un appel d'outil échoue, tout abonnement effectué lors de cet appel est automatiquement interrompu.