Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
344 changes: 199 additions & 145 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,168 +43,222 @@ 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 CHANGELOG.md
uses: DamianReeves/write-file-action@master
with:
path: CHANGELOG.md
write-mode: overwrite
contents: ${{ needs.release_metadata.outputs.changelog }}
# - 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: Commit changes
id: commit
uses: EndBug/add-and-commit@v9
with:
author_name: Apify Release Bot
author_email: [email protected]
message: "chore(release): Update changelog, package.json and manifest.json versions [skip ci]"
# - name: Update CHANGELOG.md
# uses: DamianReeves/write-file-action@master
# with:
# path: CHANGELOG.md
# write-mode: overwrite
# contents: ${{ needs.release_metadata.outputs.changelog }}

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: Commit changes
# id: commit
# uses: EndBug/add-and-commit@v9
# with:
# author_name: Apify Release Bot
# author_email: [email protected]
# message: "chore(release): Update changelog, server.json, package.json and manifest.json versions [skip ci]"

echo "Expected version: $EXPECTED_VERSION"
echo "Actual version in manifest.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 manifest.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: 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 ]
# 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

#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 }}"

# 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

publish_to_mcp_registry:
name: Publish to MCP Registry
#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 package.json version
run: |
EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}"
ACTUAL_VERSION=$(jq -r '.version' package.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 package.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 package.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: 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
# echo "✓ Version check passed: server.json has correct version $ACTUAL_VERSION"
- name: Install MCP Publisher
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
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

env:
NODE_AUTH_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_NPM_TOKEN }}
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,9 @@ storage/key_value_stores/default/*
# Aider coding agent files
.aider*


# MCP registry private key
key.pem

# Ignore MCP config for Opencode client
opencode.json
1 change: 0 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ All notable changes to this project will be documented in this file.

- Duplicate skyfire description when listing tools multiple times ([#277](https://github.com/apify/apify-mcp-server/pull/277)) ([aecc147](https://github.com/apify/apify-mcp-server/commit/aecc147e31a01d4fbab90930fd1c5682f96274b6)) by [@MQ37](https://github.com/MQ37)


## [0.4.10](https://github.com/apify/apify-mcp-server/releases/tag/v0.4.10) (2025-09-15)

### 🚀 Features
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"version": "0.4.13",
"type": "module",
"description": "Apify MCP Server",
"mcpName": "com.apify/apify-mcp-server",
"engines": {
"node": ">=18.0.0"
},
Expand Down
Loading
Loading