From 11cd2447fca4f60b63216ca8a68a10b39fab5a95 Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Sun, 5 Oct 2025 12:13:34 +0200 Subject: [PATCH 1/6] feat: publish to registry --- .changeset/sad-ways-pay.md | 5 +++++ .github/workflows/release.yml | 13 +++++++++++++ packages/mcp-stdio/package.json | 1 + packages/mcp-stdio/server.json | 30 ++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 .changeset/sad-ways-pay.md create mode 100644 packages/mcp-stdio/server.json diff --git a/.changeset/sad-ways-pay.md b/.changeset/sad-ways-pay.md new file mode 100644 index 0000000..301fa9d --- /dev/null +++ b/.changeset/sad-ways-pay.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/mcp': minor +--- + +feat: publish to registry diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 21b3ad9..af9e4a2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -56,3 +56,16 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_CONFIG_PROVENANCE: true + + - name: Publish to MCP Registry + if: steps.changesets.outputs.published == 'true' + working-directory: packages/mcp-stdio + run: | + # Download MCP Publisher pinned to v1.2.3 + curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.2.3/mcp-publisher_1.2.3_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher + + # Login using GitHub OIDC + ./mcp-publisher login github-oidc + + # Publish to MCP Registry + ./mcp-publisher publish diff --git a/packages/mcp-stdio/package.json b/packages/mcp-stdio/package.json index 3290ea2..657854f 100644 --- a/packages/mcp-stdio/package.json +++ b/packages/mcp-stdio/package.json @@ -3,6 +3,7 @@ "version": "0.0.3", "type": "module", "license": "MIT", + "mcpName": "io.github.sveltejs/svelte", "homepage": "https://github.com/sveltejs/mcp#readme", "bugs": { "url": "https://github.com/sveltejs/mcp/issues" diff --git a/packages/mcp-stdio/server.json b/packages/mcp-stdio/server.json new file mode 100644 index 0000000..f058508 --- /dev/null +++ b/packages/mcp-stdio/server.json @@ -0,0 +1,30 @@ +{ + "$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json", + "name": "io.github.sveltejs/svelte", + "description": "The official Svelte MCP server providing docs and autofixing tools for Svelte development", + "repository": { + "id": "1054419133", + "url": "https://github.com/sveltejs/mcp", + "subfolder": "packages/mcp-stdio", + "source": "github" + }, + "version": "0.1.0", + "websiteUrl": "https://svelte.dev/docs/mcp/overview", + "packages": [ + { + "registryType": "npm", + "identifier": "@sveltejs/mcp", + "version": "0.1.0", + "runtimeHint": "npx", + "transport": { + "type": "stdio" + } + } + ], + "remotes": [ + { + "url": "https://mcp.svelte.dev/mcp", + "type": "streamable-http" + } + ] +} From aaac49cdefa3c39dca5de80a1b5bcceddf3552be Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Tue, 7 Oct 2025 23:49:28 +0200 Subject: [PATCH 2/6] chore: update version of `server.json` on release --- .github/workflows/release.yml | 2 ++ package.json | 3 ++- packages/mcp-stdio/package.json | 3 ++- packages/mcp-stdio/scripts/update-version.ts | 14 ++++++++++++++ packages/mcp-stdio/server.json | 6 +++--- 5 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 packages/mcp-stdio/scripts/update-version.ts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index af9e4a2..caec208 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,6 +51,8 @@ jobs: # pinned for security, always review third party action code before updating uses: changesets/action@e0145edc7d9d8679003495b11f87bd8ef63c0cba # v1.5.3 with: + # This expects you to have a script called changeset:version version that calls changeset version and updated what it needs to be updated + version: pnpm changeset:version # This expects you to have a script called release which does a build for your packages and calls changeset publish publish: pnpm release env: diff --git a/package.json b/package.json index 1d8eeb1..d18108f 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "inspect": "pnpm mcp-inspector", "generate-summaries": "pnpm --filter @sveltejs/mcp-server run generate-summaries", "debug:generate-summaries": "pnpm --filter @sveltejs/mcp-server run debug:generate-summaries", - "release": "pnpm --filter @sveltejs/mcp run build && changeset publish" + "release": "pnpm --filter @sveltejs/mcp run build && changeset publish", + "changeset:version": "pnpm --filter @sveltejs/mcp run update:version && git add --all" }, "keywords": [ "svelte", diff --git a/packages/mcp-stdio/package.json b/packages/mcp-stdio/package.json index 6dc81ad..b8b0c17 100644 --- a/packages/mcp-stdio/package.json +++ b/packages/mcp-stdio/package.json @@ -27,7 +27,8 @@ "dev": "tsdown --watch", "test": "vitest", "check": "tsc --noEmit", - "check:publint": "publint --strict" + "check:publint": "publint --strict", + "update:version": "node scripts/update-version.ts" }, "devDependencies": { "@sveltejs/mcp-server": "workspace:^", diff --git a/packages/mcp-stdio/scripts/update-version.ts b/packages/mcp-stdio/scripts/update-version.ts new file mode 100644 index 0000000..da4e593 --- /dev/null +++ b/packages/mcp-stdio/scripts/update-version.ts @@ -0,0 +1,14 @@ +import { readFile, writeFile } from 'node:fs/promises'; +import { resolve } from 'node:path'; + +const package_json_string = await readFile(resolve('./package.json'), 'utf-8'); +const package_json = JSON.parse(package_json_string); + +const server_json_path = resolve('./server.json'); +const server_json_string = await readFile(server_json_path, 'utf-8'); +const server_json = JSON.parse(server_json_string); + +server_json.version = package_json.version; +server_json.packages[0].version = package_json.version; + +await writeFile(server_json_path, JSON.stringify(server_json, null, '\t'), 'utf-8'); diff --git a/packages/mcp-stdio/server.json b/packages/mcp-stdio/server.json index f058508..3b9fed8 100644 --- a/packages/mcp-stdio/server.json +++ b/packages/mcp-stdio/server.json @@ -8,13 +8,13 @@ "subfolder": "packages/mcp-stdio", "source": "github" }, - "version": "0.1.0", + "version": "0.0.4", "websiteUrl": "https://svelte.dev/docs/mcp/overview", "packages": [ { "registryType": "npm", "identifier": "@sveltejs/mcp", - "version": "0.1.0", + "version": "0.0.4", "runtimeHint": "npx", "transport": { "type": "stdio" @@ -27,4 +27,4 @@ "type": "streamable-http" } ] -} +} \ No newline at end of file From ecbbf70d98b2f6f2c593f6a1d0da4fee88573c6f Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Tue, 7 Oct 2025 23:50:10 +0200 Subject: [PATCH 3/6] fix: call `changeset version` in script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d18108f..6e60443 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "generate-summaries": "pnpm --filter @sveltejs/mcp-server run generate-summaries", "debug:generate-summaries": "pnpm --filter @sveltejs/mcp-server run debug:generate-summaries", "release": "pnpm --filter @sveltejs/mcp run build && changeset publish", - "changeset:version": "pnpm --filter @sveltejs/mcp run update:version && git add --all" + "changeset:version": "changeset version && pnpm --filter @sveltejs/mcp run update:version && git add --all" }, "keywords": [ "svelte", From 4ac35bf258b7496670b40fb2695c95514651bb50 Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Wed, 8 Oct 2025 00:06:12 +0200 Subject: [PATCH 4/6] chore: separate workflows --- .github/workflows/publish-mcp.yml | 27 +++++++++++++++++++++++++++ .github/workflows/release.yml | 18 ++++++------------ 2 files changed, 33 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/publish-mcp.yml diff --git a/.github/workflows/publish-mcp.yml b/.github/workflows/publish-mcp.yml new file mode 100644 index 0000000..077f768 --- /dev/null +++ b/.github/workflows/publish-mcp.yml @@ -0,0 +1,27 @@ +name: Publish to MCP Registry + +on: + workflow_call: + +permissions: + id-token: write # OpenID Connect token needed for MCP registry authentication + +jobs: + publish-mcp: + name: Publish to MCP Registry + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v5 + + - name: Publish to MCP Registry + working-directory: packages/mcp-stdio + run: | + # Download MCP Publisher pinned to v1.2.3 + curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.2.3/mcp-publisher_1.2.3_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher + + # Login using GitHub OIDC + ./mcp-publisher login github-oidc + + # Publish to MCP Registry + ./mcp-publisher publish diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index caec208..8af27cb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,6 +16,8 @@ jobs: if: github.repository == 'sveltejs/mcp' name: Release runs-on: ${{ matrix.os }} + outputs: + published: ${{ steps.changesets.outputs.published }} strategy: matrix: # pseudo-matrix for convenience, NEVER use more than a single combination @@ -59,15 +61,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_CONFIG_PROVENANCE: true - - name: Publish to MCP Registry - if: steps.changesets.outputs.published == 'true' - working-directory: packages/mcp-stdio - run: | - # Download MCP Publisher pinned to v1.2.3 - curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.2.3/mcp-publisher_1.2.3_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher - - # Login using GitHub OIDC - ./mcp-publisher login github-oidc - - # Publish to MCP Registry - ./mcp-publisher publish + publish-mcp: + needs: release + if: needs.release.outputs.published == 'true' + uses: ./.github/workflows/publish-mcp.yml From c5c08ccd13419a0bf5efc4185159b228f354b8e3 Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Wed, 8 Oct 2025 00:09:23 +0200 Subject: [PATCH 5/6] fix: lint --- packages/mcp-stdio/scripts/update-version.ts | 2 +- packages/mcp-stdio/server.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mcp-stdio/scripts/update-version.ts b/packages/mcp-stdio/scripts/update-version.ts index da4e593..8b0b1a9 100644 --- a/packages/mcp-stdio/scripts/update-version.ts +++ b/packages/mcp-stdio/scripts/update-version.ts @@ -11,4 +11,4 @@ const server_json = JSON.parse(server_json_string); server_json.version = package_json.version; server_json.packages[0].version = package_json.version; -await writeFile(server_json_path, JSON.stringify(server_json, null, '\t'), 'utf-8'); +await writeFile(server_json_path, JSON.stringify(server_json, null, '\t') + '\n', 'utf-8'); diff --git a/packages/mcp-stdio/server.json b/packages/mcp-stdio/server.json index 3b9fed8..d71a7e4 100644 --- a/packages/mcp-stdio/server.json +++ b/packages/mcp-stdio/server.json @@ -27,4 +27,4 @@ "type": "streamable-http" } ] -} \ No newline at end of file +} From 3fbc7863837adf06308276c55483c6ee07c276fd Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Wed, 8 Oct 2025 17:20:16 +0200 Subject: [PATCH 6/6] fix: verify checksum --- .github/workflows/publish-mcp.yml | 14 +++++++++-- .../checksums/registry_1.2.3_checksums.txt | 25 +++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 packages/mcp-stdio/checksums/registry_1.2.3_checksums.txt diff --git a/.github/workflows/publish-mcp.yml b/.github/workflows/publish-mcp.yml index 077f768..8fa8767 100644 --- a/.github/workflows/publish-mcp.yml +++ b/.github/workflows/publish-mcp.yml @@ -17,8 +17,18 @@ jobs: - name: Publish to MCP Registry working-directory: packages/mcp-stdio run: | - # Download MCP Publisher pinned to v1.2.3 - curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.2.3/mcp-publisher_1.2.3_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher + NAME=mcp-publisher_1.2.3_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz + # Download MCP Publisher pinned to v1.2.3 using latest https for security and save it to a file named mcp-publisher.tar.gz + curl --proto '=https' --proto-redir '=https' --tlsv1.2. -fL "https://github.com/modelcontextprotocol/registry/releases/download/v1.2.3/$NAME" -O + + # Verify the SHA256 checksum of the downloaded file + sha256sum --ignore-missing -c ./checksums/registry_1.2.3_checksums.txt + + # Extract the tarball + tar -xzf $NAME --no-same-owner --no-same-permissions -C tmp + + # Install the MCP Publisher binary + install -m 0755 tmp/mcp-publisher # Login using GitHub OIDC ./mcp-publisher login github-oidc diff --git a/packages/mcp-stdio/checksums/registry_1.2.3_checksums.txt b/packages/mcp-stdio/checksums/registry_1.2.3_checksums.txt new file mode 100644 index 0000000..c24d44a --- /dev/null +++ b/packages/mcp-stdio/checksums/registry_1.2.3_checksums.txt @@ -0,0 +1,25 @@ +4e7c92f289d903d4649c59f82df6e7b014caebb49d8b5c1d2466667fd6caf68c mcp-publisher_1.2.3_darwin_amd64.tar.gz +09637600871bec7cce25e098d6ce23b7c7577a8e537f618d24a5630d2d782afa mcp-publisher_1.2.3_darwin_amd64.tar.gz.sbom.json +9ac90d3182bae9af4b48fb3cd19c3cade3e52c8ea25d7aa14327326a209bcf71 mcp-publisher_1.2.3_darwin_arm64.tar.gz +0b2cedf3f42c5a7b33bdd3f72ce7f4c938ff4fe2aca5cabd60094dc4b855c1f6 mcp-publisher_1.2.3_darwin_arm64.tar.gz.sbom.json +868a54268f21580ec97ec9dfc4fc3442a7f69c241ee7c745c7032f2e43cdf47b mcp-publisher_1.2.3_linux_amd64.tar.gz +a7bce190ea1c1b5682d1b5069b20dd9c67f3688e02dbc93e7273e942097dac4d mcp-publisher_1.2.3_linux_amd64.tar.gz.sbom.json +319cdefb4c4f19fa35eeb0337e30be3169dbf3107a8c160651691a6342a6783b mcp-publisher_1.2.3_linux_arm64.tar.gz +bc9309ab843531e811990dcf637b9912c470fc38eddc13a5af0512fcef498944 mcp-publisher_1.2.3_linux_arm64.tar.gz.sbom.json +298026e0252547046f50dcb7817239d44107f5a3ae64f4e43b6a31d0c5b89f9b mcp-publisher_1.2.3_windows_amd64.tar.gz +971b835ce4df2b37ddcf8591d4400dc94d1e3f730b181b325c905261b75b9e6e mcp-publisher_1.2.3_windows_amd64.tar.gz.sbom.json +64da67b451d0fba12f15f7b0f6ab8d71c718bb2263f90f198ff1fe15a5ff2024 mcp-publisher_1.2.3_windows_arm64.tar.gz +f591b2153f1277cb67817763a23de9e77188fa94b893fac00e91d13160d696e3 mcp-publisher_1.2.3_windows_arm64.tar.gz.sbom.json +265377b343500898e3c3fea798926ff2695fe7500c1225c8a97f390a5892d849 registry-1.2.3.tar.gz +a9c03a84d2e30176d6ed7b493e7e3a8a05d446f1611a35bad6007fbe3ba80657 registry_1.2.3_darwin_amd64.tar.gz +4db4e8a0b1f3d0ca193e5356fef89b74c0666cdf56d6f3c8fc2d0aba1cac3b55 registry_1.2.3_darwin_amd64.tar.gz.sbom.json +2933a11990db16035e4896f394ada389166046911e6868f79b84636048dfe6fb registry_1.2.3_darwin_arm64.tar.gz +edd36e62f4b1c5b857da1862f20cbcf6dd3dfd9717888c08bd5c25740d8b11f6 registry_1.2.3_darwin_arm64.tar.gz.sbom.json +59bdd9977795891220e6fdb8f79dd7d14f48166362e94699bee59e745f7c7df6 registry_1.2.3_linux_amd64.tar.gz +7f7efb180aa312f674377e32a92ac3600e50c62e37d697d2d16acfe60227a2fd registry_1.2.3_linux_amd64.tar.gz.sbom.json +7fef1088a664850dd75e54a699fce6a5fb32e8ebbdc0d2869b6b34945727ba9c registry_1.2.3_linux_arm64.tar.gz +ca0488e5cbb04c8ee515e1b80e08b755a55d6af1784368a2f55e429137359a25 registry_1.2.3_linux_arm64.tar.gz.sbom.json +5bc29310aacc08437dcc973cfc1e1129f7065d2050396012f5ed98c4eb0ea75b registry_1.2.3_windows_amd64.tar.gz +e918c604f23e6d33f9952f18eddf0e50e50d7ce3e87ca5258bf78f4f1da243ab registry_1.2.3_windows_amd64.tar.gz.sbom.json +394cad1e6f5e37a583defdd522edbff854de5035d6e025a195664db31b58c0c0 registry_1.2.3_windows_arm64.tar.gz +c93df66f3257ba4b9c29f7bfded4cf04d712ec220b044ddfa019da3e4bd6475f registry_1.2.3_windows_arm64.tar.gz.sbom.json