@cyanheads/mcp-ts-core 0.9.1 → 0.9.2
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.
- package/CLAUDE.md +2 -1
- package/README.md +4 -2
- package/changelog/0.9.x/0.9.2.md +55 -0
- package/dist/cli/init.js +1 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/core/serverManifest.d.ts +8 -2
- package/dist/core/serverManifest.d.ts.map +1 -1
- package/dist/core/serverManifest.js +16 -2
- package/dist/core/serverManifest.js.map +1 -1
- package/dist/linter/rules/format-parity-rules.d.ts.map +1 -1
- package/dist/linter/rules/format-parity-rules.js +134 -106
- package/dist/linter/rules/format-parity-rules.js.map +1 -1
- package/dist/logs/combined.log +7 -7
- package/dist/logs/error.log +5 -5
- package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpTransport.js +9 -0
- package/dist/mcp-server/transports/http/httpTransport.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/assets/styles.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/assets/styles.js +90 -72
- package/dist/mcp-server/transports/http/landing-page/assets/styles.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/sections/connect.d.ts +6 -4
- package/dist/mcp-server/transports/http/landing-page/sections/connect.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/sections/connect.js +76 -19
- package/dist/mcp-server/transports/http/landing-page/sections/connect.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/sections/head.d.ts +2 -1
- package/dist/mcp-server/transports/http/landing-page/sections/head.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/sections/head.js +20 -2
- package/dist/mcp-server/transports/http/landing-page/sections/head.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/sections/prompts.js +1 -1
- package/dist/mcp-server/transports/http/landing-page/sections/prompts.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/sections/resources.js +1 -1
- package/dist/mcp-server/transports/http/landing-page/sections/resources.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/sections/tools.js +23 -16
- package/dist/mcp-server/transports/http/landing-page/sections/tools.js.map +1 -1
- package/dist/mcp-server/transports/http/robotsTxt.d.ts +24 -0
- package/dist/mcp-server/transports/http/robotsTxt.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/robotsTxt.js +39 -0
- package/dist/mcp-server/transports/http/robotsTxt.js.map +1 -0
- package/dist/testing/fuzz.js +1 -1
- package/dist/testing/fuzz.js.map +1 -1
- package/package.json +25 -21
- package/scripts/devcheck.ts +27 -0
- package/scripts/lint-packaging.ts +116 -0
- package/scripts/list-skills.ts +170 -0
- package/skills/field-test/SKILL.md +96 -90
- package/skills/maintenance/SKILL.md +3 -1
- package/skills/multi-server-orchestration/SKILL.md +123 -0
- package/skills/multi-server-orchestration/references/greenfield-buildout.md +215 -0
- package/skills/multi-server-orchestration/references/maintenance-pass.md +119 -0
- package/skills/multi-server-orchestration/references/release-pass.md +189 -0
- package/skills/polish-docs-meta/SKILL.md +1 -1
- package/skills/polish-docs-meta/references/package-meta.md +1 -1
- package/skills/polish-docs-meta/references/readme.md +10 -7
- package/skills/polish-docs-meta/references/server-json.md +2 -2
- package/skills/release-and-publish/SKILL.md +38 -7
- package/skills/setup/SKILL.md +1 -1
- package/templates/AGENTS.md +37 -0
- package/templates/CLAUDE.md +37 -0
- package/templates/_.mcpbignore +13 -0
- package/templates/manifest.json +26 -0
- package/templates/package.json +6 -1
|
@@ -20,7 +20,7 @@ The manifest uses the official MCP schema. A typical server has two package entr
|
|
|
20
20
|
{
|
|
21
21
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
22
22
|
"name": "io.github.org-name/my-mcp-server",
|
|
23
|
-
"description": "
|
|
23
|
+
"description": "Search projects, manage tasks, track teams.",
|
|
24
24
|
"repository": {
|
|
25
25
|
"url": "https://github.com/org-name/my-mcp-server",
|
|
26
26
|
"source": "github"
|
|
@@ -126,7 +126,7 @@ The manifest uses the official MCP schema. A typical server has two package entr
|
|
|
126
126
|
|:------|:---------|:------------|
|
|
127
127
|
| `$schema` | Yes | Always `"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json"` |
|
|
128
128
|
| `name` | Yes | Reverse-domain identifier: `io.github.{owner}/{repo}`. Matches `mcpName` in `package.json`. |
|
|
129
|
-
| `description` | Yes | One-line description of the server. |
|
|
129
|
+
| `description` | Yes | One-line description of the server. **Action-first** — lead with the actions/workflows (e.g., `"Search projects, manage tasks, track teams."`), not `"MCP server for …"`. Drop the `via MCP. STDIO …` suffix that the `package.json` description carries — registry context already implies MCP. |
|
|
130
130
|
| `repository` | No | `{ "url": "https://github.com/...", "source": "github" }` |
|
|
131
131
|
| `version` | Yes | Semver version. Must match `package.json` version. |
|
|
132
132
|
| `packages` | Yes | Array of package entries — one per transport/runtime combo. |
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: release-and-publish
|
|
3
3
|
description: >
|
|
4
|
-
Ship a release end-to-end across every registry the project targets (npm, MCP Registry, GHCR). Runs the final verification gate, pushes commits and tags, then publishes to each applicable destination. Assumes git wrapup (version bumps, changelog, commit, annotated tag) is already complete — this skill is the post-wrapup publish workflow. Retries transient network failures on publish steps; halts with a partial-state report when retries are exhausted or the failure is terminal.
|
|
4
|
+
Ship a release end-to-end across every registry the project targets (npm, MCP Registry, GitHub Releases for `.mcpb` bundles, GHCR). Runs the final verification gate, pushes commits and tags, then publishes to each applicable destination. Assumes git wrapup (version bumps, changelog, commit, annotated tag) is already complete — this skill is the post-wrapup publish workflow. Retries transient network failures on publish steps; halts with a partial-state report when retries are exhausted or the failure is terminal.
|
|
5
5
|
metadata:
|
|
6
6
|
author: cyanheads
|
|
7
|
-
version: "2.
|
|
7
|
+
version: "2.4"
|
|
8
8
|
audience: external
|
|
9
9
|
type: workflow
|
|
10
10
|
---
|
|
@@ -26,7 +26,7 @@ If any are missing, halt and tell the user to finish wrapup first. Do not attemp
|
|
|
26
26
|
|
|
27
27
|
## Failure Protocol
|
|
28
28
|
|
|
29
|
-
Steps 3–
|
|
29
|
+
Steps 3–7 are network-bound. For those, **retry transient failures up to 2 times** with short backoff (~5 s before the first retry, ~15 s before the second) before halting. All other steps halt on the first non-zero exit — they're deterministic and a second attempt won't change the outcome.
|
|
30
30
|
|
|
31
31
|
### Retry on transient patterns
|
|
32
32
|
|
|
@@ -38,7 +38,7 @@ Match stderr (case-insensitive) against any of these — if matched, the failure
|
|
|
38
38
|
- `timed out` / `request timeout` — server or network timeout
|
|
39
39
|
- HTTP `502` / `503` / `504` — transient registry error
|
|
40
40
|
|
|
41
|
-
**Before retrying `docker buildx --push` (step
|
|
41
|
+
**Before retrying `docker buildx --push` (step 7)**, run `docker builder prune -f` to drop any cached corrupt layer. Skip this extra step for other retries.
|
|
42
42
|
|
|
43
43
|
### Never retry on idempotent-success signals
|
|
44
44
|
|
|
@@ -46,6 +46,7 @@ These mean the step already succeeded on a prior run — treat as success and pr
|
|
|
46
46
|
|
|
47
47
|
- npm (`bun publish`): `version already exists`, `You cannot publish over the previously published versions`
|
|
48
48
|
- MCP Registry (`mcp-publisher publish`): `cannot publish duplicate version`
|
|
49
|
+
- GitHub Release (`gh release create`): `release already exists` — fall back to `gh release upload --clobber` (see step 6)
|
|
49
50
|
|
|
50
51
|
### Halt fallback
|
|
51
52
|
|
|
@@ -54,7 +55,7 @@ If retries are exhausted, or the failure matches none of the transient patterns,
|
|
|
54
55
|
1. Which step failed
|
|
55
56
|
2. The exact error output
|
|
56
57
|
3. Retry count attempted (0 for terminal errors, 2 for exhausted retries)
|
|
57
|
-
4. Which destinations already received the release (npm published? tag pushed? MCP Registry? GHCR?) — the partial state across destinations
|
|
58
|
+
4. Which destinations already received the release (npm published? tag pushed? MCP Registry? GitHub Release with `.mcpb`? GHCR?) — the partial state across destinations
|
|
58
59
|
|
|
59
60
|
The user fixes locally and re-invokes. On re-invocation, already-published destinations hit the idempotent-success signal and skip naturally — no manual step-skipping required.
|
|
60
61
|
|
|
@@ -126,7 +127,35 @@ security add-generic-password -a "$USER" -s mcp-publisher-github-pat -w
|
|
|
126
127
|
|
|
127
128
|
Halt on any publisher error other than "cannot publish duplicate version".
|
|
128
129
|
|
|
129
|
-
### 6.
|
|
130
|
+
### 6. Attach MCPB bundle to GitHub Release
|
|
131
|
+
|
|
132
|
+
Only if `manifest.json` exists at the repo root (otherwise skip).
|
|
133
|
+
|
|
134
|
+
Build the bundle, then create a Release on the existing annotated tag and attach the `.mcpb`. The Release sits on top of the tag from wrapup — `--verify-tag` enforces that the tag already exists on the remote and prevents `gh` from creating a lightweight tag that would shadow the annotated one. `--notes-from-tag` pulls release notes directly from the annotated tag message (no duplication).
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
bun run bundle # produces dist/<name>.mcpb (stable filename, no version)
|
|
138
|
+
gh release create v<VERSION> --verify-tag --notes-from-tag dist/*.mcpb
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
The stable filename matters: it lets the README "Install in Claude Desktop" badge point at `releases/latest/download/<name>.mcpb` and always resolve to the most recent release. The `bundle` script in the templates outputs `dist/{{PACKAGE_NAME}}.mcpb` for this reason.
|
|
142
|
+
|
|
143
|
+
If the release already exists (re-invocation after a prior partial run), `gh release create` exits with "release already exists" — fall back to uploading the asset to the existing release:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
gh release upload v<VERSION> dist/*.mcpb --clobber
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Deterministic download URLs:
|
|
150
|
+
|
|
151
|
+
- Pinned to this version: `https://github.com/<OWNER>/<REPO>/releases/download/v<VERSION>/<name>.mcpb`
|
|
152
|
+
- Always latest (powers the install badge): `https://github.com/<OWNER>/<REPO>/releases/latest/download/<name>.mcpb`
|
|
153
|
+
|
|
154
|
+
If `server.json` includes an MCPB `packages[]` entry, its `identifier` should match this URL and `fileSha256` should match `shasum -a 256 <bundle>` — keep these in sync during wrapup, not here.
|
|
155
|
+
|
|
156
|
+
Halt on any error other than "release already exists" (handled via the upload fallback above).
|
|
157
|
+
|
|
158
|
+
### 7. Publish Docker image
|
|
130
159
|
|
|
131
160
|
Only if `Dockerfile` exists at the repo root (otherwise skip).
|
|
132
161
|
|
|
@@ -144,12 +173,13 @@ docker buildx build --platform linux/amd64,linux/arm64 \
|
|
|
144
173
|
|
|
145
174
|
If the project uses a non-GHCR registry or a custom image name, respect the project's convention. Halt on build or push failure.
|
|
146
175
|
|
|
147
|
-
###
|
|
176
|
+
### 8. Report the deployed artifacts
|
|
148
177
|
|
|
149
178
|
Print clickable URLs for every destination that succeeded:
|
|
150
179
|
|
|
151
180
|
- npm: `https://www.npmjs.com/package/<package.json#name>/v/<version>`
|
|
152
181
|
- MCP Registry: `https://registry.modelcontextprotocol.io/v0/servers?search=<package.json#mcpName>`
|
|
182
|
+
- GitHub Release: `https://github.com/<OWNER>/<REPO>/releases/tag/v<VERSION>` (with `.mcpb` asset attached)
|
|
153
183
|
- GHCR: `ghcr.io/<OWNER>/<REPO>:<VERSION>`
|
|
154
184
|
|
|
155
185
|
Skip any destination that was skipped in its step.
|
|
@@ -164,5 +194,6 @@ Skip any destination that was skipped in its step.
|
|
|
164
194
|
- [ ] Tags pushed to origin
|
|
165
195
|
- [ ] `bun publish --access public` succeeds
|
|
166
196
|
- [ ] `bun run publish-mcp` succeeds (if `server.json` present)
|
|
197
|
+
- [ ] `bun run bundle` + `gh release create --verify-tag --notes-from-tag` succeeds (if `manifest.json` present)
|
|
167
198
|
- [ ] Docker buildx multi-arch push succeeds (if `Dockerfile` present)
|
|
168
199
|
- [ ] Deployed artifact URLs reported to the user
|
package/skills/setup/SKILL.md
CHANGED
|
@@ -45,7 +45,7 @@ Dockerfile # Starter multi-stage image
|
|
|
45
45
|
.vscode/ # Recommended extensions + editor settings
|
|
46
46
|
server.json # MCP Registry publishing metadata
|
|
47
47
|
changelog/template.md # Format reference for per-version changelog files
|
|
48
|
-
scripts/ # build, clean, devcheck, lint-mcp, build-changelog, tree, check-docs-sync
|
|
48
|
+
scripts/ # build, clean, devcheck, lint-mcp, list-skills, build-changelog, tree, check-docs-sync
|
|
49
49
|
skills/ # External skills copied from the package (source of truth)
|
|
50
50
|
src/
|
|
51
51
|
index.ts # createApp() entry point
|
package/templates/AGENTS.md
CHANGED
|
@@ -295,6 +295,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
295
295
|
| `npm run rebuild` | Clean + build |
|
|
296
296
|
| `npm run clean` | Remove build artifacts |
|
|
297
297
|
| `npm run devcheck` | Lint + format + typecheck + security + changelog sync |
|
|
298
|
+
| `bun run audit:refresh` | Delete `bun.lock`, reinstall, and re-run `bun audit`. Use when `devcheck` flags a transitive advisory — Bun's `update` is sticky on transitive resolutions, so the advisory may be a stale-lockfile false positive. If it survives the refresh, it's real. |
|
|
298
299
|
| `npm run tree` | Generate directory structure doc |
|
|
299
300
|
| `npm run format` | Auto-fix formatting |
|
|
300
301
|
| `npm test` | Run tests |
|
|
@@ -302,6 +303,42 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
302
303
|
| `npm run start:http` | Production mode (HTTP) |
|
|
303
304
|
| `npm run changelog:build` | Regenerate `CHANGELOG.md` from `changelog/*.md` |
|
|
304
305
|
| `npm run changelog:check` | Verify `CHANGELOG.md` is in sync (used by devcheck) |
|
|
306
|
+
| `npm run bundle` | Build and pack as `.mcpb` for one-click Claude Desktop install |
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## Bundling
|
|
311
|
+
|
|
312
|
+
`npm run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. MCPB is stdio-only — HTTP and Cloudflare Workers deployments are unaffected. Consumers who don't need it can delete `manifest.json` and `.mcpbignore`; `lint:packaging` skips cleanly.
|
|
313
|
+
|
|
314
|
+
**Adding an env var requires both files:** `server.json` (registry discovery, `environmentVariables[]`) and `manifest.json` (bundle install UX, `mcp_config.env` + `user_config`). `lint:packaging` (run by `devcheck`) verifies the env var names match.
|
|
315
|
+
|
|
316
|
+
**README install badges.** Drop these into the project README to give users one-click install paths. Fill in `<OWNER>` / `<REPO>` / `<PACKAGE_NAME>` and encode the per-server config. Cursor + VS Code badges assume the server is published to npm; Claude Desktop downloads the `.mcpb` directly so npm publishing isn't required.
|
|
317
|
+
|
|
318
|
+
| Client | Mechanism |
|
|
319
|
+
|:-------|:----------|
|
|
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. |
|
|
323
|
+
| Claude Code / Codex | CLI only (`claude mcp add` / `codex mcp add`); no URL scheme. |
|
|
324
|
+
|
|
325
|
+
```markdown
|
|
326
|
+
[](https://github.com/<OWNER>/<REPO>/releases/latest/download/<PACKAGE_NAME>.mcpb)
|
|
327
|
+
[](cursor://anysphere.cursor-deeplink/mcp/install?name=<PACKAGE_NAME>&config=<BASE64_CONFIG>)
|
|
328
|
+
[](vscode:mcp/install?<URLENCODED_JSON>)
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
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
|
+
|
|
333
|
+
```bash
|
|
334
|
+
# Cursor: base64-encoded JSON
|
|
335
|
+
echo -n '{"command":"npx","args":["-y","<PACKAGE_NAME>"]}' | base64
|
|
336
|
+
|
|
337
|
+
# VS Code: URL-encoded JSON
|
|
338
|
+
node -p 'encodeURIComponent(JSON.stringify({name:"<PACKAGE_NAME>",command:"npx",args:["-y","<PACKAGE_NAME>"]}))'
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
The Claude Desktop badge requires the bundle to ship with a stable filename — `bun run bundle` outputs `dist/<PACKAGE_NAME>.mcpb`, and `release-and-publish` attaches that file to the GitHub Release. `releases/latest/download/<PACKAGE_NAME>.mcpb` then redirects to the most recent release.
|
|
305
342
|
|
|
306
343
|
---
|
|
307
344
|
|
package/templates/CLAUDE.md
CHANGED
|
@@ -295,6 +295,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
295
295
|
| `npm run rebuild` | Clean + build |
|
|
296
296
|
| `npm run clean` | Remove build artifacts |
|
|
297
297
|
| `npm run devcheck` | Lint + format + typecheck + security + changelog sync |
|
|
298
|
+
| `bun run audit:refresh` | Delete `bun.lock`, reinstall, and re-run `bun audit`. Use when `devcheck` flags a transitive advisory — Bun's `update` is sticky on transitive resolutions, so the advisory may be a stale-lockfile false positive. If it survives the refresh, it's real. |
|
|
298
299
|
| `npm run tree` | Generate directory structure doc |
|
|
299
300
|
| `npm run format` | Auto-fix formatting |
|
|
300
301
|
| `npm test` | Run tests |
|
|
@@ -302,6 +303,42 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
302
303
|
| `npm run start:http` | Production mode (HTTP) |
|
|
303
304
|
| `npm run changelog:build` | Regenerate `CHANGELOG.md` from `changelog/*.md` |
|
|
304
305
|
| `npm run changelog:check` | Verify `CHANGELOG.md` is in sync (used by devcheck) |
|
|
306
|
+
| `npm run bundle` | Build and pack as `.mcpb` for one-click Claude Desktop install |
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## Bundling
|
|
311
|
+
|
|
312
|
+
`npm run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. MCPB is stdio-only — HTTP and Cloudflare Workers deployments are unaffected. Consumers who don't need it can delete `manifest.json` and `.mcpbignore`; `lint:packaging` skips cleanly.
|
|
313
|
+
|
|
314
|
+
**Adding an env var requires both files:** `server.json` (registry discovery, `environmentVariables[]`) and `manifest.json` (bundle install UX, `mcp_config.env` + `user_config`). `lint:packaging` (run by `devcheck`) verifies the env var names match.
|
|
315
|
+
|
|
316
|
+
**README install badges.** Drop these into the project README to give users one-click install paths. Fill in `<OWNER>` / `<REPO>` / `<PACKAGE_NAME>` and encode the per-server config. Cursor + VS Code badges assume the server is published to npm; Claude Desktop downloads the `.mcpb` directly so npm publishing isn't required.
|
|
317
|
+
|
|
318
|
+
| Client | Mechanism |
|
|
319
|
+
|:-------|:----------|
|
|
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. |
|
|
323
|
+
| Claude Code / Codex | CLI only (`claude mcp add` / `codex mcp add`); no URL scheme. |
|
|
324
|
+
|
|
325
|
+
```markdown
|
|
326
|
+
[](https://github.com/<OWNER>/<REPO>/releases/latest/download/<PACKAGE_NAME>.mcpb)
|
|
327
|
+
[](cursor://anysphere.cursor-deeplink/mcp/install?name=<PACKAGE_NAME>&config=<BASE64_CONFIG>)
|
|
328
|
+
[](vscode:mcp/install?<URLENCODED_JSON>)
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
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
|
+
|
|
333
|
+
```bash
|
|
334
|
+
# Cursor: base64-encoded JSON
|
|
335
|
+
echo -n '{"command":"npx","args":["-y","<PACKAGE_NAME>"]}' | base64
|
|
336
|
+
|
|
337
|
+
# VS Code: URL-encoded JSON
|
|
338
|
+
node -p 'encodeURIComponent(JSON.stringify({name:"<PACKAGE_NAME>",command:"npx",args:["-y","<PACKAGE_NAME>"]}))'
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
The Claude Desktop badge requires the bundle to ship with a stable filename — `bun run bundle` outputs `dist/<PACKAGE_NAME>.mcpb`, and `release-and-publish` attaches that file to the GitHub Release. `releases/latest/download/<PACKAGE_NAME>.mcpb` then redirects to the most recent release.
|
|
305
342
|
|
|
306
343
|
---
|
|
307
344
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"manifest_version": "0.3",
|
|
3
|
+
"name": "{{PACKAGE_NAME}}",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"description": "",
|
|
6
|
+
"author": { "name": "" },
|
|
7
|
+
"server": {
|
|
8
|
+
"type": "node",
|
|
9
|
+
"entry_point": "dist/index.js",
|
|
10
|
+
"mcp_config": {
|
|
11
|
+
"command": "node",
|
|
12
|
+
"args": ["${__dirname}/dist/index.js"],
|
|
13
|
+
"env": {
|
|
14
|
+
"MCP_TRANSPORT_TYPE": "stdio",
|
|
15
|
+
"MCP_AUTH_MODE": "none",
|
|
16
|
+
"NODE_ENV": "production"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"compatibility": {
|
|
21
|
+
"runtimes": { "node": ">=24.0.0" }
|
|
22
|
+
},
|
|
23
|
+
"tools_generated": true,
|
|
24
|
+
"prompts_generated": true,
|
|
25
|
+
"user_config": {}
|
|
26
|
+
}
|
package/templates/package.json
CHANGED
|
@@ -23,9 +23,13 @@
|
|
|
23
23
|
"rebuild": "tsx scripts/clean.ts && tsx scripts/build.ts",
|
|
24
24
|
"clean": "tsx scripts/clean.ts",
|
|
25
25
|
"devcheck": "tsx scripts/devcheck.ts",
|
|
26
|
+
"audit:refresh": "rm -f bun.lock && bun install && bun audit",
|
|
26
27
|
"tree": "tsx scripts/tree.ts",
|
|
28
|
+
"list-skills": "tsx scripts/list-skills.ts",
|
|
27
29
|
"format": "biome check --write --unsafe .",
|
|
28
30
|
"lint:mcp": "tsx scripts/lint-mcp.ts",
|
|
31
|
+
"lint:packaging": "tsx scripts/lint-packaging.ts",
|
|
32
|
+
"bundle": "npm run build && npx -y @anthropic-ai/mcpb pack . dist/{{PACKAGE_NAME}}.mcpb",
|
|
29
33
|
"changelog:build": "tsx scripts/build-changelog.ts",
|
|
30
34
|
"changelog:check": "tsx scripts/build-changelog.ts --check",
|
|
31
35
|
"test": "vitest run",
|
|
@@ -52,7 +56,8 @@
|
|
|
52
56
|
},
|
|
53
57
|
"dependencies": {
|
|
54
58
|
"@cyanheads/mcp-ts-core": "^{{FRAMEWORK_VERSION}}",
|
|
55
|
-
"pino-pretty": "^13.1.3"
|
|
59
|
+
"pino-pretty": "^13.1.3",
|
|
60
|
+
"zod": "{{ZOD_VERSION}}"
|
|
56
61
|
},
|
|
57
62
|
"devDependencies": {
|
|
58
63
|
"@biomejs/biome": "^2.4.7",
|