Memungkinkan MCP server untuk mengirimkan event dan membangunkan AI agent yang berlangganan saat tugas aplikasi tertentu selesai.
Juga dikenal sebagai wakeshift/wakeshift-node, @wakeshift/sdk
- Stars
- 0
- Tools
- —
- Unduhan, 30 hari
- —
- Versi terbaru
- —
- Commit terakhir
- 8 Nov 2026
- Lisensi
- Apache-2.0
Apa itu Wakeshift MCP?
Wakeshift adalah MCP server. Memungkinkan MCP server untuk mengirimkan event dan membangunkan AI agent yang berlangganan saat tugas aplikasi tertentu selesai.
Ringkasan dibuat dari README proyek
Tentang Wakeshift MCP server
wakeshift-node memungkinkan Anda untuk membangunkan AI agent seperti Claude Code, Codex, atau ChatGPT saat tugas di background selesai. Developer menggunakan SDK ini agar MCP server dapat mengirimkan event ke percakapan yang berlangganan, memastikan agent mendapatkan notifikasi segera setelah tugas aplikasi tertentu selesai. Hal ini dilakukan dengan mendefinisikan event dan menghubungkannya ke tool melalui method registerTool.
Integrasi memerlukan environment variable WAKESHIFT_KEY untuk mengaktifkan layanan. Jika key tidak ditemukan, server akan tetap berfungsi normal tanpa mengirimkan notifikasi apa pun. Sistem ini mendukung berbagai environment termasuk Node.js 22.12 atau versi terbaru, Cloudflare Workers dengan flag nodejs_compat, dan Mastra. Tool ini juga menyediakan mekanisme watch untuk API yang tidak memiliki webhook, yang memungkinkan server melakukan polling status setiap beberapa detik hingga sebuah job selesai.
Tool ini berbeda karena mengelola lifecycle subscription secara otomatis. Anda dapat menggunakan flag once untuk mengakhiri subscription setelah satu kali pengiriman dan menangani kompleksitas pemetaan argumen tool ke trigger event tertentu. Sistem ini memastikan hanya percakapan yang memulai job spesifik tersebut yang akan menerima update terkait.
Apa yang bisa Anda lakukan dengannya
- 1Notifikasi agent setelah web crawlingAI agent dapat memulai proses web crawl dan menerima update otomatis saat proses tersebut selesai.
- 2Polling API tanpa webhookDeveloper dapat menggunakan fungsi watch untuk memeriksa status API eksternal secara berkala hingga sebuah tugas selesai.
- 3Otomatisasi workflow agent berbasis eventAnda dapat mendefinisikan custom event yang memicu pengiriman payload spesifik kembali ke AI client.
Ditulis berdasarkan README proyek. Setiap use case diperiksa terhadap kutipan dari README tersebut.
Cara menginstal Wakeshift MCP
Format diverifikasi 10 Nov 2026Tambahkan ke CursorTambahkan ke GooseInstal Wakeshift MCP di Claude Code
$ claude mcp add wakeshift-node -- npx -y @wakeshift/sdkInstal Wakeshift MCP di Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Instal Wakeshift MCP di VS Code
.vscode/mcp.json
{
"servers": {
"wakeshift-node": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Instal Wakeshift MCP di VS Code CLI
$ code --add-mcp '{"name":"wakeshift-node","type":"stdio","command":"npx","args":["-y","@wakeshift/sdk"]}'Instal Wakeshift MCP di Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Instal Wakeshift MCP di Codex
$ codex mcp add wakeshift-node -- npx -y @wakeshift/sdkInstal Wakeshift MCP di Codex config.toml
~/.codex/config.toml
[mcp_servers.wakeshift-node] command = "npx" args = ["-y", "@wakeshift/sdk"]
Instal Wakeshift MCP di Gemini CLI
$ gemini mcp add -s user wakeshift-node npx -- -y @wakeshift/sdkInstal Wakeshift MCP di Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Pengecekan otomatis
Berjalan 15 Nov 2026Laporan lengkap →Lolos checks otomatis kami. Ini bukan audit keamanan: baca kodenya dan berikan server akses paling terbatas yang dibutuhkannya. Cara kerja checks
- Source repository terhubung dan dapat dijangkauwakeshift/wakeshift-node is public and reachablegithub.com/wakeshift/wakeshift-node ↗Lolos
- Nama paket mencantumkan repositori ini sebagai sumbernya@wakeshift/sdk names wakeshift/wakeshift-node as sourcenpmjs.com/package/@wakeshift/sdk ↗Lolos
- Provenance build (atestasi Sigstore)Sigstore attestation for @wakeshift/sdknpmjs.com/package/@wakeshift/sdk/v/0.11.1#provenance ↗Lolos
- Lisensi open source (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗Lolos
- Ada commit atau release dalam satu tahun terakhirLast commit or release 2026-11-08github.com/wakeshift/wakeshift-node ↗Lolos
- OpenSSF ScorecardTidak diperiksa
- Nama package tidak mirip dengan package populerNo popular package one edit away from @wakeshift/sdkLolos
- Tidak ada advisory kritis pada paket atau dependensinyaTidak diperiksa
- Tidak ada instruksi tersembunyi untuk model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersLolos
- Tools yang bersifat destruktif telah diberi labelTidak diperiksa
- Endpoint remote merespons handshake MCPTidak diperiksa
README
Lihat di 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 |
Pertanyaan tentang Wakeshift MCP
Bagaimana cara menambahkan Wakeshift MCP ke Claude Code?
Jalankan claude mcp add wakeshift-node -- npx -y @wakeshift/sdk di terminal Anda. Tambahkan --scope user agar tersedia di semua proyek.
Bagaimana cara menambahkan Wakeshift MCP ke Cursor?
Buka ~/.cursor/mcp.json dan tambahkan server di bawah mcpServers, menggunakan config Cursor yang ditunjukkan di bagian instalasi di atas.
Bagaimana cara mengaktifkan Wakeshift?
Wakeshift diaktifkan dengan menyediakan WAKESHIFT_KEY. Tanpa key ini, server akan berjalan normal tanpa mengirimkan event apa pun.
Bisakah saya menggunakan Wakeshift jika API saya tidak mendukung webhook?
Ya, Anda bisa menggunakan method watch untuk melakukan polling status API Anda sampai pekerjaan selesai, lalu kemudian mengirimkan event tersebut.
Apa yang terjadi jika tool call gagal?
Jika tool call gagal, semua subscription yang dibuat selama pemanggilan tersebut akan dihentikan secara otomatis.