Skip to content

Commit 4afda88

Browse files
Version Packages (#61)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent c7aeab8 commit 4afda88

6 files changed

Lines changed: 48 additions & 38 deletions

File tree

‎.changeset/mcp-toolkit-initial.md‎

Lines changed: 0 additions & 35 deletions
This file was deleted.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# mcp-toolkit-demo
2+
3+
## 0.1.1
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [5644daa]
8+
- @upstash/mcp-toolkit@0.1.0

‎examples/mcp-toolkit-demo/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mcp-toolkit-demo",
3-
"version": "0.1.0",
3+
"version": "0.1.1",
44
"private": true,
55
"scripts": {
66
"dev": "next dev",

‎packages/mcp-toolkit/CHANGELOG.md‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# @upstash/mcp-toolkit
2+
3+
## 0.1.0
4+
5+
### Minor Changes
6+
7+
- 5644daa: Add `@upstash/mcp-toolkit`: durable building blocks for MCP servers on the official TypeScript SDK.
8+
9+
`@upstash/mcp-toolkit/tasks` — long-running tools. A task tool answers immediately with a task id;
10+
the model polls the shared `task_status` tool for progress and the result, and can stop the task
11+
with `task_cancel`. They are ordinary MCP tools, so they work in every client today. The record
12+
lives in a `TaskStore` and the work runs behind a `TaskDispatcher`, and the dispatcher owns its
13+
delivery endpoint (`export const POST = tasks.createExecuteHandler()`) and always verifies QStash's
14+
signature against the URL it published to. Tasks are declared once at module scope with
15+
`tasks.define(...)` and attached to each request's server with `tasks.register(server)`. A required
16+
`principal` scopes tasks to their caller (and subscriptions to theirs); handlers get it as
17+
`task.principal`, and an optional `authorize` on `tasks.define` checks the arguments before a task
18+
is stored or queued.
19+
20+
`@upstash/mcp-toolkit/events` — MCP Events with webhook delivery, as ChatGPT ships it. Typed
21+
`events.define(...)` handles with `emit(payload)`: the payload's values route the event and are what
22+
the required `authorize` is checked against, at subscribe and again before every delivery.
23+
`events/list`, `events/subscribe` and `events/unsubscribe` are registered on your server, with a
24+
signed verification challenge, deterministic subscription ids, expiry and refresh, a configurable
25+
limit of live subscriptions per subscriber (8 by default), SSRF checks on callback URLs, and signing
26+
secrets encrypted at rest. `QStashDelivery` signs each attempt with
27+
Standard Webhooks and lets QStash retry failures (`export const POST = events.createDeliveryHandler()`).
28+
29+
A handler that returns a tool error (`isError: true`) fails its task without a retry, and
30+
`task_status` shows that error the way the synchronous tool would. The model only ever sees a
31+
failure's `code` and `message`: transport details stay in the store, and dispatch errors are logged.
32+
33+
The package uses WebCrypto only, so it runs on Node and edge runtimes.
34+
35+
`@upstash/mcp-toolkit/upstash` holds the Upstash backends for both: `RedisTaskStore`,
36+
`QStashDispatcher`, `WorkflowDispatcher`, `RedisSubscriptionStore` and `QStashDelivery`.
37+
`@upstash/redis`, `@upstash/qstash` and `@upstash/workflow` are regular dependencies.

‎packages/mcp-toolkit/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@upstash/mcp-toolkit",
3-
"version": "0.0.0",
3+
"version": "0.1.0",
44
"description": "Durable building blocks for MCP servers on the official TypeScript SDK: long-running tools (tasks) and webhook events, with Upstash Redis, QStash and Workflow backends.",
55
"license": "MIT",
66
"repository": {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
// Generated by scripts/sync-version.mjs (run by `pnpm ci:version`) — do not edit by hand.
2-
export const VERSION = "0.0.0";
2+
export const VERSION = "0.1.0";

0 commit comments

Comments
 (0)