@cyanheads/mcp-ts-core 0.9.2 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CLAUDE.md +3 -3
  2. package/README.md +1 -1
  3. package/changelog/0.9.x/0.9.3.md +21 -0
  4. package/changelog/0.9.x/0.9.4.md +18 -0
  5. package/dist/config/index.d.ts +3 -0
  6. package/dist/config/index.d.ts.map +1 -1
  7. package/dist/config/index.js +13 -0
  8. package/dist/config/index.js.map +1 -1
  9. package/dist/core/app.d.ts.map +1 -1
  10. package/dist/core/app.js +4 -0
  11. package/dist/core/app.js.map +1 -1
  12. package/dist/core/gcPressure.d.ts +28 -0
  13. package/dist/core/gcPressure.d.ts.map +1 -0
  14. package/dist/core/gcPressure.js +69 -0
  15. package/dist/core/gcPressure.js.map +1 -0
  16. package/dist/logs/combined.log +7 -7
  17. package/dist/logs/error.log +5 -5
  18. package/dist/services/canvas/core/CanvasInstance.d.ts +4 -4
  19. package/dist/services/canvas/core/CanvasInstance.d.ts.map +1 -1
  20. package/dist/services/canvas/core/CanvasInstance.js +1 -1
  21. package/dist/services/canvas/core/CanvasInstance.js.map +1 -1
  22. package/dist/services/canvas/core/CanvasRegistry.d.ts +4 -4
  23. package/dist/services/canvas/core/CanvasRegistry.d.ts.map +1 -1
  24. package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
  25. package/dist/services/canvas/core/DataCanvas.d.ts +5 -5
  26. package/dist/services/canvas/core/DataCanvas.d.ts.map +1 -1
  27. package/dist/services/canvas/core/DataCanvas.js +5 -5
  28. package/dist/services/canvas/core/DataCanvas.js.map +1 -1
  29. package/dist/services/canvas/core/IDataCanvasProvider.d.ts +11 -11
  30. package/dist/services/canvas/core/IDataCanvasProvider.d.ts.map +1 -1
  31. package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts +11 -11
  32. package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts.map +1 -1
  33. package/dist/services/canvas/providers/duckdb/DuckdbProvider.js.map +1 -1
  34. package/dist/utils/index.d.ts +1 -1
  35. package/dist/utils/index.d.ts.map +1 -1
  36. package/dist/utils/index.js.map +1 -1
  37. package/dist/utils/internal/requestContext.d.ts +24 -1
  38. package/dist/utils/internal/requestContext.d.ts.map +1 -1
  39. package/dist/utils/internal/requestContext.js.map +1 -1
  40. package/package.json +1 -1
  41. package/skills/maintenance/SKILL.md +8 -2
  42. package/skills/multi-server-orchestration/SKILL.md +5 -4
  43. package/skills/multi-server-orchestration/references/greenfield-buildout.md +4 -3
  44. package/skills/multi-server-orchestration/references/maintenance-pass.md +9 -6
  45. package/skills/multi-server-orchestration/references/{release-pass.md → release-and-publish-pass.md} +13 -11
  46. package/skills/multi-server-orchestration/references/wrapup-pass.md +171 -0
  47. package/skills/polish-docs-meta/SKILL.md +1 -1
  48. package/skills/polish-docs-meta/references/readme.md +37 -25
  49. package/templates/.env.example +4 -0
  50. package/templates/AGENTS.md +9 -7
  51. package/templates/CLAUDE.md +9 -7
@@ -7,10 +7,11 @@ Structure and content guide for creating or updating a README for an MCP server
7
7
  Use this section order. Omit sections that don't apply (e.g., skip Docker/Workers if the server doesn't deploy there).
8
8
 
