MCP server'larının belirli uygulama görevleri tamamlandığında olaylar (events) göndermesini ve abone olan AI agent'larını uyandırmasını sağlar.
Ayrıca bilinen adı wakeshift/wakeshift-node, @wakeshift/sdk
- Yıldızlar
- 0
- Araçlar
- —
- İndirmeler, 30 gün
- —
- En son sürüm
- —
- Son commit
- 8 Kas 2026
- Lisans
- Apache-2.0
Wakeshift MCP nedir?
Wakeshift bir MCP sunucusudur. MCP server'larının belirli uygulama görevleri tamamlandığında olaylar (events) göndermesini ve abone olan AI agent'larını uyandırmasını sağlar.
Özet, projenin README dosyasından oluşturuldu
Wakeshift MCP sunucusu hakkında
wakeshift-node, arka plan görevleri bittiğinde Claude Code, Codex veya ChatGPT gibi AI agent'larını uyandırmanızı sağlar. Geliştiriciler, MCP server'larının abone olan konuşmalara olaylar göndermesine olanak tanımak ve belirli bir uygulama görevi tamamlandığında agent'ın anında bilgilendirilmesini sağlamak için bu SDK'yı kullanır. Bu işlem, olayların tanımlanması ve registerTool metodu aracılığıyla tool'lara bağlanmasıyla gerçekleştirilir.
Entegrasyon için servisi aktifleştirecek bir WAKESHIFT_KEY ortam değişkeni gereklidir. Anahtar eksik olduğunda, sunucu herhangi bir bildirim göndermeden normal işleyişine devam eder. Sistem; Node.js 22.12 veya üzeri, nodejs_compat bayrağı ile Cloudflare Workers ve Mastra dahil olmak üzere çeşitli ortamları destekler. Ayrıca, webhook desteği olmayan API'lar için bir watch mekanizması sunarak, sunucunun bir iş tamamlanana kadar birkaç saniyede bir durum güncellemelerini sorgulamasına olanak tanır.
Bu araç, abonelik yaşam döngüsünü otomatik olarak yönetmesiyle farklılaşır. Tek bir teslimattan sonra aboneliği sonlandırmak için once flag'ini kullanabilir ve tool argümanlarını belirli olay tetikleyicilerine eşleme karmaşıklığını yönetir. Belirli bir işi başlatan konuşmanın, ilgili güncellemeyi almasını sağlar.
Neler yapabilirsiniz
- 1Web tarama sonrası agent'ları bilgilendirmeBir AI agent web sitesi tarama işlemini başlatabilir ve işlem bittiğinde otomatik bir güncelleme alabilir.
- 2Webhook içermeyen API'ları sorgulamaGeliştiriciler, bir görev tamamlanana kadar harici bir API durumunu periyodik olarak kontrol etmek için watch fonksiyonunu kullanabilirler.
- 3Olay güdümlü agent iş akışlarını otomatize etmeAI istemcisine belirli veri paketlerinin (payload) geri gönderilmesini tetikleyen özel olaylar tanımlayabilirsiniz.
Projenin README dosyasından alınmıştır. Her kullanım durumu, oradaki bir alıntı ile kontrol edilir.
Wakeshift MCP nasıl yüklenir
Biçimler 10 Kas 2026 tarihinde doğrulandıCursor'a ekleGoose'a ekleWakeshift MCP'yi Claude Code içine yükleyin
$ claude mcp add wakeshift-node -- npx -y @wakeshift/sdkWakeshift MCP'yi Cursor içine yükleyin
~/.cursor/mcp.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Wakeshift MCP'yi VS Code içine yükleyin
.vscode/mcp.json
{
"servers": {
"wakeshift-node": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Wakeshift MCP'yi VS Code CLI içine yükleyin
$ code --add-mcp '{"name":"wakeshift-node","type":"stdio","command":"npx","args":["-y","@wakeshift/sdk"]}'Wakeshift MCP'yi Claude Desktop içine yükleyin
claude_desktop_config.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Wakeshift MCP'yi Codex içine yükleyin
$ codex mcp add wakeshift-node -- npx -y @wakeshift/sdkWakeshift MCP'yi Codex config.toml içine yükleyin
~/.codex/config.toml
[mcp_servers.wakeshift-node] command = "npx" args = ["-y", "@wakeshift/sdk"]
Wakeshift MCP'yi Gemini CLI içine yükleyin
$ gemini mcp add -s user wakeshift-node npx -- -y @wakeshift/sdkWakeshift MCP'yi Gemini settings.json içine yükleyin
~/.gemini/settings.json
{
"mcpServers": {
"wakeshift-node": {
"command": "npx",
"args": [
"-y",
"@wakeshift/sdk"
]
}
}
}Otomatik kontroller
Çalıştırıldı 15 Kas 2026Tam rapor →Otomatik kontrollerimizden geçti. Bu bir güvenlik denetimi değildir: kodu okuyun ve sunucuya ihtiyaç duyduğu en dar erişimi verin. Kontroller nasıl çalışır
- Kaynak deposu bağlantılı ve erişilebilirwakeshift/wakeshift-node is public and reachablegithub.com/wakeshift/wakeshift-node ↗Geçti
- Paket, bu depoyu kaynağı olarak gösteriyor@wakeshift/sdk names wakeshift/wakeshift-node as sourcenpmjs.com/package/@wakeshift/sdk ↗Geçti
- Derleme kökeni (Sigstore onayı)Sigstore attestation for @wakeshift/sdknpmjs.com/package/@wakeshift/sdk/v/0.11.1#provenance ↗Geçti
- Açık kaynak lisansı (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗Geçti
- Son bir yıl içinde commit veya sürüm mevcutLast commit or release 2026-11-08github.com/wakeshift/wakeshift-node ↗Geçti
- OpenSSF ScorecardKontrol edilmedi
- Paket adı popüler bir pakete yakın değilNo popular package one edit away from @wakeshift/sdkGeçti
- Pakette veya bağımlılıklarında kritik uyarı yokKontrol edilmedi
- Modele yönelik gizli talimat yok0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersGeçti
- Yıkıcı araçlar etiketlenmişKontrol edilmedi
- Uzak uç nokta MCP el sıkışmasına yanıt veriyorKontrol edilmedi
@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 soruları
Wakeshift MCP'yi Claude Code'a nasıl eklerim?
Terminalinizde claude mcp add wakeshift-node -- npx -y @wakeshift/sdk komutunu çalıştırın. Her projede kullanılabilir olması için --scope user ekleyin.
Wakeshift MCP'yi Cursor'a nasıl eklerim?
~/.cursor/mcp.json dosyasını açın ve yukarıdaki yükleme bölümünde gösterilen Cursor yapılandırmasını kullanarak sunucuyu mcpServers altına ekleyin.
Wakeshift nasıl etkinleştirilir?
Wakeshift, bir WAKESHIFT_KEY sağlanarak etkinleştirilir. Bu anahtar olmadan sunucu, herhangi bir olay göndermeden normal şekilde çalışmaya devam eder.
API'm webhook desteklemiyorsa Wakeshift kullanabilir miyim?
Evet, iş bitene kadar API durumunuzu sorgulamak (poll) ve ardından olayı yayınlamak için watch metodunu kullanabilirsiniz.
Bir tool çağrısı başarısız olursa ne olur?
Bir tool çağrısı başarısız olursa, o çağrı sırasında yapılan tüm abonelikler otomatik olarak sonlandırılır.