typescript-sdk/examples/stickynotes
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Felix Weinberger 1823aae891
Implement MCP 2026-07-28 (#2286)
Co-authored-by: Matt <77928207+mattzcarey@users.noreply.github.com>
Co-authored-by: Konstantin Konstantinov <KKonstantinov@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-26 14:01:10 +01:00
..
client.ts Implement MCP 2026-07-28 (#2286) 2026-06-26 14:01:10 +01:00
package.json Implement MCP 2026-07-28 (#2286) 2026-06-26 14:01:10 +01:00
README.md Implement MCP 2026-07-28 (#2286) 2026-06-26 14:01:10 +01:00
server.ts Implement MCP 2026-07-28 (#2286) 2026-06-26 14:01:10 +01:00

stickynotes

The "real app" capstone: a sticky-notes board where tools mutate state, each note is a resource, the resource list changes on add/remove, and a destructive remove_all blocks on a form-mode elicitation. The client adds, lists, reads, removes, and proves remove_all only clears the board on an explicit confirm.

Runs all four transport/era legs. The remove_all confirmation is a push server→client elicitation (2025-era only — there is no server→client request channel on 2026-07-28; the equivalent is multi-round-trip inputRequired, see ../elicitation/). The cancel / unchecked / confirm flow is exercised on stdio/legacy only — server.ts hosts HTTP via a plain stateless createMcpHandler, whose per-request legacy fallback has no return path for the client's elicitation response — so the modern and http legs exercise add / list / read / remove and skip remove_all.