9
9
  ```text
10
- # {Server Name} ← centered HTML block
11
- [Public hosted callout if present] ← centered HTML block, directly under badges
12
- Framework badge solo, spotlight row — `Built on @cyanheads/mcp-ts-core` (cyan-300 #67E8F9)
13
- Badges rows grouped on subsequent rows npm, Docker, Version, MCP SDK, License, TS, Bun, Coverage
10
+ # {Server Name} ← centered HTML block (h1 + tagline + surface count)
11
+ Info badges ← one centered row Version, License, Docker, MCP SDK, npm, TypeScript, Bun
12
+ Install badges one centered row — Claude Desktop, Cursor, VS Code
13
+ Framework badge solo spotlight row`Built on @cyanheads/mcp-ts-core` (cyan-300 #67E8F9)
14
+ [Public hosted callout if present] ← centered HTML block, directly under the Framework badge
14
15
  ---
15
16
  ## Tools ← grouping sentence → summary table → per-tool subsections
16
17
  ## Resources and prompts (if any) ← single combined table (Type / Name / Description)
@@ -40,38 +41,49 @@ Centered HTML. The `<h1>` is the server name — use the scoped package name if
40
41
 
41
42
  <div align="center">
42
43
 
43
- [![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-67E8F9?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
44
+ [![Version](https://img.shields.io/badge/Version-1.0.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/my-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/my-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/my-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.2-blueviolet.svg?style=flat-square)](https://bun.sh/)
44
45
 
45
- [![Version](https://img.shields.io/badge/Version-1.0.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/my-mcp-server)
46
+ </div>
46
47
 
47
- [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/my-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/my-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/)
48
+ <div align="center">
49
+
50
+ [![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/cyanheads/my-mcp-server/releases/latest/download/my-mcp-server.mcpb) [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=my-mcp-server&config=<BASE64_CONFIG>) [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?<URLENCODED_JSON>)
51
+
52
+ [![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-67E8F9?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
48
53
 
49
54
  </div>
50
55
  ```
51
56
 
52
- The header tagline must match the `package.json` `description`.
53
-
54
- **Badge selection:** All badges use `style=flat-square`. Include what applies — don't add badges for things the server doesn't have:
57
+ See the **Bundling** section of `templates/CLAUDE.md` (or `templates/AGENTS.md`) for how to generate the `<BASE64_CONFIG>` and `<URLENCODED_JSON>` payloads. Omit any install badge whose target doesn't apply (e.g. no `.mcpb` bundle → drop the Claude Desktop badge).
55
58
 
56
- | Badge | When to include |
57
- |:------|:----------------|
58
- | Framework | Always — links to `@cyanheads/mcp-ts-core` on npm. Cyan-300 (`67E8F9`) for dark text. **Solo on its own row** as the spotlight badge. |
59
- | npm | Published to npm |
60
- | Docker | Published to ghcr.io or Docker Hub |
61
- | Version | Always — link to CHANGELOG.md |
62
- | MCP SDK | Always — show the `@modelcontextprotocol/sdk` version |
63
- | License | Always |
64
- | TypeScript | Always |
65
- | Bun | If using Bun (standard for this framework) |
66
- | MCP Spec | Optional — rarely included; the SDK badge usually suffices |
67
- | Status | Optional — Stable, Beta, etc. |
68
- | Code Coverage | If coverage is tracked |
59
+ The header tagline must match the `package.json` `description`.
69
60
 
