From 7bacdcbae61b5cac1028b175aa91e6be08b8aae4 Mon Sep 17 00:00:00 2001 From: Dusan Vystrcil Date: Thu, 18 Sep 2025 12:00:39 +0200 Subject: [PATCH 1/9] Added server.json for official MCP registry --- .github/workflows/release.yaml | 37 ++++++++++++++++++++++++++++++++++ .gitignore | 1 + package.json | 1 + server.json | 31 ++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 server.json diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2d3b4b0c..bd38e2b4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -206,6 +206,43 @@ jobs: - name: Publish to NPM run: npm publish --tag latest + publish_to_mcp_registry: + name: Publish to MCP Registry + needs: [ release_metadata, update_changelog, publish_to_npm ] + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ needs.update_changelog.outputs.changelog_commitish }} + - name: Verify commit SHA + run: | + CURRENT_SHA=$(git rev-parse HEAD) + EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}" + echo "Expected commit SHA: $EXPECTED_SHA" + echo "Actual checked out SHA: $CURRENT_SHA" + if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then + echo "ERROR: Checked out SHA differs from expected!" + exit 1 + else + echo "βœ“ Commit SHA matches expected" + fi + - name: Update server.json version + run: | + EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" + jq --arg version "$EXPECTED_VERSION" '.version = $version | .packages[0].version = $version' server.json > server.json.tmp && mv server.json.tmp server.json + echo "Updated server.json to version $EXPECTED_VERSION" + - name: Install MCP Publisher + run: | + curl -L "https://github.com/modelcontextprotocol/publisher/releases/latest/download/mcp-publisher-linux-x64.tar.gz" | tar xz + chmod +x mcp-publisher + - name: Login to MCP Registry + run: ./mcp-publisher login github-oidc + - name: Publish to MCP Registry + run: ./mcp-publisher publish + env: NODE_AUTH_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_NPM_TOKEN }} NPM_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_NPM_TOKEN }} diff --git a/.gitignore b/.gitignore index 75950be2..42b720fc 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ storage/key_value_stores/default/* .venv .env .aider* + diff --git a/package.json b/package.json index ee4d3e5f..3ee33ec6 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.4.10", "type": "module", "description": "Apify MCP Server", + "mcpName": "com.apify/apify-mcp-server", "engines": { "node": ">=18.0.0" }, diff --git a/server.json b/server.json new file mode 100644 index 00000000..1514fc3f --- /dev/null +++ b/server.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json", + "name": "com.apify/apify-mcp-server", + "description": "Apify MCP Server providing access to thousands of web scraping and automation tools from Apify Store", + "status": "active", + "repository": { + "url": "https://github.com/apify/apify-mcp-server", + "source": "github" + }, + "version": "0.4.10", + "packages": [ + { + "registry_type": "npm", + "registry_base_url": "https://registry.npmjs.org", + "identifier": "@apify/actors-mcp-server", + "version": "0.4.10", + "transport": { + "type": "stdio" + }, + "environment_variables": [ + { + "description": "Apify API token for authentication with Apify platform services", + "is_required": false, + "format": "string", + "is_secret": true, + "name": "APIFY_TOKEN" + } + ] + } + ] +} \ No newline at end of file From a90dd20576992be9306e82e836ba1c93c32dbcc5 Mon Sep 17 00:00:00 2001 From: MQ Date: Thu, 18 Sep 2025 13:22:00 +0200 Subject: [PATCH 2/9] add also remote server --- .gitignore | 2 ++ server.json | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 42b720fc..a212f54e 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,5 @@ storage/key_value_stores/default/* .env .aider* +# MCP registry private key +key.pem \ No newline at end of file diff --git a/server.json b/server.json index 1514fc3f..8748b4be 100644 --- a/server.json +++ b/server.json @@ -8,6 +8,20 @@ "source": "github" }, "version": "0.4.10", + "remotes": [ + { + "type": "streamable-http", + "url": "https://mcp.apify.com/", + "headers": [ + { + "name": "Authorization", + "description": "Apify API token for authentication with Apify platform services. For example 'Bearer '", + "is_required": true, + "is_secret": true + } + ] + } + ], "packages": [ { "registry_type": "npm", @@ -20,8 +34,8 @@ "environment_variables": [ { "description": "Apify API token for authentication with Apify platform services", - "is_required": false, "format": "string", + "is_required": true, "is_secret": true, "name": "APIFY_TOKEN" } From c6f1de2340e6d6e03b9d989a6e468408ed5a0a8b Mon Sep 17 00:00:00 2001 From: Apify Release Bot Date: Thu, 18 Sep 2025 11:28:40 +0000 Subject: [PATCH 3/9] chore(release): Update changelog, package.json and manifest.json versions [skip ci] --- CHANGELOG.md | 3 +++ manifest.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 583efec9..e073a227 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ All notable changes to this project will be documented in this file. +## [0.4.11](https://github.com/apify/apify-mcp-server/releases/tag/v0.4.11) (2025-09-18) + + ## [0.4.10](https://github.com/apify/apify-mcp-server/releases/tag/v0.4.10) (2025-09-15) ### πŸš€ Features diff --git a/manifest.json b/manifest.json index 2e0018a4..9fda801c 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "dxt_version": "0.1", "name": "Apify", - "version": "0.4.10", + "version": "0.4.11", "description": "Extract data from any website using thousands of tools from the Apify Store.", "long_description": "Apify is the world's largest marketplace of tools for web scraping, data extraction, and web automation. You can extract structured data from social media, e-commerce, search engines, maps, travel sites, or any other website.", "keywords": [ diff --git a/package-lock.json b/package-lock.json index 5934bd9a..8e010643 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@apify/actors-mcp-server", - "version": "0.4.10", + "version": "0.4.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@apify/actors-mcp-server", - "version": "0.4.10", + "version": "0.4.11", "license": "MIT", "dependencies": { "@apify/datastructures": "^2.0.3", diff --git a/package.json b/package.json index 3ee33ec6..2964e1b0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@apify/actors-mcp-server", - "version": "0.4.10", + "version": "0.4.11", "type": "module", "description": "Apify MCP Server", "mcpName": "com.apify/apify-mcp-server", From e374ad2533f5faab7b507cd1d417751411dadd2c Mon Sep 17 00:00:00 2001 From: MQ Date: Thu, 18 Sep 2025 13:27:18 +0200 Subject: [PATCH 4/9] fix release cicd --- .github/workflows/release.yaml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index bd38e2b4..d993f345 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -67,6 +67,12 @@ jobs: - name: Update manifest.json version run: jq '.version = "${{ needs.release_metadata.outputs.version_number }}"' manifest.json > manifest.json.tmp && mv manifest.json.tmp manifest.json + - name: Update server.json version + run: | + EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" + jq --arg version "$EXPECTED_VERSION" '.version = $version | .packages[0].version = $version' server.json > server.json.tmp && mv server.json.tmp server.json + echo "Updated server.json to version $EXPECTED_VERSION" + - name: Update CHANGELOG.md uses: DamianReeves/write-file-action@master with: @@ -80,7 +86,7 @@ jobs: with: author_name: Apify Release Bot author_email: noreply@apify.com - message: "chore(release): Update changelog, package.json and manifest.json versions [skip ci]" + message: "chore(release): Update changelog, server.json, package.json and manifest.json versions [skip ci]" create_github_release: name: Create github release @@ -229,11 +235,21 @@ jobs: else echo "βœ“ Commit SHA matches expected" fi - - name: Update server.json version + - name: Verify server.json version run: | EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" - jq --arg version "$EXPECTED_VERSION" '.version = $version | .packages[0].version = $version' server.json > server.json.tmp && mv server.json.tmp server.json - echo "Updated server.json to version $EXPECTED_VERSION" + ACTUAL_VERSION=$(jq -r '.version' server.json) + + echo "Expected version: $EXPECTED_VERSION" + echo "Actual version in server.json: $ACTUAL_VERSION" + echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}" + + if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then + echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in server.json" + exit 1 + fi + + echo "βœ“ Version check passed: server.json has correct version $ACTUAL_VERSION" - name: Install MCP Publisher run: | curl -L "https://github.com/modelcontextprotocol/publisher/releases/latest/download/mcp-publisher-linux-x64.tar.gz" | tar xz From 89b8f41d16e3b7b46eaeaa4b441ce4b3ce5c8a4d Mon Sep 17 00:00:00 2001 From: MQ Date: Thu, 18 Sep 2025 13:30:33 +0200 Subject: [PATCH 5/9] fix ci --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d993f345..cc8884f3 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -252,7 +252,7 @@ jobs: echo "βœ“ Version check passed: server.json has correct version $ACTUAL_VERSION" - name: Install MCP Publisher run: | - curl -L "https://github.com/modelcontextprotocol/publisher/releases/latest/download/mcp-publisher-linux-x64.tar.gz" | tar xz + curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.0.0/mcp-publisher_1.0.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher chmod +x mcp-publisher - name: Login to MCP Registry run: ./mcp-publisher login github-oidc From 53958391bd1776afdbb2947b033efa8b3f18f05d Mon Sep 17 00:00:00 2001 From: MQ Date: Thu, 18 Sep 2025 13:33:44 +0200 Subject: [PATCH 6/9] temp cicd test --- .github/workflows/release.yaml | 361 +++++++++++++++++---------------- 1 file changed, 181 insertions(+), 180 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index cc8884f3..fc6ebe45 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -43,213 +43,214 @@ jobs: custom_version: ${{ inputs.custom_version }} existing_changelog_path: CHANGELOG.md - update_changelog: - needs: [ release_metadata ] - name: Update changelog - runs-on: ubuntu-latest - outputs: - changelog_commitish: ${{ steps.commit.outputs.commit_long_sha || github.sha }} + #update_changelog: + # needs: [ release_metadata ] + # name: Update changelog + # runs-on: ubuntu-latest + # outputs: + # changelog_commitish: ${{ steps.commit.outputs.commit_long_sha || github.sha }} - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }} + # steps: + # - name: Checkout repository + # uses: actions/checkout@v4 + # with: + # token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }} - - name: Use Node.js 22 - uses: actions/setup-node@v4 - with: - node-version: 22 + # - name: Use Node.js 22 + # uses: actions/setup-node@v4 + # with: + # node-version: 22 - - name: Update package version in package.json - run: npm version --no-git-tag-version --allow-same-version ${{ needs.release_metadata.outputs.version_number }} + # - name: Update package version in package.json + # run: npm version --no-git-tag-version --allow-same-version ${{ needs.release_metadata.outputs.version_number }} - - name: Update manifest.json version - run: jq '.version = "${{ needs.release_metadata.outputs.version_number }}"' manifest.json > manifest.json.tmp && mv manifest.json.tmp manifest.json + # - name: Update manifest.json version + # run: jq '.version = "${{ needs.release_metadata.outputs.version_number }}"' manifest.json > manifest.json.tmp && mv manifest.json.tmp manifest.json - - name: Update server.json version - run: | - EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" - jq --arg version "$EXPECTED_VERSION" '.version = $version | .packages[0].version = $version' server.json > server.json.tmp && mv server.json.tmp server.json - echo "Updated server.json to version $EXPECTED_VERSION" + # - name: Update server.json version + # run: | + # EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" + # jq --arg version "$EXPECTED_VERSION" '.version = $version | .packages[0].version = $version' server.json > server.json.tmp && mv server.json.tmp server.json + # echo "Updated server.json to version $EXPECTED_VERSION" - - name: Update CHANGELOG.md - uses: DamianReeves/write-file-action@master - with: - path: CHANGELOG.md - write-mode: overwrite - contents: ${{ needs.release_metadata.outputs.changelog }} + # - name: Update CHANGELOG.md + # uses: DamianReeves/write-file-action@master + # with: + # path: CHANGELOG.md + # write-mode: overwrite + # contents: ${{ needs.release_metadata.outputs.changelog }} - - name: Commit changes - id: commit - uses: EndBug/add-and-commit@v9 - with: - author_name: Apify Release Bot - author_email: noreply@apify.com - message: "chore(release): Update changelog, server.json, package.json and manifest.json versions [skip ci]" + # - name: Commit changes + # id: commit + # uses: EndBug/add-and-commit@v9 + # with: + # author_name: Apify Release Bot + # author_email: noreply@apify.com + # message: "chore(release): Update changelog, server.json, package.json and manifest.json versions [skip ci]" - create_github_release: - name: Create github release - needs: [release_metadata, update_changelog] - runs-on: ubuntu-latest - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ needs.update_changelog.outputs.changelog_commitish }} - - name: Verify commit SHA - run: | - CURRENT_SHA=$(git rev-parse HEAD) - EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}" - echo "Expected commit SHA: $EXPECTED_SHA" - echo "Actual checked out SHA: $CURRENT_SHA" - if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then - echo "ERROR: Checked out SHA differs from expected!" - exit 1 - else - echo "βœ“ Commit SHA matches expected" - fi - - name: Verify manifest.json version - run: | - EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" - ACTUAL_VERSION=$(jq -r '.version' manifest.json) + #create_github_release: + # name: Create github release + # needs: [release_metadata, update_changelog] + # runs-on: ubuntu-latest + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # steps: + # - uses: actions/checkout@v4 + # with: + # ref: ${{ needs.update_changelog.outputs.changelog_commitish }} + # - name: Verify commit SHA + # run: | + # CURRENT_SHA=$(git rev-parse HEAD) + # EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}" + # echo "Expected commit SHA: $EXPECTED_SHA" + # echo "Actual checked out SHA: $CURRENT_SHA" + # if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then + # echo "ERROR: Checked out SHA differs from expected!" + # exit 1 + # else + # echo "βœ“ Commit SHA matches expected" + # fi + # - name: Verify manifest.json version + # run: | + # EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" + # ACTUAL_VERSION=$(jq -r '.version' manifest.json) - echo "Expected version: $EXPECTED_VERSION" - echo "Actual version in manifest.json: $ACTUAL_VERSION" - echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}" + # echo "Expected version: $EXPECTED_VERSION" + # echo "Actual version in manifest.json: $ACTUAL_VERSION" + # echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}" - if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then - echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in manifest.json" - exit 1 - fi + # if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then + # echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in manifest.json" + # exit 1 + # fi - echo "βœ“ Version check passed: manifest.json has correct version $ACTUAL_VERSION" - - name: Use Node.js 22 - uses: actions/setup-node@v4 - with: - node-version: 22 - cache: 'npm' - cache-dependency-path: 'package-lock.json' - - name: Install dependencies - run: | - echo "access=public" >> .npmrc - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc - npm ci - - name: Build module - run: npm run build - - name: Prepare DXT package - run: | - mkdir dxt - cp -r node_modules dxt/node_modules - cp -r dist dxt/dist - cp -r docs dxt/docs - cp package.json dxt/package.json - cp manifest.json dxt/manifest.json - - name: Create DXT package - run: npx -y @anthropic-ai/dxt pack dxt/ actors-mcp-server.dxt - - name: Copy DXT package - run: cp actors-mcp-server.dxt apify-mcp-server.dxt - - name: Create release - uses: softprops/action-gh-release@v2 - with: - tag_name: ${{ needs.release_metadata.outputs.tag_name }} - name: ${{ needs.release_metadata.outputs.version_number }} - target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }} - body: ${{ needs.release_metadata.outputs.release_notes }} - files: | - actors-mcp-server.dxt - apify-mcp-server.dxt + # echo "βœ“ Version check passed: manifest.json has correct version $ACTUAL_VERSION" + # - name: Use Node.js 22 + # uses: actions/setup-node@v4 + # with: + # node-version: 22 + # cache: 'npm' + # cache-dependency-path: 'package-lock.json' + # - name: Install dependencies + # run: | + # echo "access=public" >> .npmrc + # echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc + # npm ci + # - name: Build module + # run: npm run build + # - name: Prepare DXT package + # run: | + # mkdir dxt + # cp -r node_modules dxt/node_modules + # cp -r dist dxt/dist + # cp -r docs dxt/docs + # cp package.json dxt/package.json + # cp manifest.json dxt/manifest.json + # - name: Create DXT package + # run: npx -y @anthropic-ai/dxt pack dxt/ actors-mcp-server.dxt + # - name: Copy DXT package + # run: cp actors-mcp-server.dxt apify-mcp-server.dxt + # - name: Create release + # uses: softprops/action-gh-release@v2 + # with: + # tag_name: ${{ needs.release_metadata.outputs.tag_name }} + # name: ${{ needs.release_metadata.outputs.version_number }} + # target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }} + # body: ${{ needs.release_metadata.outputs.release_notes }} + # files: | + # actors-mcp-server.dxt + # apify-mcp-server.dxt - publish_to_npm: - name: Publish to NPM - needs: [ release_metadata, update_changelog ] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ needs.update_changelog.outputs.changelog_commitish }} - - name: Verify commit SHA - run: | - CURRENT_SHA=$(git rev-parse HEAD) - EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}" - echo "Expected commit SHA: $EXPECTED_SHA" - echo "Actual checked out SHA: $CURRENT_SHA" - if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then - echo "ERROR: Checked out SHA differs from expected!" - exit 1 - else - echo "βœ“ Commit SHA matches expected" - fi - - name: Verify package.json version - run: | - EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" - ACTUAL_VERSION=$(jq -r '.version' package.json) + #publish_to_npm: + # name: Publish to NPM + # needs: [ release_metadata, update_changelog ] + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v4 + # with: + # ref: ${{ needs.update_changelog.outputs.changelog_commitish }} + # - name: Verify commit SHA + # run: | + # CURRENT_SHA=$(git rev-parse HEAD) + # EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}" + # echo "Expected commit SHA: $EXPECTED_SHA" + # echo "Actual checked out SHA: $CURRENT_SHA" + # if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then + # echo "ERROR: Checked out SHA differs from expected!" + # exit 1 + # else + # echo "βœ“ Commit SHA matches expected" + # fi + # - name: Verify package.json version + # run: | + # EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" + # ACTUAL_VERSION=$(jq -r '.version' package.json) - echo "Expected version: $EXPECTED_VERSION" - echo "Actual version in package.json: $ACTUAL_VERSION" - echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}" + # echo "Expected version: $EXPECTED_VERSION" + # echo "Actual version in package.json: $ACTUAL_VERSION" + # echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}" - if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then - echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in package.json" - exit 1 - fi + # if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then + # echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in package.json" + # exit 1 + # fi - echo "βœ“ Version check passed: package.json has correct version $ACTUAL_VERSION" - - name: Use Node.js 22 - uses: actions/setup-node@v4 - with: - node-version: 22 - cache: 'npm' - cache-dependency-path: 'package-lock.json' - - name: Install dependencies - run: | - echo "access=public" >> .npmrc - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc - npm ci - - name: Build module - run: npm run build - - name: Publish to NPM - run: npm publish --tag latest + # echo "βœ“ Version check passed: package.json has correct version $ACTUAL_VERSION" + # - name: Use Node.js 22 + # uses: actions/setup-node@v4 + # with: + # node-version: 22 + # cache: 'npm' + # cache-dependency-path: 'package-lock.json' + # - name: Install dependencies + # run: | + # echo "access=public" >> .npmrc + # echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc + # npm ci + # - name: Build module + # run: npm run build + # - name: Publish to NPM + # run: npm publish --tag latest publish_to_mcp_registry: name: Publish to MCP Registry - needs: [ release_metadata, update_changelog, publish_to_npm ] + #needs: [ release_metadata, update_changelog, publish_to_npm ] + needs: [ release_metadata ] runs-on: ubuntu-latest permissions: id-token: write contents: read steps: - uses: actions/checkout@v4 - with: - ref: ${{ needs.update_changelog.outputs.changelog_commitish }} - - name: Verify commit SHA - run: | - CURRENT_SHA=$(git rev-parse HEAD) - EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}" - echo "Expected commit SHA: $EXPECTED_SHA" - echo "Actual checked out SHA: $CURRENT_SHA" - if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then - echo "ERROR: Checked out SHA differs from expected!" - exit 1 - else - echo "βœ“ Commit SHA matches expected" - fi - - name: Verify server.json version - run: | - EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" - ACTUAL_VERSION=$(jq -r '.version' server.json) + #with: + # ref: ${{ needs.update_changelog.outputs.changelog_commitish }} + #- name: Verify commit SHA + # run: | + # CURRENT_SHA=$(git rev-parse HEAD) + # EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}" + # echo "Expected commit SHA: $EXPECTED_SHA" + # echo "Actual checked out SHA: $CURRENT_SHA" + # if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then + # echo "ERROR: Checked out SHA differs from expected!" + # exit 1 + # else + # echo "βœ“ Commit SHA matches expected" + # fi + #- name: Verify server.json version + # run: | + # EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" + # ACTUAL_VERSION=$(jq -r '.version' server.json) - echo "Expected version: $EXPECTED_VERSION" - echo "Actual version in server.json: $ACTUAL_VERSION" - echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}" + # echo "Expected version: $EXPECTED_VERSION" + # echo "Actual version in server.json: $ACTUAL_VERSION" + # echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}" - if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then - echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in server.json" - exit 1 - fi + # if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then + # echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in server.json" + # exit 1 + # fi - echo "βœ“ Version check passed: server.json has correct version $ACTUAL_VERSION" + # echo "βœ“ Version check passed: server.json has correct version $ACTUAL_VERSION" - name: Install MCP Publisher run: | curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.0.0/mcp-publisher_1.0.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher From a3f81cb223e26df08e3c993eac0e621a0202ca60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Kopeck=C3=BD?= Date: Fri, 19 Sep 2025 14:38:01 +0200 Subject: [PATCH 7/9] Update server.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: JiΕ™Γ­ Spilka --- server.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server.json b/server.json index 8748b4be..0eefd93b 100644 --- a/server.json +++ b/server.json @@ -1,7 +1,7 @@ { "$schema": "https://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json", "name": "com.apify/apify-mcp-server", - "description": "Apify MCP Server providing access to thousands of web scraping and automation tools from Apify Store", + "description": "Apify MCP server helps you access the world’s largest marketplace of tools for web scraping, data extraction, and web automation. You can extract structured data from social media, e-commerce, search engines, maps, travel sites, or any other website", "status": "active", "repository": { "url": "https://github.com/apify/apify-mcp-server", From e2cd33aeed046a19be35ebcde838eb304f395627 Mon Sep 17 00:00:00 2001 From: MQ37 Date: Fri, 26 Sep 2025 14:16:32 +0200 Subject: [PATCH 8/9] revert release.yml --- .github/workflows/release.yaml | 346 ++++++++++++++------------------- 1 file changed, 147 insertions(+), 199 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index fc6ebe45..28d1f2b6 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -43,222 +43,170 @@ jobs: custom_version: ${{ inputs.custom_version }} existing_changelog_path: CHANGELOG.md - #update_changelog: - # needs: [ release_metadata ] - # name: Update changelog - # runs-on: ubuntu-latest - # outputs: - # changelog_commitish: ${{ steps.commit.outputs.commit_long_sha || github.sha }} - - # steps: - # - name: Checkout repository - # uses: actions/checkout@v4 - # with: - # token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }} - - # - name: Use Node.js 22 - # uses: actions/setup-node@v4 - # with: - # node-version: 22 - - # - name: Update package version in package.json - # run: npm version --no-git-tag-version --allow-same-version ${{ needs.release_metadata.outputs.version_number }} - - # - name: Update manifest.json version - # run: jq '.version = "${{ needs.release_metadata.outputs.version_number }}"' manifest.json > manifest.json.tmp && mv manifest.json.tmp manifest.json - - # - name: Update server.json version - # run: | - # EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" - # jq --arg version "$EXPECTED_VERSION" '.version = $version | .packages[0].version = $version' server.json > server.json.tmp && mv server.json.tmp server.json - # echo "Updated server.json to version $EXPECTED_VERSION" - - # - name: Update CHANGELOG.md - # uses: DamianReeves/write-file-action@master - # with: - # path: CHANGELOG.md - # write-mode: overwrite - # contents: ${{ needs.release_metadata.outputs.changelog }} + update_changelog: + needs: [ release_metadata ] + name: Update changelog + runs-on: ubuntu-latest + outputs: + changelog_commitish: ${{ steps.commit.outputs.commit_long_sha || github.sha }} - # - name: Commit changes - # id: commit - # uses: EndBug/add-and-commit@v9 - # with: - # author_name: Apify Release Bot - # author_email: noreply@apify.com - # message: "chore(release): Update changelog, server.json, package.json and manifest.json versions [skip ci]" + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }} - #create_github_release: - # name: Create github release - # needs: [release_metadata, update_changelog] - # runs-on: ubuntu-latest - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # steps: - # - uses: actions/checkout@v4 - # with: - # ref: ${{ needs.update_changelog.outputs.changelog_commitish }} - # - name: Verify commit SHA - # run: | - # CURRENT_SHA=$(git rev-parse HEAD) - # EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}" - # echo "Expected commit SHA: $EXPECTED_SHA" - # echo "Actual checked out SHA: $CURRENT_SHA" - # if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then - # echo "ERROR: Checked out SHA differs from expected!" - # exit 1 - # else - # echo "βœ“ Commit SHA matches expected" - # fi - # - name: Verify manifest.json version - # run: | - # EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" - # ACTUAL_VERSION=$(jq -r '.version' manifest.json) + - name: Use Node.js 22 + uses: actions/setup-node@v4 + with: + node-version: 22 - # echo "Expected version: $EXPECTED_VERSION" - # echo "Actual version in manifest.json: $ACTUAL_VERSION" - # echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}" + - name: Update package version in package.json + run: npm version --no-git-tag-version --allow-same-version ${{ needs.release_metadata.outputs.version_number }} - # if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then - # echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in manifest.json" - # exit 1 - # fi + - name: Update manifest.json version + run: jq '.version = "${{ needs.release_metadata.outputs.version_number }}"' manifest.json > manifest.json.tmp && mv manifest.json.tmp manifest.json - # echo "βœ“ Version check passed: manifest.json has correct version $ACTUAL_VERSION" - # - name: Use Node.js 22 - # uses: actions/setup-node@v4 - # with: - # node-version: 22 - # cache: 'npm' - # cache-dependency-path: 'package-lock.json' - # - name: Install dependencies - # run: | - # echo "access=public" >> .npmrc - # echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc - # npm ci - # - name: Build module - # run: npm run build - # - name: Prepare DXT package - # run: | - # mkdir dxt - # cp -r node_modules dxt/node_modules - # cp -r dist dxt/dist - # cp -r docs dxt/docs - # cp package.json dxt/package.json - # cp manifest.json dxt/manifest.json - # - name: Create DXT package - # run: npx -y @anthropic-ai/dxt pack dxt/ actors-mcp-server.dxt - # - name: Copy DXT package - # run: cp actors-mcp-server.dxt apify-mcp-server.dxt - # - name: Create release - # uses: softprops/action-gh-release@v2 - # with: - # tag_name: ${{ needs.release_metadata.outputs.tag_name }} - # name: ${{ needs.release_metadata.outputs.version_number }} - # target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }} - # body: ${{ needs.release_metadata.outputs.release_notes }} - # files: | - # actors-mcp-server.dxt - # apify-mcp-server.dxt + - name: Update CHANGELOG.md + uses: DamianReeves/write-file-action@master + with: + path: CHANGELOG.md + write-mode: overwrite + contents: ${{ needs.release_metadata.outputs.changelog }} - #publish_to_npm: - # name: Publish to NPM - # needs: [ release_metadata, update_changelog ] - # runs-on: ubuntu-latest - # steps: - # - uses: actions/checkout@v4 - # with: - # ref: ${{ needs.update_changelog.outputs.changelog_commitish }} - # - name: Verify commit SHA - # run: | - # CURRENT_SHA=$(git rev-parse HEAD) - # EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}" - # echo "Expected commit SHA: $EXPECTED_SHA" - # echo "Actual checked out SHA: $CURRENT_SHA" - # if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then - # echo "ERROR: Checked out SHA differs from expected!" - # exit 1 - # else - # echo "βœ“ Commit SHA matches expected" - # fi - # - name: Verify package.json version - # run: | - # EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" - # ACTUAL_VERSION=$(jq -r '.version' package.json) + - name: Commit changes + id: commit + uses: EndBug/add-and-commit@v9 + with: + author_name: Apify Release Bot + author_email: noreply@apify.com + message: "chore(release): Update changelog, package.json and manifest.json versions [skip ci]" - # echo "Expected version: $EXPECTED_VERSION" - # echo "Actual version in package.json: $ACTUAL_VERSION" - # echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}" + create_github_release: + name: Create github release + needs: [release_metadata, update_changelog] + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ needs.update_changelog.outputs.changelog_commitish }} + - name: Verify commit SHA + run: | + CURRENT_SHA=$(git rev-parse HEAD) + EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}" + echo "Expected commit SHA: $EXPECTED_SHA" + echo "Actual checked out SHA: $CURRENT_SHA" + if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then + echo "ERROR: Checked out SHA differs from expected!" + exit 1 + else + echo "βœ“ Commit SHA matches expected" + fi + - name: Verify manifest.json version + run: | + EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" + ACTUAL_VERSION=$(jq -r '.version' manifest.json) - # if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then - # echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in package.json" - # exit 1 - # fi + echo "Expected version: $EXPECTED_VERSION" + echo "Actual version in manifest.json: $ACTUAL_VERSION" + echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}" - # echo "βœ“ Version check passed: package.json has correct version $ACTUAL_VERSION" - # - name: Use Node.js 22 - # uses: actions/setup-node@v4 - # with: - # node-version: 22 - # cache: 'npm' - # cache-dependency-path: 'package-lock.json' - # - name: Install dependencies - # run: | - # echo "access=public" >> .npmrc - # echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc - # npm ci - # - name: Build module - # run: npm run build - # - name: Publish to NPM - # run: npm publish --tag latest + if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then + echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in manifest.json" + exit 1 + fi - publish_to_mcp_registry: - name: Publish to MCP Registry - #needs: [ release_metadata, update_changelog, publish_to_npm ] - needs: [ release_metadata ] + echo "βœ“ Version check passed: manifest.json has correct version $ACTUAL_VERSION" + - name: Use Node.js 22 + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: 'npm' + cache-dependency-path: 'package-lock.json' + - name: Install dependencies + run: | + echo "access=public" >> .npmrc + echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc + npm ci + - name: Build module + run: npm run build + - name: Prepare MCPB package + run: | + mkdir mcpb + cp -r node_modules mcpb/node_modules + cp -r dist mcpb/dist + cp -r docs mcpb/docs + cp package.json mcpb/package.json + cp manifest.json mcpb/manifest.json + cp docs/apify-logo.png mcpb/icon.png + - name: Create MCPB package + # fix version of anthropic-ai/mcpb to 1.1.1 so that we have a reproducible build + run: npx -y @anthropic-ai/mcpb@1.1.1 pack mcpb/ apify-mcp-server.mcpb + - name: Copy MCPB package + run: cp apify-mcp-server.mcpb actors-mcp-server.mcpb + - name: Create release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ needs.release_metadata.outputs.tag_name }} + name: ${{ needs.release_metadata.outputs.version_number }} + target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }} + body: ${{ needs.release_metadata.outputs.release_notes }} + files: | + apify-mcp-server.mcpb + actors-mcp-server.mcpb + + publish_to_npm: + name: Publish to NPM + needs: [ release_metadata, update_changelog ] runs-on: ubuntu-latest - permissions: - id-token: write - contents: read steps: - uses: actions/checkout@v4 - #with: - # ref: ${{ needs.update_changelog.outputs.changelog_commitish }} - #- name: Verify commit SHA - # run: | - # CURRENT_SHA=$(git rev-parse HEAD) - # EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}" - # echo "Expected commit SHA: $EXPECTED_SHA" - # echo "Actual checked out SHA: $CURRENT_SHA" - # if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then - # echo "ERROR: Checked out SHA differs from expected!" - # exit 1 - # else - # echo "βœ“ Commit SHA matches expected" - # fi - #- name: Verify server.json version - # run: | - # EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" - # ACTUAL_VERSION=$(jq -r '.version' server.json) + with: + ref: ${{ needs.update_changelog.outputs.changelog_commitish }} + - name: Verify commit SHA + run: | + CURRENT_SHA=$(git rev-parse HEAD) + EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}" + echo "Expected commit SHA: $EXPECTED_SHA" + echo "Actual checked out SHA: $CURRENT_SHA" + if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then + echo "ERROR: Checked out SHA differs from expected!" + exit 1 + else + echo "βœ“ Commit SHA matches expected" + fi + - name: Verify package.json version + run: | + EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}" + ACTUAL_VERSION=$(jq -r '.version' package.json) - # echo "Expected version: $EXPECTED_VERSION" - # echo "Actual version in server.json: $ACTUAL_VERSION" - # echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}" + echo "Expected version: $EXPECTED_VERSION" + echo "Actual version in package.json: $ACTUAL_VERSION" + echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}" - # if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then - # echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in server.json" - # exit 1 - # fi + if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then + echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in package.json" + exit 1 + fi - # echo "βœ“ Version check passed: server.json has correct version $ACTUAL_VERSION" - - name: Install MCP Publisher + echo "βœ“ Version check passed: package.json has correct version $ACTUAL_VERSION" + - name: Use Node.js 22 + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: 'npm' + cache-dependency-path: 'package-lock.json' + - name: Install dependencies run: | - curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.0.0/mcp-publisher_1.0.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher - chmod +x mcp-publisher - - name: Login to MCP Registry - run: ./mcp-publisher login github-oidc - - name: Publish to MCP Registry - run: ./mcp-publisher publish + echo "access=public" >> .npmrc + echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc + npm ci + - name: Build module + run: npm run build + - name: Publish to NPM + run: npm publish --tag latest env: NODE_AUTH_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_NPM_TOKEN }} From a5fc646c961d34d1f41a3e677cc9cba7b4f2dd57 Mon Sep 17 00:00:00 2001 From: MQ37 Date: Fri, 26 Sep 2025 14:33:16 +0200 Subject: [PATCH 9/9] update server.json --- server.json | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/server.json b/server.json index 0eefd93b..0d027a75 100644 --- a/server.json +++ b/server.json @@ -1,13 +1,13 @@ { "$schema": "https://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json", "name": "com.apify/apify-mcp-server", - "description": "Apify MCP server helps you access the world’s largest marketplace of tools for web scraping, data extraction, and web automation. You can extract structured data from social media, e-commerce, search engines, maps, travel sites, or any other website", + "description": "Extract data from any website using thousands of web automation tools from the Apify Store.", "status": "active", "repository": { "url": "https://github.com/apify/apify-mcp-server", "source": "github" }, - "version": "0.4.10", + "version": "0.4.17", "remotes": [ { "type": "streamable-http", @@ -21,25 +21,5 @@ } ] } - ], - "packages": [ - { - "registry_type": "npm", - "registry_base_url": "https://registry.npmjs.org", - "identifier": "@apify/actors-mcp-server", - "version": "0.4.10", - "transport": { - "type": "stdio" - }, - "environment_variables": [ - { - "description": "Apify API token for authentication with Apify platform services", - "format": "string", - "is_required": true, - "is_secret": true, - "name": "APIFY_TOKEN" - } - ] - } ] } \ No newline at end of file