Ermöglicht es MCP servern, Events zu pushen und abonnierte AI Agents zu wecken, sobald bestimmte Anwendungsaufgaben abgeschlossen sind.
Auch bekannt als wakeshift/wakeshift-node, @wakeshift/sdk
- Stars
- 0
- Tools
- —
- Downloads, 30 Tage
- —
- Neueste Version
- —
- Letzter Commit
- 8. Nov. 2026
- Lizenz
- Apache-2.0
Was ist Wakeshift MCP?
Wakeshift ist ein MCP server. Ermöglicht es MCP servern, Events zu pushen und abonnierte AI Agents zu wecken, sobald bestimmte Anwendungsaufgaben abgeschlossen sind.
Zusammenfassung generiert aus dem README des Projekts
Über Wakeshift MCP server
wakeshift-node ermöglicht es, AI Agents wie Claude Code, Codex oder ChatGPT zu wecken, sobald Hintergrundaufgaben abgeschlossen sind. Entwickler nutzen dieses SDK, damit MCP server Events an abonnierte Konversationen pushen können. So wird ein Agent sofort benachrichtigt, sobald eine spezifische Anwendungsaufgabe fertiggestellt ist. Das funktioniert über die Definition von Events, die via registerTool Methode an Tools gebunden werden.
Für die Integration ist die Umgebungsvariable WAKESHIFT_KEY erforderlich, um den Service zu aktivieren. Falls der Key fehlt, funktioniert der Server weiterhin normal, sendet aber keine Benachrichtigungen. Das System unterstützt verschiedene Umgebungen wie Node.js 22.12 oder neuer, Cloudflare Workers mit dem nodejs_compat Flag und Mastra. Zudem bietet es einen watch-Mechanismus für APIs ohne Webhooks, wodurch der Server alle paar Sekunden den Status pollen kann, bis ein Job abgeschlossen ist.
Dieses Tool unterscheidet sich dadurch, dass es den Lifecycle von Abonnements automatisch verwaltet. Es kann ein once-Flag nutzen, um ein Abonnement nach einer einzigen Zustellung zu beenden, und übernimmt die Komplexität beim Mapping von Tool-Argumenten auf spezifische Event-Trigger. Es stellt sicher, dass nur die Konversation, die einen spezifischen Job gestartet hat, auch das entsprechende Update erhält.
Was du damit machen kannst
- 1Agents nach Web Crawling benachrichtigenEin AI Agent kann einen Website-Crawl starten und erhält automatisch ein Update, sobald der Prozess abgeschlossen ist.
- 2APIs ohne Webhooks pollenEntwickler können die watch-Funktion nutzen, um den Status einer externen API periodisch zu prüfen, bis eine Aufgabe erledigt ist.
- 3Eventgesteuerte Agent-Workflows automatisierenDu kannst eigene Events definieren, die das Senden spezifischer Payloads an den AI Client auslösen.
Geschrieben aus dem README des Projekts. Jeder Use Case wurde gegen ein Zitat daraus geprüft.
So installierst du Wakeshift MCP
Formate geprüft am 10. Nov. 2026Zu Cursor hinzufügenZu Goose hinzufügenWakeshift MCP in Claude Code installieren
$ claude mcp add wakeshift-node -- npx -y @wakeshift/sdkWakeshift MCP in Cursor installieren
~/.cursor/mcp.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Wakeshift MCP in VS Code installieren
.vscode/mcp.json
{
"servers": {
"wakeshift-node": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Wakeshift MCP in VS Code CLI installieren
$ code --add-mcp '{"name":"wakeshift-node","type":"stdio","command":"npx","args":["-y","@wakeshift/sdk"]}'Wakeshift MCP in Claude Desktop installieren
claude_desktop_config.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Wakeshift MCP in Codex installieren
$ codex mcp add wakeshift-node -- npx -y @wakeshift/sdkWakeshift MCP in Codex config.toml installieren
~/.codex/config.toml
[mcp_servers.wakeshift-node] command = "npx" args = ["-y", "@wakeshift/sdk"]
Wakeshift MCP in Gemini CLI installieren
$ gemini mcp add -s user wakeshift-node npx -- -y @wakeshift/sdkWakeshift MCP in Gemini settings.json installieren
~/.gemini/settings.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Automatisierte Checks
Geluften am 15. Nov. 2026Vollständiger Bericht →Unsere automatisierten Checks bestanden. Das ist kein Security-Audit: Lies den Code und gib dem Server nur den minimal notwendigen Zugriff. Wie die Checks funktionieren
- Source Repository verknüpft und erreichbarwakeshift/wakeshift-node is public and reachablegithub.com/wakeshift/wakeshift-node ↗Bestanden
- Paket nennt dieses Repository als Quelle@wakeshift/sdk names wakeshift/wakeshift-node as sourcenpmjs.com/package/@wakeshift/sdk ↗Bestanden
- Build-Provenienz (Sigstore-Attestierung)Sigstore attestation for @wakeshift/sdknpmjs.com/package/@wakeshift/sdk/v/0.11.1#provenance ↗Bestanden
- Open Source Lizenz (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗Bestanden
- Commit oder Release im letzten JahrLast commit or release 2026-11-08github.com/wakeshift/wakeshift-node ↗Bestanden
- OpenSSF ScorecardNicht geprüft
- Package-Name ähnelt keinem populären PackageNo popular package one edit away from @wakeshift/sdkBestanden
- Keine kritischen Advisories im Paket oder seinen AbhängigkeitenNicht geprüft
- Keine versteckten Anweisungen an das Modell0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersBestanden
- Destruktive Tools sind markiertNicht geprüft
- Remote-Endpoint beantwortet den MCP-HandshakeNicht geprüft
README
Auf GitHub ansehen@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 |
Wakeshift MCP Fragen
Wie füge ich Wakeshift MCP zu Claude Code hinzu?
Führe claude mcp add wakeshift-node -- npx -y @wakeshift/sdk in deinem Terminal aus. Füge --scope user hinzu, damit der Server in jedem Projekt verfügbar ist.
Wie füge ich Wakeshift MCP zu Cursor hinzu?
Öffne ~/.cursor/mcp.json und füge den Server unter mcpServers hinzu, mit der Cursor-Config aus dem Installationsabschnitt oben.
Wie aktiviere ich Wakeshift?
Wakeshift wird durch Bereitstellen eines WAKESHIFT_KEY aktiviert. Ohne diesen Key läuft der Server ganz normal weiter, ohne Events zu senden.
Kann ich Wakeshift nutzen, wenn meine API keine Webhooks unterstützt?
Ja, du kannst die watch-Methode nutzen, um den Status deiner API zu pollen, bis die Arbeit erledigt ist, und dann das Event auszulösen.
Was passiert, wenn ein Tool-Aufruf fehlschlägt?
Wenn ein Tool-Aufruf fehlschlägt, wird jedes Abonnement, das während dieses Aufrufs erstellt wurde, automatisch beendet.