70
- **Layout:** Framework badge sits alone on the first row of the badge blockit's the brand link back to the framework and earns its own line. Group the remaining badges across one or two subsequent rows; keep related concerns together (e.g., release/license/runtime on one row, ecosystem/language on another). Add a `---` horizontal rule after the badge block.
61
+ **Badge selection:** All info badges use `style=flat-square`; install badges use `style=for-the-badge`. Include what applies don't add badges for things the server doesn't have:
62
+
63
+ | Badge | Row | When to include |
64
+ |:------|:----|:----------------|
65
+ | Version | info | Always — link to `CHANGELOG.md` |
66
+ | License | info | Always |
67
+ | Docker | info | Published to ghcr.io or Docker Hub |
68
+ | MCP SDK | info | Always — show the `@modelcontextprotocol/sdk` version |
69
+ | npm | info | Published to npm |
70
+ | TypeScript | info | Always |
71
+ | Bun | info | If using Bun (standard for this framework) |
72
+ | MCP Spec | info | Optional — rarely included; the SDK badge usually suffices |
73
+ | Status | info | Optional — Stable, Beta, etc. |
74
+ | Code Coverage | info | If coverage is tracked |
75
+ | Install in Claude Desktop | install | Repo publishes an `.mcpb` bundle on GitHub Releases (orange `D97757`, anthropic logo) |
76
+ | Install in Cursor | install | Published to npm — uses the official `cursor://` deep link |
77
+ | Install in VS Code | install | Published to npm — uses the official `vscode:mcp/install` deep link |
78
+ | Framework | spotlight | Always — links to `@cyanheads/mcp-ts-core` on npm. Cyan-300 (`67E8F9`) for dark text. **Solo on its own row.** |
79
+
80
+ **Layout:** three centered `<div>` blocks in a fixed order. (1) **Info row** — one line with all info badges in the order above (release/license/distribution first, then SDK/ecosystem/language). (2) **Install + spotlight block** — install badges on one line, then a blank line, then the Framework badge alone on its own line as the brand link back to the framework. (3) **Public hosted callout** if applicable (see next section). Add a `---` horizontal rule after the whole header block.
81
+
82
+ Omit a whole row when nothing in it applies — e.g. a server with no `.mcpb` bundle and not on npm has no install row at all, so the install + spotlight block collapses to just the Framework badge.
71
83
 
72
84
  ### Public Hosted Callout (if present)
73
85
 
74
- If a public hosted instance is available, **promote it to a top-level callout** immediately below the badge block — don't bury it inside Getting Started. This is the highest-value piece of information for a visitor who wants to try the server with zero install.
86
+ If a public hosted instance is available, **promote it to a top-level callout** in its own centered `<div>` immediately below the Framework badge — don't bury it inside Getting Started. This is the highest-value piece of information for a visitor who wants to try the server with zero install.
75
87
 
76
88
  ```html
77
89
  <div align="center">
@@ -15,6 +15,10 @@
15
15
  # ── Session ──────────────────────────────────────────────────────────
16
16
  # MCP_SESSION_MODE=stateful # stateful | stateless (default: stateful)
17
17
 
18
+ # ── Memory ───────────────────────────────────────────────────────────
19
+ # MCP_GC_PRESSURE_INTERVAL_MS=0 # Opt-in forced Bun.gc(true) interval, ms (Bun only). Drains old-gen backlog
20
+ # under sustained HTTP load (issue #50). Try 60000 if RSS grows. Default: 0.
21
+
18
22
  # ── Logging ───────────────────────────────────────────────────────────
19
23
  # MCP_LOG_LEVEL=info # debug | info | notice | warning | error
20
24
 
@@ -318,23 +318,25 @@ When you complete a skill's checklist, check the boxes and add a completion time
318
318
  | Client | Mechanism |
319
319
  |:-------|:----------|
320
320
  | Claude Desktop | Browser downloads the `.mcpb` from the latest GitHub Release; OS file handler routes it to Claude Desktop, which opens the install dialog. No deep-link URL scheme yet — this is the canonical path. |
321
- | Cursor | Official `cursor://` deep link with base64 JSON config. |
322
- | VS Code / Insiders | Official `vscode:mcp/install?...` and `vscode-insiders:mcp/install?...` deep links with URL-encoded JSON. |
321
+ | Cursor | Official `https://cursor.com/en/install-mcp` endpoint with base64 JSON config. |
322
+ | VS Code / Insiders | Official `vscode:mcp/install?...` deep link, wrapped in `https://vscode.dev/redirect?url=` so GitHub-rendered markdown doesn't strip the non-HTTP scheme. |
323
323
  | Claude Code / Codex | CLI only (`claude mcp add` / `codex mcp add`); no URL scheme. |
324
324
 
325
325
  ```markdown
326
326
  [![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/<OWNER>/<REPO>/releases/latest/download/<PACKAGE_NAME>.mcpb)
327
- [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](cursor://anysphere.cursor-deeplink/mcp/install?name=<PACKAGE_NAME>&config=<BASE64_CONFIG>)
328
- [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](vscode:mcp/install?<URLENCODED_JSON>)
327
+ [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=<PACKAGE_NAME>&config=<BASE64_CONFIG>)
328
+ [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?<URLENCODED_JSON>)
329
329
  ```
