Permite que los MCP servers envíen eventos y despierten a los agentes de IA suscritos cuando se completan tareas específicas de una aplicación.
También conocido como wakeshift/wakeshift-node, @wakeshift/sdk
- Stars
- 0
- Herramientas
- —
- Descargas, 30 días
- —
- Última versión
- —
- Último commit
- 8 nov 2026
- Licencia
- Apache-2.0
¿Qué es Wakeshift MCP?
Wakeshift es un MCP server. Permite que los MCP servers envíen eventos y despierten a los agentes de IA suscritos cuando se completan tareas específicas de una aplicación.
Resumen generado a partir del README del proyecto
Acerca del MCP server de Wakeshift
wakeshift-node permite despertar a agentes de IA como Claude Code, Codex o ChatGPT cuando terminan las tareas en segundo plano. Los desarrolladores utilizan este SDK para permitir que los MCP servers envíen eventos a conversaciones suscritas, asegurando que el agente reciba una notificación inmediata en cuanto una tarea específica de la aplicación se complete. Esto se logra definiendo eventos y vinculándolos a las herramientas mediante el método registerTool.
La integración requiere una variable de entorno WAKESHIFT_KEY para activar el servicio. Si la clave no está presente, el servidor seguirá funcionando normalmente sin enviar notificaciones. El sistema es compatible con varios entornos, incluyendo Node.js 22.12 o superior, Cloudflare Workers con el flag nodejs_compat y Mastra. También ofrece un mecanismo de watch para APIs que no cuentan con webhooks, lo que permite al servidor consultar actualizaciones de estado cada pocos segundos hasta que un trabajo finalice.
Esta herramienta se diferencia de otras porque gestiona automáticamente el ciclo de vida de la suscripción. Puede utilizar un flag once para finalizar una suscripción tras una única entrega y gestiona la complejidad de mapear los argumentos de las herramientas con activadores de eventos específicos. Garantiza que solo la conversación que inició un trabajo determinado reciba la actualización correspondiente.
Qué puedes hacer con él
- 1Notificar a los agentes tras un rastreo webUn agente de IA puede iniciar un rastreo de un sitio web y recibir una actualización automática cuando el proceso termine.
- 2Consultar APIs sin webhooksLos desarrolladores pueden usar la función watch para verificar el estado de una API externa periódicamente hasta que una tarea se complete.
- 3Automatizar flujos de trabajo de agentes basados en eventosPuedes definir eventos personalizados que activen el envío de payloads específicos de vuelta al cliente de IA.
Escrito a partir del README del proyecto. Cada caso de uso se verifica con una cita del mismo.
Cómo instalar Wakeshift MCP
Formatos verificados el 10 nov 2026Añadir a CursorAñadir a GooseInstalar Wakeshift MCP en Claude Code
$ claude mcp add wakeshift-node -- npx -y @wakeshift/sdkInstalar Wakeshift MCP en Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Instalar Wakeshift MCP en VS Code
.vscode/mcp.json
{
"servers": {
"wakeshift-node": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Instalar Wakeshift MCP en VS Code CLI
$ code --add-mcp '{"name":"wakeshift-node","type":"stdio","command":"npx","args":["-y","@wakeshift/sdk"]}'Instalar Wakeshift MCP en Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Instalar Wakeshift MCP en Codex
$ codex mcp add wakeshift-node -- npx -y @wakeshift/sdkInstalar Wakeshift MCP en Codex config.toml
~/.codex/config.toml
[mcp_servers.wakeshift-node] command = "npx" args = ["-y", "@wakeshift/sdk"]
Instalar Wakeshift MCP en Gemini CLI
$ gemini mcp add -s user wakeshift-node npx -- -y @wakeshift/sdkInstalar Wakeshift MCP en Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Verificaciones automáticas
Ejecutado 15 nov 2026Informe completo →Pasó nuestras verificaciones automáticas. Esto no es una auditoría de seguridad: lee el código y dale al servidor el acceso más limitado que necesite. Cómo funcionan las verificaciones
- Repositorio de origen vinculado y accesiblewakeshift/wakeshift-node is public and reachablegithub.com/wakeshift/wakeshift-node ↗Aprobado
- El paquete indica este repositorio como su origen@wakeshift/sdk names wakeshift/wakeshift-node as sourcenpmjs.com/package/@wakeshift/sdk ↗Aprobado
- Procedencia de la compilación (atestación de Sigstore)Sigstore attestation for @wakeshift/sdknpmjs.com/package/@wakeshift/sdk/v/0.11.1#provenance ↗Aprobado
- Licencia de código abierto (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗Aprobado
- Commit o lanzamiento en el último añoLast commit or release 2026-11-08github.com/wakeshift/wakeshift-node ↗Aprobado
- OpenSSF ScorecardNo verificado
- El nombre del paquete no es similar a un paquete popularNo popular package one edit away from @wakeshift/sdkAprobado
- No hay avisos críticos en el paquete ni en sus dependenciasNo verificado
- Sin instrucciones ocultas para el modelo0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersAprobado
- Las herramientas destructivas están etiquetadasNo verificado
- El endpoint remoto responde al handshake de MCPNo verificado
README
Ver en 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 |
Preguntas sobre Wakeshift MCP
¿Cómo agrego Wakeshift MCP a Claude Code?
Ejecuta claude mcp add wakeshift-node -- npx -y @wakeshift/sdk en tu terminal. Añade --scope user para que esté disponible en todos los proyectos.
¿Cómo agrego Wakeshift MCP a Cursor?
Abre ~/.cursor/mcp.json y añade el servidor en mcpServers, usando la configuración de Cursor que se muestra en la sección de instalación de arriba.
¿Cómo activo Wakeshift?
Wakeshift se activa proporcionando una WAKESHIFT_KEY. Sin esta clave, el servidor funciona de forma normal sin enviar ningún evento.
¿Puedo usar Wakeshift si mi API no admite webhooks?
Sí, puedes usar el método watch para consultar el estado de tu API hasta que el trabajo termine y luego emitir el evento.
¿Qué sucede si falla una llamada a una herramienta?
Si una llamada a una herramienta falla, cualquier suscripción realizada durante esa llamada se cancela automáticamente.