From 09addeb0bdbbf6563738266eb59d221ecbcaf68c Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 11:01:00 -0300 Subject: [PATCH 01/36] chore: add publish-providers workflow --- .github/workflows/publish-providers.yml | 114 ++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 .github/workflows/publish-providers.yml diff --git a/.github/workflows/publish-providers.yml b/.github/workflows/publish-providers.yml new file mode 100644 index 00000000..362b4afd --- /dev/null +++ b/.github/workflows/publish-providers.yml @@ -0,0 +1,114 @@ +name: publish-providers + +on: + push: + branches: + - main + paths: + - 'packages/mcp-provider-api/**' + - 'packages/mcp-provider-dx-core/**' + - 'packages/mcp-provider-code-analyzer/**' + +jobs: + detect-changes: + runs-on: ubuntu-latest + outputs: + changed-packages: ${{ steps.detect.outputs.packages }} + has-changes: ${{ steps.detect.outputs.has-changes }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Detect changed packages + id: detect + run: | + # Get changed files in the last commit + CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD) + + # Initialize packages array + PACKAGES='[]' + HAS_CHANGES=false + + # Check each provider package for changes + for pkg in mcp-provider-api mcp-provider-dx-core mcp-provider-code-analyzer; do + if echo "$CHANGED_FILES" | grep -q "^packages/$pkg/"; then + PACKAGES=$(echo "$PACKAGES" | jq --arg pkg "$pkg" '. += [$pkg]') + HAS_CHANGES=true + echo "Detected changes in: $pkg" + fi + done + + echo "packages=$PACKAGES" >> "$GITHUB_OUTPUT" + echo "has-changes=$HAS_CHANGES" >> "$GITHUB_OUTPUT" + echo "Changed packages: $PACKAGES" + + publish-package: + needs: detect-changes + if: needs.detect-changes.outputs.has-changes == 'true' + runs-on: ubuntu-latest + strategy: + matrix: + package: ${{ fromJson(needs.detect-changes.outputs.changed-packages) }} + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + fetch-depth: 0 + + - name: Get Github user info + id: github-user-info + uses: salesforcecli/github-workflows/.github/actions/getGithubUserInfo@main + with: + SVC_CLI_BOT_GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + + - uses: actions/setup-node@v4 + with: + node-version: 'lts/*' + cache: yarn + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Build package + run: | + cd packages/${{ matrix.package }} + yarn build + + - name: Conventional Changelog Action + id: changelog + uses: TriPSs/conventional-changelog-action@3a392e9aa44a72686b0fc13259a90d287dd0877c + with: + git-user-name: ${{ steps.github-user-info.outputs.username }} + git-user-email: ${{ steps.github-user-info.outputs.email }} + github-token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + tag-prefix: "${{ matrix.package }}@" + release-count: "0" + skip-on-empty: true + git-path: "packages/${{ matrix.package }}" + version-file: "packages/${{ matrix.package }}/package.json" + output-file: "packages/${{ matrix.package }}/CHANGELOG.md" + + - name: Create Github Release + id: release + uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5 + if: ${{ steps.changelog.outputs.skipped == 'false' }} + with: + name: "${{ matrix.package }}@${{ steps.changelog.outputs.version }}" + tag: "${{ matrix.package }}@${{ steps.changelog.outputs.version }}" + commit: ${{ github.sha }} + body: | + ## Changes in ${{ matrix.package }} + + ${{ steps.changelog.outputs.clean_changelog }} + token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + skipIfReleaseExists: true + + - name: Publish to npm + if: ${{ steps.changelog.outputs.skipped == 'false' && steps.release.outputs.id != '' }} + run: | + cd packages/${{ matrix.package }} + echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc + npm publish --access public + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file From 6d790273e2d3953d0f81a183b27d4b79a9350be9 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 11:02:33 -0300 Subject: [PATCH 02/36] chore: skip code-analyzer provider --- .github/workflows/publish-providers.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-providers.yml b/.github/workflows/publish-providers.yml index 362b4afd..4114118f 100644 --- a/.github/workflows/publish-providers.yml +++ b/.github/workflows/publish-providers.yml @@ -7,7 +7,7 @@ on: paths: - 'packages/mcp-provider-api/**' - 'packages/mcp-provider-dx-core/**' - - 'packages/mcp-provider-code-analyzer/**' + # - 'packages/mcp-provider-code-analyzer/**' jobs: detect-changes: @@ -31,7 +31,8 @@ jobs: HAS_CHANGES=false # Check each provider package for changes - for pkg in mcp-provider-api mcp-provider-dx-core mcp-provider-code-analyzer; do + # for pkg in mcp-provider-api mcp-provider-dx-core mcp-provider-code-analyzer; do + for pkg in mcp-provider-api mcp-provider-dx-core; do if echo "$CHANGED_FILES" | grep -q "^packages/$pkg/"; then PACKAGES=$(echo "$PACKAGES" | jq --arg pkg "$pkg" '. += [$pkg]') HAS_CHANGES=true @@ -111,4 +112,4 @@ jobs: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc npm publish --access public env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} From 2951bec17536274ebe3f3d4d6cbff155ce479f29 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 11:11:13 -0300 Subject: [PATCH 03/36] fix: force provider-api pkg release --- packages/mcp-provider-api/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mcp-provider-api/package.json b/packages/mcp-provider-api/package.json index 06d501d0..d5e257fb 100644 --- a/packages/mcp-provider-api/package.json +++ b/packages/mcp-provider-api/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/mcp-provider-api", "description": "(For Internal Use Only) API to implement a McpProvider that provides prompts, resources, and tools to be registered by an MCP server", - "version": "0.0.1-alpha.1", + "version": "0.0.1-alpha.0", "type": "module", "license": "Apache-2.0", "main": "dist/index.js", From 03c1b507dbd1cf855fbee11e5bea858d6379fc9c Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 11:20:20 -0300 Subject: [PATCH 04/36] chore: manual dispach [skip ci] --- .github/workflows/publish-providers.yml | 66 ++++++++++++++++++++----- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/.github/workflows/publish-providers.yml b/.github/workflows/publish-providers.yml index 4114118f..d3021a54 100644 --- a/.github/workflows/publish-providers.yml +++ b/.github/workflows/publish-providers.yml @@ -8,6 +8,16 @@ on: - 'packages/mcp-provider-api/**' - 'packages/mcp-provider-dx-core/**' # - 'packages/mcp-provider-code-analyzer/**' + workflow_dispatch: + inputs: + packages: + description: 'Comma-separated list of packages to publish (e.g., mcp-provider-api,mcp-provider-dx-core). Leave empty to publish all available packages.' + type: string + default: '' + skip-on-empty: + description: 'Skip publishing if no semantic commits found' + type: boolean + default: true jobs: detect-changes: @@ -23,26 +33,58 @@ jobs: - name: Detect changed packages id: detect run: | - # Get changed files in the last commit - CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD) + # All available provider packages + ALL_PACKAGES=("mcp-provider-api" "mcp-provider-dx-core" "mcp-provider-code-analyzer") # Initialize packages array PACKAGES='[]' HAS_CHANGES=false - # Check each provider package for changes - # for pkg in mcp-provider-api mcp-provider-dx-core mcp-provider-code-analyzer; do - for pkg in mcp-provider-api mcp-provider-dx-core; do - if echo "$CHANGED_FILES" | grep -q "^packages/$pkg/"; then - PACKAGES=$(echo "$PACKAGES" | jq --arg pkg "$pkg" '. += [$pkg]') - HAS_CHANGES=true - echo "Detected changes in: $pkg" + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + echo "Manual workflow dispatch detected" + + if [ -n "${{ inputs.packages }}" ]; then + # Parse comma-separated input + IFS=',' read -ra SPECIFIED_PACKAGES <<< "${{ inputs.packages }}" + for pkg in "${SPECIFIED_PACKAGES[@]}"; do + # Trim whitespace + pkg=$(echo "$pkg" | xargs) + # Validate package exists + if [[ " ${ALL_PACKAGES[@]} " =~ " ${pkg} " ]]; then + PACKAGES=$(echo "$PACKAGES" | jq --arg pkg "$pkg" '. += [$pkg]') + HAS_CHANGES=true + echo "Manual publish requested for: $pkg" + else + echo "Warning: Unknown package '$pkg' specified, skipping" + fi + done + else + # No packages specified, publish auto-publishable packages only + # code-analyzer is excluded from bulk operations and must be specified explicitly + for pkg in mcp-provider-api mcp-provider-dx-core; do + PACKAGES=$(echo "$PACKAGES" | jq --arg pkg "$pkg" '. += [$pkg]') + HAS_CHANGES=true + echo "Manual publish requested for: $pkg" + done fi - done + else + echo "Push event detected, checking for changed files" + # Get changed files in the last commit + CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD) + + # Check each provider package for changes (only auto-publish enabled packages) + for pkg in mcp-provider-api mcp-provider-dx-core; do + if echo "$CHANGED_FILES" | grep -q "^packages/$pkg/"; then + PACKAGES=$(echo "$PACKAGES" | jq --arg pkg "$pkg" '. += [$pkg]') + HAS_CHANGES=true + echo "Detected changes in: $pkg" + fi + done + fi echo "packages=$PACKAGES" >> "$GITHUB_OUTPUT" echo "has-changes=$HAS_CHANGES" >> "$GITHUB_OUTPUT" - echo "Changed packages: $PACKAGES" + echo "Final packages to process: $PACKAGES" publish-package: needs: detect-changes @@ -85,7 +127,7 @@ jobs: github-token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} tag-prefix: "${{ matrix.package }}@" release-count: "0" - skip-on-empty: true + skip-on-empty: ${{ github.event_name == 'push' || inputs.skip-on-empty }} git-path: "packages/${{ matrix.package }}" version-file: "packages/${{ matrix.package }}/package.json" output-file: "packages/${{ matrix.package }}/CHANGELOG.md" From fef2e12c2d6e030a6725e82789b3dffdeb85e0ff Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 11:32:59 -0300 Subject: [PATCH 05/36] chore: compact json [skip ci] --- .github/workflows/publish-providers.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-providers.yml b/.github/workflows/publish-providers.yml index d3021a54..ed0309cb 100644 --- a/.github/workflows/publish-providers.yml +++ b/.github/workflows/publish-providers.yml @@ -51,7 +51,7 @@ jobs: pkg=$(echo "$pkg" | xargs) # Validate package exists if [[ " ${ALL_PACKAGES[@]} " =~ " ${pkg} " ]]; then - PACKAGES=$(echo "$PACKAGES" | jq --arg pkg "$pkg" '. += [$pkg]') + PACKAGES=$(echo "$PACKAGES" | jq -c --arg pkg "$pkg" '. += [$pkg]') HAS_CHANGES=true echo "Manual publish requested for: $pkg" else @@ -62,7 +62,7 @@ jobs: # No packages specified, publish auto-publishable packages only # code-analyzer is excluded from bulk operations and must be specified explicitly for pkg in mcp-provider-api mcp-provider-dx-core; do - PACKAGES=$(echo "$PACKAGES" | jq --arg pkg "$pkg" '. += [$pkg]') + PACKAGES=$(echo "$PACKAGES" | jq -c --arg pkg "$pkg" '. += [$pkg]') HAS_CHANGES=true echo "Manual publish requested for: $pkg" done @@ -75,7 +75,7 @@ jobs: # Check each provider package for changes (only auto-publish enabled packages) for pkg in mcp-provider-api mcp-provider-dx-core; do if echo "$CHANGED_FILES" | grep -q "^packages/$pkg/"; then - PACKAGES=$(echo "$PACKAGES" | jq --arg pkg "$pkg" '. += [$pkg]') + PACKAGES=$(echo "$PACKAGES" | jq -c --arg pkg "$pkg" '. += [$pkg]') HAS_CHANGES=true echo "Detected changes in: $pkg" fi From 000991e23245d7ce8aa8e5446879b0ddafa808ea Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 11:41:59 -0300 Subject: [PATCH 06/36] chore: fix version --- packages/mcp-provider-api/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mcp-provider-api/package.json b/packages/mcp-provider-api/package.json index d5e257fb..06d501d0 100644 --- a/packages/mcp-provider-api/package.json +++ b/packages/mcp-provider-api/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/mcp-provider-api", "description": "(For Internal Use Only) API to implement a McpProvider that provides prompts, resources, and tools to be registered by an MCP server", - "version": "0.0.1-alpha.0", + "version": "0.0.1-alpha.1", "type": "module", "license": "Apache-2.0", "main": "dist/index.js", From a96331d9988f6d5a7ff4ac879c46a343d7769ce2 Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Tue, 26 Aug 2025 14:43:46 +0000 Subject: [PATCH 07/36] chore(release): mcp-provider-api@0.1.0 [skip ci] --- packages/mcp-provider-api/CHANGELOG.md | 15 +++++++++++++++ packages/mcp-provider-api/package.json | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 packages/mcp-provider-api/CHANGELOG.md diff --git a/packages/mcp-provider-api/CHANGELOG.md b/packages/mcp-provider-api/CHANGELOG.md new file mode 100644 index 00000000..f5a7f0a8 --- /dev/null +++ b/packages/mcp-provider-api/CHANGELOG.md @@ -0,0 +1,15 @@ +# 0.1.0 (2025-08-26) + + +### Bug Fixes + +* force provider-api pkg release ([2951bec](https://github.com/salesforcecli/mcp/commit/2951bec17536274ebe3f3d4d6cbff155ce479f29)) +* **W-19398430:** clean up from initial refactor ([#148](https://github.com/salesforcecli/mcp/issues/148)) ([39a8a8a](https://github.com/salesforcecli/mcp/commit/39a8a8af9519529281acb1ee5b49ad4fd3f0229c)) + + +### Features + +* **W-19398454:** move dx core tools to separate package ([#155](https://github.com/salesforcecli/mcp/issues/155)) ([36f94bb](https://github.com/salesforcecli/mcp/commit/36f94bb97e0ba4de8aeba700ff947d03eb865bc0)) + + + diff --git a/packages/mcp-provider-api/package.json b/packages/mcp-provider-api/package.json index 06d501d0..c7df5023 100644 --- a/packages/mcp-provider-api/package.json +++ b/packages/mcp-provider-api/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/mcp-provider-api", "description": "(For Internal Use Only) API to implement a McpProvider that provides prompts, resources, and tools to be registered by an MCP server", - "version": "0.0.1-alpha.1", + "version": "0.1.0", "type": "module", "license": "Apache-2.0", "main": "dist/index.js", From 3bdf7e9334e6b3ab5edadf5059a0eb1008848789 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 14:59:48 -0300 Subject: [PATCH 08/36] chore: remove ref to provider-api alpha version --- packages/EXAMPLE-MCP-PROVIDER/package.json | 2 +- packages/mcp-provider-code-analyzer/package.json | 4 ++-- packages/mcp-provider-dx-core/package.json | 2 +- packages/mcp/package.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/EXAMPLE-MCP-PROVIDER/package.json b/packages/EXAMPLE-MCP-PROVIDER/package.json index ef2858b1..f3a11f36 100644 --- a/packages/EXAMPLE-MCP-PROVIDER/package.json +++ b/packages/EXAMPLE-MCP-PROVIDER/package.json @@ -14,7 +14,7 @@ "types": "dist/index.d.ts", "dependencies": { "@modelcontextprotocol/sdk": "^1.17.3", - "@salesforce/mcp-provider-api": "0.0.1-alpha.1", + "@salesforce/mcp-provider-api": "^0.1.0", "zod": "^3.23.8" }, "devDependencies": { diff --git a/packages/mcp-provider-code-analyzer/package.json b/packages/mcp-provider-code-analyzer/package.json index 28e79997..aeda7933 100644 --- a/packages/mcp-provider-code-analyzer/package.json +++ b/packages/mcp-provider-code-analyzer/package.json @@ -20,7 +20,7 @@ "@salesforce/code-analyzer-pmd-engine": "0.28.0", "@salesforce/code-analyzer-regex-engine": "0.24.0", "@salesforce/code-analyzer-retirejs-engine": "0.24.0", - "@salesforce/mcp-provider-api": "0.0.1-alpha.1", + "@salesforce/mcp-provider-api": "^0.1.0", "zod": "^3.23.8" }, "devDependencies": { @@ -48,4 +48,4 @@ "package": "yarn pack", "test": "vitest run --coverage" } -} \ No newline at end of file +} diff --git a/packages/mcp-provider-dx-core/package.json b/packages/mcp-provider-dx-core/package.json index 7aebc71d..8603d18e 100644 --- a/packages/mcp-provider-dx-core/package.json +++ b/packages/mcp-provider-dx-core/package.json @@ -48,7 +48,7 @@ "@salesforce/apex-node": "^8.2.1", "@salesforce/core": "^8.18.0", "@salesforce/kit": "^3.1.6", - "@salesforce/mcp-provider-api": "0.0.1-alpha.1", + "@salesforce/mcp-provider-api": "^0.1.0", "@salesforce/source-deploy-retrieve": "^12.22.0", "@salesforce/source-tracking": "^7.4.8", "@salesforce/ts-types": "^2.0.11", diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 23808db5..30849957 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -49,7 +49,7 @@ "@salesforce/apex-node": "^8.2.1", "@salesforce/core": "^8.18.0", "@salesforce/kit": "^3.1.6", - "@salesforce/mcp-provider-api": "0.0.1-alpha.1", + "@salesforce/mcp-provider-api": "^0.1.0", "@salesforce/mcp-provider-dx-core": "0.0.1-alpha.1", "@salesforce/mcp-provider-code-analyzer": "0.0.1-alpha.1", "@salesforce/source-deploy-retrieve": "^12.22.0", From fcebe61275828e9353f969106eb79883dcee103f Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 15:21:35 -0300 Subject: [PATCH 09/36] chore: bump in server after publishing a provider --- .github/workflows/publish-providers.yml | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/.github/workflows/publish-providers.yml b/.github/workflows/publish-providers.yml index ed0309cb..0ab99f8d 100644 --- a/.github/workflows/publish-providers.yml +++ b/.github/workflows/publish-providers.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - cd/fix-publish-workflows paths: - 'packages/mcp-provider-api/**' - 'packages/mcp-provider-dx-core/**' @@ -155,3 +156,33 @@ jobs: npm publish --access public env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + - name: Update main server dependency + if: ${{ steps.changelog.outputs.skipped == 'false' && steps.release.outputs.id != '' }} + run: | + # Get the published version + PUBLISHED_VERSION="${{ steps.changelog.outputs.version }}" + PACKAGE_NAME="@salesforce/${{ matrix.package }}" + + echo "Updating $PACKAGE_NAME to version $PUBLISHED_VERSION in main MCP server" + + # Update the dependency in main server's package.json using jq + cd packages/mcp + jq --arg pkg "$PACKAGE_NAME" --arg ver "^$PUBLISHED_VERSION" \ + '.dependencies[$pkg] = $ver' package.json > package.json.tmp + mv package.json.tmp package.json + + # Go back to root and update yarn.lock + cd ../../ + yarn install --frozen-lockfile=false + + # Commit the changes + git add packages/mcp/package.json yarn.lock + git config user.name "${{ steps.github-user-info.outputs.username }}" + git config user.email "${{ steps.github-user-info.outputs.email }}" + git commit -m "chore: bump $PACKAGE_NAME to ^$PUBLISHED_VERSION + + Auto-update dependency after provider package publish. + + Related release: ${{ matrix.package }}@${{ steps.changelog.outputs.version }}" + git push From e3f5ea51e9e029cda72648fa9628693035e55128 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 15:28:14 -0300 Subject: [PATCH 10/36] fix: trigger initial dx provider release --- packages/mcp-provider-dx-core/package.json | 2 +- packages/mcp/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mcp-provider-dx-core/package.json b/packages/mcp-provider-dx-core/package.json index 8603d18e..d4d9f24e 100644 --- a/packages/mcp-provider-dx-core/package.json +++ b/packages/mcp-provider-dx-core/package.json @@ -1,6 +1,6 @@ { "name": "@salesforce/mcp-provider-dx-core", - "version": "0.0.1-alpha.1", + "version": "0.0.1", "description": "MCP provider for core Salesforce DX functionality", "types": "lib/index.d.ts", "license": "Apache-2.0", diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 30849957..d6cb1085 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -50,7 +50,7 @@ "@salesforce/core": "^8.18.0", "@salesforce/kit": "^3.1.6", "@salesforce/mcp-provider-api": "^0.1.0", - "@salesforce/mcp-provider-dx-core": "0.0.1-alpha.1", + "@salesforce/mcp-provider-dx-core": "^0.0.1", "@salesforce/mcp-provider-code-analyzer": "0.0.1-alpha.1", "@salesforce/source-deploy-retrieve": "^12.22.0", "@salesforce/source-tracking": "^7.4.8", From c99a55e56c43333f4d0382c61f6f998323af2515 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 15:40:53 -0300 Subject: [PATCH 11/36] fix: tmp skip linting --- .github/workflows/publish-providers.yml | 3 ++- packages/mcp-provider-dx-core/package.json | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-providers.yml b/.github/workflows/publish-providers.yml index 0ab99f8d..d3074ced 100644 --- a/.github/workflows/publish-providers.yml +++ b/.github/workflows/publish-providers.yml @@ -180,7 +180,8 @@ jobs: git add packages/mcp/package.json yarn.lock git config user.name "${{ steps.github-user-info.outputs.username }}" git config user.email "${{ steps.github-user-info.outputs.email }}" - git commit -m "chore: bump $PACKAGE_NAME to ^$PUBLISHED_VERSION + # TODO(cristian): remove `--no-verify` after linting issues are solved + git commit -m "chore: bump $PACKAGE_NAME to ^$PUBLISHED_VERSION --no-verify Auto-update dependency after provider package publish. diff --git a/packages/mcp-provider-dx-core/package.json b/packages/mcp-provider-dx-core/package.json index d4d9f24e..806d5c79 100644 --- a/packages/mcp-provider-dx-core/package.json +++ b/packages/mcp-provider-dx-core/package.json @@ -74,8 +74,7 @@ "build": { "dependencies": [ "../mcp-provider-api:build", - "compile", - "lint" + "compile" ] }, "compile": { From 9722977a829145eefb1cb2cdea800b5ccb85c32d Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Tue, 26 Aug 2025 18:42:37 +0000 Subject: [PATCH 12/36] chore(release): mcp-provider-dx-core@0.1.0 [skip ci] --- packages/mcp-provider-dx-core/CHANGELOG.md | 15 +++++++++++++++ packages/mcp-provider-dx-core/package.json | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 packages/mcp-provider-dx-core/CHANGELOG.md diff --git a/packages/mcp-provider-dx-core/CHANGELOG.md b/packages/mcp-provider-dx-core/CHANGELOG.md new file mode 100644 index 00000000..7574c208 --- /dev/null +++ b/packages/mcp-provider-dx-core/CHANGELOG.md @@ -0,0 +1,15 @@ +# 0.1.0 (2025-08-26) + + +### Bug Fixes + +* tmp skip linting ([c99a55e](https://github.com/salesforcecli/mcp/commit/c99a55e56c43333f4d0382c61f6f998323af2515)) +* trigger initial dx provider release ([e3f5ea5](https://github.com/salesforcecli/mcp/commit/e3f5ea51e9e029cda72648fa9628693035e55128)) + + +### Features + +* **W-19398454:** move dx core tools to separate package ([#155](https://github.com/salesforcecli/mcp/issues/155)) ([36f94bb](https://github.com/salesforcecli/mcp/commit/36f94bb97e0ba4de8aeba700ff947d03eb865bc0)) + + + diff --git a/packages/mcp-provider-dx-core/package.json b/packages/mcp-provider-dx-core/package.json index 806d5c79..d229a655 100644 --- a/packages/mcp-provider-dx-core/package.json +++ b/packages/mcp-provider-dx-core/package.json @@ -1,6 +1,6 @@ { "name": "@salesforce/mcp-provider-dx-core", - "version": "0.0.1", + "version": "0.1.0", "description": "MCP provider for core Salesforce DX functionality", "types": "lib/index.d.ts", "license": "Apache-2.0", From 6d55b2ecd68017c8c152cfd64bf4596ded93129a Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 15:52:03 -0300 Subject: [PATCH 13/36] chore: fix install --- .github/workflows/publish-providers.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-providers.yml b/.github/workflows/publish-providers.yml index d3074ced..7a191773 100644 --- a/.github/workflows/publish-providers.yml +++ b/.github/workflows/publish-providers.yml @@ -174,7 +174,7 @@ jobs: # Go back to root and update yarn.lock cd ../../ - yarn install --frozen-lockfile=false + yarn install # Commit the changes git add packages/mcp/package.json yarn.lock From c457278a7c609cdd48c39d7f97a52de4d85e6afa Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 15:54:52 -0300 Subject: [PATCH 14/36] chore: bump provider --- packages/mcp/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mcp/package.json b/packages/mcp/package.json index d6cb1085..c82879ac 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -50,7 +50,7 @@ "@salesforce/core": "^8.18.0", "@salesforce/kit": "^3.1.6", "@salesforce/mcp-provider-api": "^0.1.0", - "@salesforce/mcp-provider-dx-core": "^0.0.1", + "@salesforce/mcp-provider-dx-core": "^0.1.0", "@salesforce/mcp-provider-code-analyzer": "0.0.1-alpha.1", "@salesforce/source-deploy-retrieve": "^12.22.0", "@salesforce/source-tracking": "^7.4.8", From c2dc21501c7a04cf8e9248c312cd9a0b011249a3 Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Tue, 26 Aug 2025 19:09:14 +0000 Subject: [PATCH 15/36] chore(release): mcp-provider-dx-core@0.1.1 [skip ci] --- packages/mcp-provider-dx-core/CHANGELOG.md | 6 +++++- packages/mcp-provider-dx-core/package.json | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/mcp-provider-dx-core/CHANGELOG.md b/packages/mcp-provider-dx-core/CHANGELOG.md index 7574c208..a6395a2a 100644 --- a/packages/mcp-provider-dx-core/CHANGELOG.md +++ b/packages/mcp-provider-dx-core/CHANGELOG.md @@ -1,4 +1,8 @@ -# 0.1.0 (2025-08-26) +## [0.1.1](https://github.com/salesforcecli/mcp/compare/mcp-provider-dx-core@0.1.0...mcp-provider-dx-core@0.1.1) (2025-08-26) + + + +# [0.1.0](https://github.com/salesforcecli/mcp/compare/36f94bb97e0ba4de8aeba700ff947d03eb865bc0...mcp-provider-dx-core@0.1.0) (2025-08-26) ### Bug Fixes diff --git a/packages/mcp-provider-dx-core/package.json b/packages/mcp-provider-dx-core/package.json index d229a655..3bc88601 100644 --- a/packages/mcp-provider-dx-core/package.json +++ b/packages/mcp-provider-dx-core/package.json @@ -1,6 +1,6 @@ { "name": "@salesforce/mcp-provider-dx-core", - "version": "0.1.0", + "version": "0.1.1", "description": "MCP provider for core Salesforce DX functionality", "types": "lib/index.d.ts", "license": "Apache-2.0", From 86ccc8e86040f6660de9a4ba777eff6c37907ecf Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 16:12:37 -0300 Subject: [PATCH 16/36] chore: nuke node_modules to workaround dep issue --- .github/workflows/publish-providers.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/publish-providers.yml b/.github/workflows/publish-providers.yml index 7a191773..a33c566a 100644 --- a/.github/workflows/publish-providers.yml +++ b/.github/workflows/publish-providers.yml @@ -174,6 +174,8 @@ jobs: # Go back to root and update yarn.lock cd ../../ + # TODO(cristian): need to nuke all `node_modules` to cleanup some dep, running `yarn install` 2 times fails at the second run. + git clean -fdx yarn install # Commit the changes From 3ba1ede642d5e8e219cacc4057f99112ac869ebe Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Tue, 26 Aug 2025 19:14:23 +0000 Subject: [PATCH 17/36] chore(release): mcp-provider-dx-core@0.1.2 [skip ci] --- packages/mcp-provider-dx-core/CHANGELOG.md | 4 ++++ packages/mcp-provider-dx-core/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/mcp-provider-dx-core/CHANGELOG.md b/packages/mcp-provider-dx-core/CHANGELOG.md index a6395a2a..43c6863f 100644 --- a/packages/mcp-provider-dx-core/CHANGELOG.md +++ b/packages/mcp-provider-dx-core/CHANGELOG.md @@ -1,3 +1,7 @@ +## [0.1.2](https://github.com/salesforcecli/mcp/compare/mcp-provider-dx-core@0.1.1...mcp-provider-dx-core@0.1.2) (2025-08-26) + + + ## [0.1.1](https://github.com/salesforcecli/mcp/compare/mcp-provider-dx-core@0.1.0...mcp-provider-dx-core@0.1.1) (2025-08-26) diff --git a/packages/mcp-provider-dx-core/package.json b/packages/mcp-provider-dx-core/package.json index 3bc88601..4af17588 100644 --- a/packages/mcp-provider-dx-core/package.json +++ b/packages/mcp-provider-dx-core/package.json @@ -1,6 +1,6 @@ { "name": "@salesforce/mcp-provider-dx-core", - "version": "0.1.1", + "version": "0.1.2", "description": "MCP provider for core Salesforce DX functionality", "types": "lib/index.d.ts", "license": "Apache-2.0", From 50d7b17dfb6484adc6b8c4432af5a46e34be8260 Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Tue, 26 Aug 2025 19:15:29 +0000 Subject: [PATCH 18/36] chore: bump @salesforce/mcp-provider-dx-core to ^0.1.2 --no-verify Auto-update dependency after provider package publish. Related release: mcp-provider-dx-core@0.1.2 --- packages/mcp/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mcp/package.json b/packages/mcp/package.json index c82879ac..f41e9253 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -50,7 +50,7 @@ "@salesforce/core": "^8.18.0", "@salesforce/kit": "^3.1.6", "@salesforce/mcp-provider-api": "^0.1.0", - "@salesforce/mcp-provider-dx-core": "^0.1.0", + "@salesforce/mcp-provider-dx-core": "^0.1.2", "@salesforce/mcp-provider-code-analyzer": "0.0.1-alpha.1", "@salesforce/source-deploy-retrieve": "^12.22.0", "@salesforce/source-tracking": "^7.4.8", From 471fe5a88746a2fd80b347ba7eb7c0e42a2418a0 Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Tue, 26 Aug 2025 19:51:01 +0000 Subject: [PATCH 19/36] chore(release): mcp-provider-code-analyzer@0.0.1 [skip ci] --- .../mcp-provider-code-analyzer/CHANGELOG.md | 4 + .../mcp-provider-code-analyzer/package.json | 98 +++++++++---------- 2 files changed, 53 insertions(+), 49 deletions(-) create mode 100644 packages/mcp-provider-code-analyzer/CHANGELOG.md diff --git a/packages/mcp-provider-code-analyzer/CHANGELOG.md b/packages/mcp-provider-code-analyzer/CHANGELOG.md new file mode 100644 index 00000000..ec3ec9f9 --- /dev/null +++ b/packages/mcp-provider-code-analyzer/CHANGELOG.md @@ -0,0 +1,4 @@ +## 0.0.1 (2025-08-26) + + + diff --git a/packages/mcp-provider-code-analyzer/package.json b/packages/mcp-provider-code-analyzer/package.json index aeda7933..feb0b0fc 100644 --- a/packages/mcp-provider-code-analyzer/package.json +++ b/packages/mcp-provider-code-analyzer/package.json @@ -1,51 +1,51 @@ { - "name": "@salesforce/mcp-provider-code-analyzer", - "description": "(For Interal Use Only) Provides MCP Tools for Salesforce Code Analyzer to a MCP Server", - "version": "0.0.1-alpha.1", - "author": "Salesforce", - "license": "Apache-2.0", - "type": "module", - "repository": { - "type": "git", - "url": "git+https://github.com/salesforcecli/mcp.git", - "directory": "packages/mcp-provider-code-analyzer" - }, - "main": "dist/index.js", - "types": "dist/index.d.ts", - "dependencies": { - "@modelcontextprotocol/sdk": "^1.17.3", - "@salesforce/code-analyzer-core": "0.31.0", - "@salesforce/code-analyzer-engine-api": "0.26.0", - "@salesforce/code-analyzer-eslint-engine": "0.28.0", - "@salesforce/code-analyzer-pmd-engine": "0.28.0", - "@salesforce/code-analyzer-regex-engine": "0.24.0", - "@salesforce/code-analyzer-retirejs-engine": "0.24.0", - "@salesforce/mcp-provider-api": "^0.1.0", - "zod": "^3.23.8" - }, - "devDependencies": { - "@eslint/js": "^9.32.0", - "@types/node": "^22.16.5", - "@vitest/coverage-istanbul": "^3.2.4", - "eslint": "^9.32.0", - "rimraf": "^6.0.1", - "typescript": "^5.9.2", - "typescript-eslint": "^8.37.0", - "vite": "^7.0.6", - "vitest": "^3.2.4" - }, - "files": [ - "dist", - "LICENSE.txt", - "package.json" - ], - "scripts": { - "build": "tsc --build tsconfig.build.json --verbose", - "clean": "tsc --build tsconfig.build.json --clean", - "clean-all": "yarn clean && rimraf node_modules", - "lint": "eslint **/*.ts", - "postclean": "rimraf dist && rimraf ./*.tgz", - "package": "yarn pack", - "test": "vitest run --coverage" - } + "name": "@salesforce/mcp-provider-code-analyzer", + "description": "(For Interal Use Only) Provides MCP Tools for Salesforce Code Analyzer to a MCP Server", + "version": "0.0.1", + "author": "Salesforce", + "license": "Apache-2.0", + "type": "module", + "repository": { + "type": "git", + "url": "git+https://github.com/salesforcecli/mcp.git", + "directory": "packages/mcp-provider-code-analyzer" + }, + "main": "dist/index.js", + "types": "dist/index.d.ts", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.17.3", + "@salesforce/code-analyzer-core": "0.31.0", + "@salesforce/code-analyzer-engine-api": "0.26.0", + "@salesforce/code-analyzer-eslint-engine": "0.28.0", + "@salesforce/code-analyzer-pmd-engine": "0.28.0", + "@salesforce/code-analyzer-regex-engine": "0.24.0", + "@salesforce/code-analyzer-retirejs-engine": "0.24.0", + "@salesforce/mcp-provider-api": "^0.1.0", + "zod": "^3.23.8" + }, + "devDependencies": { + "@eslint/js": "^9.32.0", + "@types/node": "^22.16.5", + "@vitest/coverage-istanbul": "^3.2.4", + "eslint": "^9.32.0", + "rimraf": "^6.0.1", + "typescript": "^5.9.2", + "typescript-eslint": "^8.37.0", + "vite": "^7.0.6", + "vitest": "^3.2.4" + }, + "files": [ + "dist", + "LICENSE.txt", + "package.json" + ], + "scripts": { + "build": "tsc --build tsconfig.build.json --verbose", + "clean": "tsc --build tsconfig.build.json --clean", + "clean-all": "yarn clean && rimraf node_modules", + "lint": "eslint **/*.ts", + "postclean": "rimraf dist && rimraf ./*.tgz", + "package": "yarn pack", + "test": "vitest run --coverage" + } } From fbde171ebab3bb9da137614b6d408dabe5cbc4c3 Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Tue, 26 Aug 2025 19:52:08 +0000 Subject: [PATCH 20/36] chore: bump @salesforce/mcp-provider-code-analyzer to ^0.0.1 --no-verify Auto-update dependency after provider package publish. Related release: mcp-provider-code-analyzer@0.0.1 --- packages/mcp/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mcp/package.json b/packages/mcp/package.json index f41e9253..1fafb52b 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -51,7 +51,7 @@ "@salesforce/kit": "^3.1.6", "@salesforce/mcp-provider-api": "^0.1.0", "@salesforce/mcp-provider-dx-core": "^0.1.2", - "@salesforce/mcp-provider-code-analyzer": "0.0.1-alpha.1", + "@salesforce/mcp-provider-code-analyzer": "^0.0.1", "@salesforce/source-deploy-retrieve": "^12.22.0", "@salesforce/source-tracking": "^7.4.8", "@salesforce/telemetry": "^6.1.0", From 857f594f3aa76232ddf6231c3483eaa070b7103d Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 17:49:26 -0300 Subject: [PATCH 21/36] chore: publish-mcp-workflow --- .github/workflows/publish-mcp-server.yml | 183 +++++++++++++++++++++++ packages/mcp/package.json | 3 +- 2 files changed, 184 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/publish-mcp-server.yml diff --git a/.github/workflows/publish-mcp-server.yml b/.github/workflows/publish-mcp-server.yml new file mode 100644 index 00000000..4e69df42 --- /dev/null +++ b/.github/workflows/publish-mcp-server.yml @@ -0,0 +1,183 @@ +name: publish-mcp-server + +on: + workflow_dispatch: + inputs: + update-providers: + description: 'Update provider dependencies to latest versions' + type: boolean + default: false + providers-to-update: + description: 'Comma-separated list of providers to update (leave empty to update all)' + type: string + default: '' + prerelease: + type: string + description: 'Name to use for the prerelease: beta, dev, etc.' + +jobs: + update-dependencies: + if: inputs.update-providers + runs-on: ubuntu-latest + outputs: + has-updates: ${{ steps.update-deps.outputs.has-updates }} + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + + - name: Get Github user info + id: github-user-info + uses: salesforcecli/github-workflows/.github/actions/getGithubUserInfo@main + with: + SVC_CLI_BOT_GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + + - uses: actions/setup-node@v4 + with: + node-version: 'lts/*' + cache: yarn + + - name: Update provider dependencies + id: update-deps + run: | + cd packages/mcp + + # Define all provider packages + ALL_PROVIDERS=("@salesforce/mcp-provider-api" "@salesforce/mcp-provider-dx-core" "@salesforce/mcp-provider-code-analyzer") + + # Determine which providers to update + if [ -n "${{ inputs.providers-to-update }}" ]; then + IFS=',' read -ra PROVIDERS_TO_UPDATE <<< "${{ inputs.providers-to-update }}" + # Add @salesforce/ prefix if not present + for i in "${!PROVIDERS_TO_UPDATE[@]}"; do + if [[ "${PROVIDERS_TO_UPDATE[i]}" != @salesforce/* ]]; then + PROVIDERS_TO_UPDATE[i]="@salesforce/${PROVIDERS_TO_UPDATE[i]}" + fi + done + else + PROVIDERS_TO_UPDATE=("${ALL_PROVIDERS[@]}") + fi + + HAS_UPDATES=false + UPDATED_PACKAGES=() + + # Update each specified provider + for provider in "${PROVIDERS_TO_UPDATE[@]}"; do + echo "Checking for updates to $provider..." + + # Get current version + CURRENT_VERSION=$(node -p "require('./package.json').dependencies['$provider']") + + # Get latest version from npm + LATEST_VERSION=$(npm show "$provider" version) + + if [ "$CURRENT_VERSION" != "^$LATEST_VERSION" ]; then + echo "Updating $provider from $CURRENT_VERSION to ^$LATEST_VERSION" + + # Update using jq (similar to provider workflow) + jq --arg pkg "$provider" --arg ver "^$LATEST_VERSION" \ + '.dependencies[$pkg] = $ver' package.json > package.json.tmp + mv package.json.tmp package.json + + UPDATED_PACKAGES+=("$provider") + HAS_UPDATES=true + else + echo "$provider is already at latest version (^$LATEST_VERSION)" + fi + done + + echo "has-updates=$HAS_UPDATES" >> "$GITHUB_OUTPUT" + + # Update lockfile and commit changes if any updates were made + if [ "$HAS_UPDATES" = true ]; then + cd ../../ + yarn install + + git config user.name "${{ steps.github-user-info.outputs.username }}" + git config user.email "${{ steps.github-user-info.outputs.email }}" + git add packages/mcp/package.json yarn.lock + git commit -m "chore: update provider dependencies + + Updated packages: + $(printf '%s\n' "${UPDATED_PACKAGES[@]}")" + git push + fi + + publish-server: + needs: [update-dependencies] + if: always() && (needs.update-dependencies.result == 'success' || needs.update-dependencies.result == 'skipped') + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + fetch-depth: 0 + + - name: Get Github user info + id: github-user-info + uses: salesforcecli/github-workflows/.github/actions/getGithubUserInfo@main + with: + SVC_CLI_BOT_GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + + - uses: actions/setup-node@v4 + with: + node-version: 'lts/*' + cache: yarn + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Build package + run: | + cd packages/mcp + yarn build + + - name: Conventional Changelog Action + id: changelog + uses: TriPSs/conventional-changelog-action@3a392e9aa44a72686b0fc13259a90d287dd0877c + with: + git-user-name: ${{ steps.github-user-info.outputs.username }} + git-user-email: ${{ steps.github-user-info.outputs.email }} + github-token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + tag-prefix: "" + release-count: "0" + skip-on-empty: false + git-path: "packages/mcp" + version-file: "packages/mcp/package.json" + output-file: "packages/mcp/CHANGELOG.md" + pre-release: ${{ inputs.prerelease && 'true' || 'false' }} + pre-release-identifier: ${{ inputs.prerelease || '' }} + + - name: Create Github Release + id: release + uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5 + if: ${{ steps.changelog.outputs.skipped == 'false' }} + with: + name: "${{ steps.changelog.outputs.version }}" + tag: "${{ steps.changelog.outputs.version }}" + commit: ${{ github.sha }} + body: | + ## Changes in @salesforce/mcp + + ${{ steps.changelog.outputs.clean_changelog }} + token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + skipIfReleaseExists: true + prerelease: ${{ inputs.prerelease && 'true' || 'false' }} + + - name: Publish to npm + if: ${{ steps.changelog.outputs.skipped == 'false' && steps.release.outputs.id != '' }} + run: | + cd packages/mcp + echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc + + # Determine npm dist-tag + if [ -n "${{ inputs.prerelease }}" ]; then + NPM_TAG="${{ inputs.prerelease }}" + echo "Publishing prerelease to npm tag: $NPM_TAG" + npm publish --access public --tag "$NPM_TAG" + else + echo "Publishing to latest tag" + npm publish --access public + fi + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 1fafb52b..38b12d5e 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -86,8 +86,7 @@ "wireit": { "build": { "dependencies": [ - "compile", - "lint" + "compile" ] }, "compile": { From 1a3f54308e219feb895404429c9c4d0665bb82be Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Tue, 26 Aug 2025 20:55:51 +0000 Subject: [PATCH 22/36] chore(release): 0.17.2-dev.0 [skip ci] --- packages/mcp/CHANGELOG.md | 15 +++++++++++++++ packages/mcp/package.json | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 packages/mcp/CHANGELOG.md diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md new file mode 100644 index 00000000..5f785e82 --- /dev/null +++ b/packages/mcp/CHANGELOG.md @@ -0,0 +1,15 @@ +## [0.17.2-dev.0](https://github.com/salesforcecli/mcp/compare/0.17.1...0.17.2-dev.0) (2025-08-26) + + +### Bug Fixes + +* trigger initial dx provider release ([e3f5ea5](https://github.com/salesforcecli/mcp/commit/e3f5ea51e9e029cda72648fa9628693035e55128)) +* **W-19398430:** clean up from initial refactor ([#148](https://github.com/salesforcecli/mcp/issues/148)) ([39a8a8a](https://github.com/salesforcecli/mcp/commit/39a8a8af9519529281acb1ee5b49ad4fd3f0229c)) + + +### Features + +* **W-19398454:** move dx core tools to separate package ([#155](https://github.com/salesforcecli/mcp/issues/155)) ([36f94bb](https://github.com/salesforcecli/mcp/commit/36f94bb97e0ba4de8aeba700ff947d03eb865bc0)) + + + diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 38b12d5e..c06d3851 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@salesforce/mcp", - "version": "0.17.1", + "version": "0.17.2-dev.0", "description": "MCP Server for interacting with Salesforce instances", "bin": { "sf-mcp-server": "bin/run.js" From 547eed55356aa06c544a174db930c5fd96f89719 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Tue, 26 Aug 2025 18:06:11 -0300 Subject: [PATCH 23/36] chore: remove prepack script [skip ci] --- packages/mcp/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/mcp/package.json b/packages/mcp/package.json index c06d3851..c4aec6cf 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -22,7 +22,6 @@ "lint-fix": "yarn sf-lint --fix", "package": "yarn pack", "postpack": "sf-clean --ignore-signing-artifacts", - "prepack": "sf-prepack", "prepare": "sf-install", "start": "yarn build && npm link && mcp-inspector sf-mcp-server", "test": "wireit", From 5fccb5c7b54fc991f3050e43701c25829bfc566d Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Tue, 26 Aug 2025 21:09:10 +0000 Subject: [PATCH 24/36] chore(release): 0.17.2-dev.1 [skip ci] --- packages/mcp/CHANGELOG.md | 4 ++++ packages/mcp/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md index 5f785e82..7b7a6b4b 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -1,3 +1,7 @@ +## [0.17.2-dev.1](https://github.com/salesforcecli/mcp/compare/0.17.2-dev.0...0.17.2-dev.1) (2025-08-26) + + + ## [0.17.2-dev.0](https://github.com/salesforcecli/mcp/compare/0.17.1...0.17.2-dev.0) (2025-08-26) diff --git a/packages/mcp/package.json b/packages/mcp/package.json index c4aec6cf..9a5d0e92 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@salesforce/mcp", - "version": "0.17.2-dev.0", + "version": "0.17.2-dev.1", "description": "MCP Server for interacting with Salesforce instances", "bin": { "sf-mcp-server": "bin/run.js" From 4358641014bcd4b50c04b9fc43d744794caec3c2 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Wed, 27 Aug 2025 13:17:38 -0300 Subject: [PATCH 25/36] chore: nuke modules in publish-mcp-server workflow [skip ci] --- .github/workflows/publish-mcp-server.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/publish-mcp-server.yml b/.github/workflows/publish-mcp-server.yml index 4e69df42..8e4d4565 100644 --- a/.github/workflows/publish-mcp-server.yml +++ b/.github/workflows/publish-mcp-server.yml @@ -91,6 +91,8 @@ jobs: # Update lockfile and commit changes if any updates were made if [ "$HAS_UPDATES" = true ]; then cd ../../ + # TODO(cristian): need to nuke all `node_modules` to cleanup some dep, running `yarn install` 2 times fails at the second run. + git clean -fdx yarn install git config user.name "${{ steps.github-user-info.outputs.username }}" From 43e2fef31b7678d33dd762f5e3ee744709876d7a Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Wed, 27 Aug 2025 16:21:39 +0000 Subject: [PATCH 26/36] chore(release): 0.17.2-dev.2 [skip ci] --- packages/mcp/CHANGELOG.md | 4 ++++ packages/mcp/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md index 7b7a6b4b..0a268453 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -1,3 +1,7 @@ +## [0.17.2-dev.2](https://github.com/salesforcecli/mcp/compare/0.17.2-dev.1...0.17.2-dev.2) (2025-08-27) + + + ## [0.17.2-dev.1](https://github.com/salesforcecli/mcp/compare/0.17.2-dev.0...0.17.2-dev.1) (2025-08-26) diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 9a5d0e92..1f39c633 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@salesforce/mcp", - "version": "0.17.2-dev.1", + "version": "0.17.2-dev.2", "description": "MCP Server for interacting with Salesforce instances", "bin": { "sf-mcp-server": "bin/run.js" From c63f9683537afacb42566cca91ddbf6a25052a21 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Wed, 27 Aug 2025 14:35:53 -0300 Subject: [PATCH 27/36] chore: skip publish-mcp if no providers were updated [skip ci] --- .github/workflows/publish-mcp-server.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish-mcp-server.yml b/.github/workflows/publish-mcp-server.yml index 8e4d4565..709b802c 100644 --- a/.github/workflows/publish-mcp-server.yml +++ b/.github/workflows/publish-mcp-server.yml @@ -107,7 +107,9 @@ jobs: publish-server: needs: [update-dependencies] - if: always() && (needs.update-dependencies.result == 'success' || needs.update-dependencies.result == 'skipped') + # Skip publishing if update-providers=true but no provider updates were needed + # Logic: Run if (manual release) OR (provider updates were requested AND updates were found) + if: always() && (needs.update-dependencies.result == 'success' || needs.update-dependencies.result == 'skipped') && (!inputs.update-providers || needs.update-dependencies.outputs.has-updates == 'true') runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From 2959bb4f6ec5d783df5385132b1d7e8a128bd95a Mon Sep 17 00:00:00 2001 From: Cristian Dominguez <6853656+cristiand391@users.noreply.github.com> Date: Wed, 27 Aug 2025 16:49:31 -0300 Subject: [PATCH 28/36] Update .github/workflows/publish-providers.yml [skip ci] Co-authored-by: Willhoit --- .github/workflows/publish-providers.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/publish-providers.yml b/.github/workflows/publish-providers.yml index a33c566a..476c3310 100644 --- a/.github/workflows/publish-providers.yml +++ b/.github/workflows/publish-providers.yml @@ -4,7 +4,6 @@ on: push: branches: - main - - cd/fix-publish-workflows paths: - 'packages/mcp-provider-api/**' - 'packages/mcp-provider-dx-core/**' From 841e4418a4cfdd60dcdcf5f4e11302124a4da933 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Wed, 27 Aug 2025 17:01:52 -0300 Subject: [PATCH 29/36] chore: move hardcoded pkgs to AUTO_PUBLISHABLE_PACKAGES arr --- .github/workflows/publish-providers.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-providers.yml b/.github/workflows/publish-providers.yml index 476c3310..161bf5ba 100644 --- a/.github/workflows/publish-providers.yml +++ b/.github/workflows/publish-providers.yml @@ -33,6 +33,9 @@ jobs: - name: Detect changed packages id: detect run: | + # Packages that auto-publish on push to main + AUTO_PUBLISHABLE_PACKAGES=("mcp-provider-api" "mcp-provider-dx-core") + # All available provider packages ALL_PACKAGES=("mcp-provider-api" "mcp-provider-dx-core" "mcp-provider-code-analyzer") @@ -61,7 +64,7 @@ jobs: else # No packages specified, publish auto-publishable packages only # code-analyzer is excluded from bulk operations and must be specified explicitly - for pkg in mcp-provider-api mcp-provider-dx-core; do + for pkg in "${AUTO_PUBLISHABLE_PACKAGES[@]}"; do PACKAGES=$(echo "$PACKAGES" | jq -c --arg pkg "$pkg" '. += [$pkg]') HAS_CHANGES=true echo "Manual publish requested for: $pkg" @@ -73,7 +76,7 @@ jobs: CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD) # Check each provider package for changes (only auto-publish enabled packages) - for pkg in mcp-provider-api mcp-provider-dx-core; do + for pkg in "${AUTO_PUBLISHABLE_PACKAGES[@]}"; do if echo "$CHANGED_FILES" | grep -q "^packages/$pkg/"; then PACKAGES=$(echo "$PACKAGES" | jq -c --arg pkg "$pkg" '. += [$pkg]') HAS_CHANGES=true From eeb66e41f8e971ba48bf8e762d02d35fb3248f56 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Wed, 27 Aug 2025 17:10:09 -0300 Subject: [PATCH 30/36] chore: use env for npm token --- .github/workflows/publish-providers.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-providers.yml b/.github/workflows/publish-providers.yml index 161bf5ba..7f11c67d 100644 --- a/.github/workflows/publish-providers.yml +++ b/.github/workflows/publish-providers.yml @@ -154,7 +154,7 @@ jobs: if: ${{ steps.changelog.outputs.skipped == 'false' && steps.release.outputs.id != '' }} run: | cd packages/${{ matrix.package }} - echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc + echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc npm publish --access public env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} From 166a7a9524d39883607dc4ca79b75efc42c7514c Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Wed, 27 Aug 2025 17:33:03 -0300 Subject: [PATCH 31/36] chore: add linting script back --- packages/mcp-provider-dx-core/package.json | 3 ++- packages/mcp/package.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/mcp-provider-dx-core/package.json b/packages/mcp-provider-dx-core/package.json index 4af17588..29bf830b 100644 --- a/packages/mcp-provider-dx-core/package.json +++ b/packages/mcp-provider-dx-core/package.json @@ -74,7 +74,8 @@ "build": { "dependencies": [ "../mcp-provider-api:build", - "compile" + "compile", + "lint" ] }, "compile": { diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 1f39c633..30067228 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -85,7 +85,8 @@ "wireit": { "build": { "dependencies": [ - "compile" + "compile", + "lint" ] }, "compile": { From 02ac2855c34a264b90c9e786940456a1e61019c0 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Wed, 27 Aug 2025 17:38:14 -0300 Subject: [PATCH 32/36] chore: no caret when bumping --- .github/workflows/publish-mcp-server.yml | 8 ++++---- .github/workflows/publish-providers.yml | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/publish-mcp-server.yml b/.github/workflows/publish-mcp-server.yml index 709b802c..2b5c1acb 100644 --- a/.github/workflows/publish-mcp-server.yml +++ b/.github/workflows/publish-mcp-server.yml @@ -71,18 +71,18 @@ jobs: # Get latest version from npm LATEST_VERSION=$(npm show "$provider" version) - if [ "$CURRENT_VERSION" != "^$LATEST_VERSION" ]; then - echo "Updating $provider from $CURRENT_VERSION to ^$LATEST_VERSION" + if [ "$CURRENT_VERSION" != "$LATEST_VERSION" ]; then + echo "Updating $provider from $CURRENT_VERSION to $LATEST_VERSION" # Update using jq (similar to provider workflow) - jq --arg pkg "$provider" --arg ver "^$LATEST_VERSION" \ + jq --arg pkg "$provider" --arg ver "$LATEST_VERSION" \ '.dependencies[$pkg] = $ver' package.json > package.json.tmp mv package.json.tmp package.json UPDATED_PACKAGES+=("$provider") HAS_UPDATES=true else - echo "$provider is already at latest version (^$LATEST_VERSION)" + echo "$provider is already at latest version ($LATEST_VERSION)" fi done diff --git a/.github/workflows/publish-providers.yml b/.github/workflows/publish-providers.yml index 7f11c67d..809b55ab 100644 --- a/.github/workflows/publish-providers.yml +++ b/.github/workflows/publish-providers.yml @@ -170,7 +170,7 @@ jobs: # Update the dependency in main server's package.json using jq cd packages/mcp - jq --arg pkg "$PACKAGE_NAME" --arg ver "^$PUBLISHED_VERSION" \ + jq --arg pkg "$PACKAGE_NAME" --arg ver "$PUBLISHED_VERSION" \ '.dependencies[$pkg] = $ver' package.json > package.json.tmp mv package.json.tmp package.json @@ -185,7 +185,7 @@ jobs: git config user.name "${{ steps.github-user-info.outputs.username }}" git config user.email "${{ steps.github-user-info.outputs.email }}" # TODO(cristian): remove `--no-verify` after linting issues are solved - git commit -m "chore: bump $PACKAGE_NAME to ^$PUBLISHED_VERSION --no-verify + git commit -m "chore: bump $PACKAGE_NAME to $PUBLISHED_VERSION --no-verify Auto-update dependency after provider package publish. From 8ec57380354360c933aff9d889f7acf87fd4e25f Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Wed, 27 Aug 2025 18:00:41 -0300 Subject: [PATCH 33/36] chore: add release docs --- DEVELOPING.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/DEVELOPING.md b/DEVELOPING.md index 05b7b82c..621a0710 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -112,6 +112,29 @@ yarn install yarn workspace @salesforce/mcp build ``` +## Triggering releases for your provider + +Once your provider is ready for release, you can publish it and optionally trigger a full server release: + +### Provider-only release (automatic on main branch): +- Push changes to `main` branch - providers in the auto-publish list (`mcp-provider-api`, `mcp-provider-dx-core`) will automatically publish when changes are detected +- To opt-in to auto-publishing: add your provider to the `AUTO_PUBLISHABLE_PACKAGES` array in `.github/workflows/publish-providers.yml` and in the `on.push.paths` array. +- For manual-schedule providers like `mcp-provider-code-analyzer`, use: `gh workflow run publish-providers --field packages='mcp-provider-your-feature'` + +### Full server release (includes your provider): +1. First ensure your provider is published: `gh workflow run publish-providers --field packages='mcp-provider-your-feature'` +2. Then release the main server with updated dependencies: `gh workflow run publish-mcp-server --field update-providers=true` + +### Server release with all latest providers: +- To release the server with all provider packages updated to their latest versions: `gh workflow run publish-mcp-server --field update-providers=true` +- To update only specific providers: `gh workflow run publish-mcp-server --field update-providers=true --field providers-to-update='mcp-provider-api,mcp-provider-dx-core'` + +### Server prerelease (dev versions): +- For dev releases: `gh workflow run publish-mcp-server --field prerelease='dev'` +- Prereleases are published to custom npm tags (e.g., `npm install -g @salesforce/mcp@dev`). + +The server release workflow will automatically update to the latest provider versions before publishing the main MCP server package. + - For server wiring details and how providers are loaded, see `packages/mcp/DEVELOPING.md`. ## Running the MCP server locally From 3595f68ba3e6e312f22e1e3896eda918ce0a915a Mon Sep 17 00:00:00 2001 From: Cristian Dominguez <6853656+cristiand391@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:36:45 -0300 Subject: [PATCH 34/36] Update DEVELOPING.md [skip ci] Co-authored-by: Willhoit --- DEVELOPING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEVELOPING.md b/DEVELOPING.md index 621a0710..97e3465b 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -122,7 +122,7 @@ Once your provider is ready for release, you can publish it and optionally trigg - For manual-schedule providers like `mcp-provider-code-analyzer`, use: `gh workflow run publish-providers --field packages='mcp-provider-your-feature'` ### Full server release (includes your provider): -1. First ensure your provider is published: `gh workflow run publish-providers --field packages='mcp-provider-your-feature'` +1. First ensure your provider is published: `gh workflow run publish-providers --field packages='mcp-provider-YOUR_PROVIDER'` 2. Then release the main server with updated dependencies: `gh workflow run publish-mcp-server --field update-providers=true` ### Server release with all latest providers: From 9efee53528415c25057d5c5cc62fd9b33780ed86 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez <6853656+cristiand391@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:37:00 -0300 Subject: [PATCH 35/36] Update DEVELOPING.md [skip ci] Co-authored-by: Willhoit --- DEVELOPING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEVELOPING.md b/DEVELOPING.md index 97e3465b..758d938c 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -119,7 +119,7 @@ Once your provider is ready for release, you can publish it and optionally trigg ### Provider-only release (automatic on main branch): - Push changes to `main` branch - providers in the auto-publish list (`mcp-provider-api`, `mcp-provider-dx-core`) will automatically publish when changes are detected - To opt-in to auto-publishing: add your provider to the `AUTO_PUBLISHABLE_PACKAGES` array in `.github/workflows/publish-providers.yml` and in the `on.push.paths` array. -- For manual-schedule providers like `mcp-provider-code-analyzer`, use: `gh workflow run publish-providers --field packages='mcp-provider-your-feature'` +- For manual-schedule providers like `mcp-provider-code-analyzer`, use: `gh workflow run publish-providers --field packages='mcp-provider-YOUR_PROVIDER'` ### Full server release (includes your provider): 1. First ensure your provider is published: `gh workflow run publish-providers --field packages='mcp-provider-YOUR_PROVIDER'` From 1735e11603aaf1fc0c202849e080cf820d656058 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Thu, 28 Aug 2025 15:46:46 -0300 Subject: [PATCH 36/36] chore: pin provider modules [skip ci] --- packages/mcp-provider-code-analyzer/package.json | 2 +- packages/mcp/package.json | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/mcp-provider-code-analyzer/package.json b/packages/mcp-provider-code-analyzer/package.json index 58c49e38..c1c9dba5 100644 --- a/packages/mcp-provider-code-analyzer/package.json +++ b/packages/mcp-provider-code-analyzer/package.json @@ -20,7 +20,7 @@ "@salesforce/code-analyzer-pmd-engine": "0.28.0", "@salesforce/code-analyzer-regex-engine": "0.24.0", "@salesforce/code-analyzer-retirejs-engine": "0.24.0", - "@salesforce/mcp-provider-api": "0.0.1-alpha.1", + "@salesforce/mcp-provider-api": "0.1.0", "zod": "^3.23.8" }, "devDependencies": { diff --git a/packages/mcp/package.json b/packages/mcp/package.json index d2df8fc0..32b690b3 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -48,9 +48,9 @@ "@salesforce/apex-node": "^8.2.1", "@salesforce/core": "^8.18.0", "@salesforce/kit": "^3.1.6", - "@salesforce/mcp-provider-api": "^0.1.0", - "@salesforce/mcp-provider-dx-core": "^0.1.2", - "@salesforce/mcp-provider-code-analyzer": "^0.0.1", + "@salesforce/mcp-provider-api": "0.1.0", + "@salesforce/mcp-provider-dx-core": "0.1.2", + "@salesforce/mcp-provider-code-analyzer": "0.0.1", "@salesforce/source-deploy-retrieve": "^12.22.0", "@salesforce/source-tracking": "^7.4.8", "@salesforce/telemetry": "^6.1.0",