330
330
 
331
+ Both install links route through HTTPS endpoints (`cursor.com/en/install-mcp` and `vscode.dev/redirect`) — GitHub-rendered markdown strips non-HTTP URL schemes from anchors, so a raw `cursor://` or `vscode:` link won't click through from github.com.
332
+
331
333
  Generate the encoded configs (replace `<PACKAGE_NAME>` and adjust the install command — `npx -y …` is the standard shape for an npm-published stdio server):
332
334
 
333
335
  ```bash
334
- # Cursor: base64-encoded JSON
335
- echo -n '{"command":"npx","args":["-y","<PACKAGE_NAME>"]}' | base64
336
+ # Cursor: base64-encoded JSON. `command` is a single string (the full invocation), not split into command/args.
337
+ echo -n '{"command":"npx -y <PACKAGE_NAME>"}' | base64
336
338
 
337
- # VS Code: URL-encoded JSON
339
+ # VS Code: URL-encoded JSON. Split into command + args.
338
340
  node -p 'encodeURIComponent(JSON.stringify({name:"<PACKAGE_NAME>",command:"npx",args:["-y","<PACKAGE_NAME>"]}))'
339
341
  ```
340
342
 
@@ -318,23 +318,25 @@ When you complete a skill's checklist, check the boxes and add a completion time
318
318
  | Client | Mechanism |
319
319
  |:-------|:----------|
320
320
  | Claude Desktop | Browser downloads the `.mcpb` from the latest GitHub Release; OS file handler routes it to Claude Desktop, which opens the install dialog. No deep-link URL scheme yet — this is the canonical path. |
321
- | Cursor | Official `cursor://` deep link with base64 JSON config. |
322
- | VS Code / Insiders | Official `vscode:mcp/install?...` and `vscode-insiders:mcp/install?...` deep links with URL-encoded JSON. |
321
+ | Cursor | Official `https://cursor.com/en/install-mcp` endpoint with base64 JSON config. |
322
+ | VS Code / Insiders | Official `vscode:mcp/install?...` deep link, wrapped in `https://vscode.dev/redirect?url=` so GitHub-rendered markdown doesn't strip the non-HTTP scheme. |
323
323
  | Claude Code / Codex | CLI only (`claude mcp add` / `codex mcp add`); no URL scheme. |
324
324
 
325
325
  ```markdown
326
326
  [![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/<OWNER>/<REPO>/releases/latest/download/<PACKAGE_NAME>.mcpb)
327
- [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](cursor://anysphere.cursor-deeplink/mcp/install?name=<PACKAGE_NAME>&config=<BASE64_CONFIG>)
328
- [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](vscode:mcp/install?<URLENCODED_JSON>)
327
+ [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=<PACKAGE_NAME>&config=<BASE64_CONFIG>)
328
+ [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?<URLENCODED_JSON>)
329
329
  ```
330
330
 
331
+ Both install links route through HTTPS endpoints (`cursor.com/en/install-mcp` and `vscode.dev/redirect`) — GitHub-rendered markdown strips non-HTTP URL schemes from anchors, so a raw `cursor://` or `vscode:` link won't click through from github.com.
332
+
331
333
  Generate the encoded configs (replace `<PACKAGE_NAME>` and adjust the install command — `npx -y …` is the standard shape for an npm-published stdio server):
332
334
 
333
335
  ```bash
334
- # Cursor: base64-encoded JSON
335
- echo -n '{"command":"npx","args":["-y","<PACKAGE_NAME>"]}' | base64
336
+ # Cursor: base64-encoded JSON. `command` is a single string (the full invocation), not split into command/args.
337
+ echo -n '{"command":"npx -y <PACKAGE_NAME>"}' | base64
336
338
 
337
- # VS Code: URL-encoded JSON
339
+ # VS Code: URL-encoded JSON. Split into command + args.
338
340
  node -p 'encodeURIComponent(JSON.stringify({name:"<PACKAGE_NAME>",command:"npx",args:["-y","<PACKAGE_NAME>"]}))'
339
341
  ```
340
342