Skip to content

Commit 2ca4691

Browse files
committed
Merge remote-tracking branch 'origin/master' into feat/cancellable-actor
2 parents fcf2fe5 + ff565f7 commit 2ca4691

37 files changed

+1337
-1306
lines changed

.github/workflows/release.yaml

Lines changed: 73 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ jobs:
6464
- name: Update package version in package.json
6565
run: npm version --no-git-tag-version --allow-same-version ${{ needs.release_metadata.outputs.version_number }}
6666

67+
- name: Update manifest.json version
68+
run: jq '.version = "${{ needs.release_metadata.outputs.version_number }}"' manifest.json > manifest.json.tmp && mv manifest.json.tmp manifest.json
69+
6770
- name: Update CHANGELOG.md
6871
uses: DamianReeves/write-file-action@master
6972
with:
@@ -77,7 +80,7 @@ jobs:
7780
with:
7881
author_name: Apify Release Bot
7982
author_email: [email protected]
80-
message: "chore(release): Update changelog and package version [skip ci]"
83+
message: "chore(release): Update changelog, package.json and manifest.json versions [skip ci]"
8184

8285
create_github_release:
8386
name: Create github release
@@ -88,7 +91,34 @@ jobs:
8891
steps:
8992
- uses: actions/checkout@v4
9093
with:
91-
ref: ${{ needs.update_changelog.changelog_commitish }}
94+
ref: ${{ needs.update_changelog.outputs.changelog_commitish }}
95+
- name: Verify commit SHA
96+
run: |
97+
CURRENT_SHA=$(git rev-parse HEAD)
98+
EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}"
99+
echo "Expected commit SHA: $EXPECTED_SHA"
100+
echo "Actual checked out SHA: $CURRENT_SHA"
101+
if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then
102+
echo "ERROR: Checked out SHA differs from expected!"
103+
exit 1
104+
else
105+
echo "✓ Commit SHA matches expected"
106+
fi
107+
- name: Verify manifest.json version
108+
run: |
109+
EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}"
110+
ACTUAL_VERSION=$(jq -r '.version' manifest.json)
111+
112+
echo "Expected version: $EXPECTED_VERSION"
113+
echo "Actual version in manifest.json: $ACTUAL_VERSION"
114+
echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}"
115+
116+
if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then
117+
echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in manifest.json"
118+
exit 1
119+
fi
120+
121+
echo "✓ Version check passed: manifest.json has correct version $ACTUAL_VERSION"
92122
- name: Use Node.js 22
93123
uses: actions/setup-node@v4
94124
with:
@@ -112,24 +142,54 @@ jobs:
112142
cp manifest.json dxt/manifest.json
113143
- name: Create DXT package
114144
run: npx -y @anthropic-ai/dxt pack dxt/ actors-mcp-server.dxt
115-
- name: Create release
116-
uses: softprops/action-gh-release@v2
117-
with:
118-
tag_name: ${{ needs.release_metadata.outputs.tag_name }}
119-
name: ${{ needs.release_metadata.outputs.version_number }}
120-
target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }}
121-
body: ${{ needs.release_metadata.outputs.release_notes }}
122-
files: |
123-
actors-mcp-server.dxt
145+
- name: Copy DXT package
146+
run: cp actors-mcp-server.dxt apify-mcp-server.dxt
147+
- name: Create release
148+
uses: softprops/action-gh-release@v2
149+
with:
150+
tag_name: ${{ needs.release_metadata.outputs.tag_name }}
151+
name: ${{ needs.release_metadata.outputs.version_number }}
152+
target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }}
153+
body: ${{ needs.release_metadata.outputs.release_notes }}
154+
files: |
155+
actors-mcp-server.dxt
156+
apify-mcp-server.dxt
124157
125158
publish_to_npm:
126159
name: Publish to NPM
127-
needs: [ update_changelog ]
160+
needs: [ release_metadata, update_changelog ]
128161
runs-on: ubuntu-latest
129162
steps:
130163
- uses: actions/checkout@v4
131164
with:
132-
ref: ${{ needs.update_changelog.changelog_commitish }}
165+
ref: ${{ needs.update_changelog.outputs.changelog_commitish }}
166+
- name: Verify commit SHA
167+
run: |
168+
CURRENT_SHA=$(git rev-parse HEAD)
169+
EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}"
170+
echo "Expected commit SHA: $EXPECTED_SHA"
171+
echo "Actual checked out SHA: $CURRENT_SHA"
172+
if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then
173+
echo "ERROR: Checked out SHA differs from expected!"
174+
exit 1
175+
else
176+
echo "✓ Commit SHA matches expected"
177+
fi
178+
- name: Verify package.json version
179+
run: |
180+
EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}"
181+
ACTUAL_VERSION=$(jq -r '.version' package.json)
182+
183+
echo "Expected version: $EXPECTED_VERSION"
184+
echo "Actual version in package.json: $ACTUAL_VERSION"
185+
echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}"
186+
187+
if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then
188+
echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in package.json"
189+
exit 1
190+
fi
191+
192+
echo "✓ Version check passed: package.json has correct version $ACTUAL_VERSION"
133193
- name: Use Node.js 22
134194
uses: actions/setup-node@v4
135195
with:

CHANGELOG.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,45 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [0.4.4](https://github.com/apify/apify-mcp-server/releases/tag/v0.4.4) (2025-08-28)
6+
7+
### 🐛 Bug Fixes
8+
9+
- Add resource list method to prevent client not respecting capabilities from crashing, update manifest.json for dxt ([#249](https://github.com/apify/apify-mcp-server/pull/249)) ([1dca956](https://github.com/apify/apify-mcp-server/commit/1dca956e5deb3efbb604005710fdbf2794202321)) by [@MQ37](https://github.com/MQ37)
10+
11+
12+
## [0.4.3](https://github.com/apify/apify-mcp-server/releases/tag/v0.4.3) (2025-08-27)
13+
14+
### 🐛 Bug Fixes
15+
16+
- Dxt manifest fix prompts ([#246](https://github.com/apify/apify-mcp-server/pull/246)) ([7c89f38](https://github.com/apify/apify-mcp-server/commit/7c89f388c40e756a5f9fcad18ffe31e960962343)) by [@MQ37](https://github.com/MQ37)
17+
18+
19+
## [0.4.2](https://github.com/apify/apify-mcp-server/releases/tag/v0.4.2) (2025-08-27)
20+
21+
22+
## [0.4.1](https://github.com/apify/apify-mcp-server/releases/tag/v0.4.1) (2025-08-27)
23+
24+
### 🚀 Features
25+
26+
- Implement mcp logging set level request handler ([#242](https://github.com/apify/apify-mcp-server/pull/242)) ([339d556](https://github.com/apify/apify-mcp-server/commit/339d556bd378c36e3091515bda7d6086cdda69ab)) by [@MQ37](https://github.com/MQ37), closes [#231](https://github.com/apify/apify-mcp-server/issues/231)
27+
28+
29+
## [0.4.0](https://github.com/apify/apify-mcp-server/releases/tag/v0.4.0) (2025-08-26)
30+
31+
32+
## [0.4.0](https://github.com/apify/apify-mcp-server/releases/tag/v0.4.0) (2025-08-26)
33+
34+
### 🚀 Features
35+
36+
- **input:** Allow empty tools and actors to allow greater control of exposed tools ([#218](https://github.com/apify/apify-mcp-server/pull/218)) ([a4a8638](https://github.com/apify/apify-mcp-server/commit/a4a86389fb65bed099974993ab34b63f7159064d)) by [@MQ37](https://github.com/MQ37), closes [#214](https://github.com/apify/apify-mcp-server/issues/214)
37+
38+
### 🐛 Bug Fixes
39+
40+
- Description in package.json and manifest.json ([#234](https://github.com/apify/apify-mcp-server/pull/234)) ([9f4bcfa](https://github.com/apify/apify-mcp-server/commit/9f4bcfa59df231d12efe1ca574641943c1d1e26e)) by [@jirispilka](https://github.com/jirispilka)
41+
- Change github repository links ([#237](https://github.com/apify/apify-mcp-server/pull/237)) ([6216fa4](https://github.com/apify/apify-mcp-server/commit/6216fa40638616c481ce401cd671a112e897e42a)) by [@jirispilka](https://github.com/jirispilka)
42+
43+
544
## [0.3.9](https://github.com/apify/actors-mcp-server/releases/tag/v0.3.9) (2025-08-21)
645

746

README.md

Lines changed: 89 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ The Apify Model Context Protocol (MCP) Server at **mcp.apify.com** instantly con
2626
>
2727
> It supports OAuth, so you can connect from clients like Claude.ai or Visual Studio Code with just the URL.
2828
29-
![Actors-MCP-server](docs/actors-mcp-server.png)
29+
![Apify-MCP-server](docs/actors-mcp-server.png)
3030

3131
## Table of Contents
3232
- [🌐 Introducing the Apify MCP server](#-introducing-the-apify-mcp-server)
@@ -107,7 +107,7 @@ Check out [Apify Tester MCP Client](https://apify.com/jiri.spilka/tester-mcp-cli
107107
This interactive, chat-like interface provides an easy way to explore the capabilities of Apify MCP without any local setup.
108108
Just sign in with your Apify account and start experimenting with web scraping, data extraction, and automation tools!
109109

110-
Or use the Anthropic Desktop extension file (dxt) for one-click installation: [Apify MCP server dxt file](https://github.com/apify/actors-mcp-server/releases/latest/download/actors-mcp-server.dxt)
110+
Or use the Anthropic Desktop extension file (dxt) for one-click installation: [Apify MCP server dxt file](https://github.com/apify/apify-mcp-server/releases/latest/download/apify-mcp-server.dxt)
111111

112112
# 🛠️ Tools, resources, and prompts
113113

@@ -140,43 +140,107 @@ One of the most powerful features of using MCP with Apify is dynamic tool discov
140140
It gives an AI agent the ability to find new tools (Actors) as needed and incorporate them.
141141
Here are some special MCP operations and how the Apify MCP Server supports them:
142142

143-
- **Actor discovery and management**: Search for Actors, view their details, and dynamically add or remove them as available tools for the AI.
143+
- **Apify Actors**: Search for Actors, view their details, and use them as tools for the AI.
144144
- **Apify documentation**: Search the Apify documentation and fetch specific documents to provide context to the AI.
145-
- **Actor runs (*)**: Get lists of your Actor runs, inspect their details, and retrieve logs.
146-
- **Apify storage (*)**: Access data from your datasets and key-value stores.
147-
148-
**Note**: Helper tool categories marked with (*) are not enabled by default in the MCP server and must be explicitly enabled using the `tools` argument (either the `--tools` command line argument for the stdio server or the `?tools` URL query parameter for the remote MCP server). The `tools` argument is a comma-separated list of categories with the following possible values:
149-
150-
- `docs`: Search and fetch Apify documentation tools.
151-
- `runs`: Get Actor run lists, run details, and logs from a specific Actor run.
152-
- `storage`: Access datasets, key-value stores, and their records.
153-
- `preview`: Experimental tools in preview mode.
154-
155-
For example, to enable all tools, use `npx @apify/actors-mcp-server --tools docs,runs,storage,preview` or `https://mcp.apify.com/?tools=docs,runs,storage,preview`.
145+
- **Actor runs**: Get lists of your Actor runs, inspect their details, and retrieve logs.
146+
- **Apify storage**: Access data from your datasets and key-value stores.
156147

157148
### Overview of available tools
158149

159150
Here is an overview list of all the tools provided by the Apify MCP Server.
160151

161152
| Tool name | Category | Description | Enabled by default |
162153
| :--- | :--- | :--- | :---: |
163-
| `get-actor-details` | default | Retrieve detailed information about a specific Actor. ||
164-
| `search-actors` | default | Search for Actors in the Apify Store. ||
165-
| `add-actor` | default | Add an Actor as a new tool for the user to call. ||
166-
| [`apify-slash-rag-web-browser`](https://apify.com/apify/rag-web-browser) | default | An Actor tool to browse the web. ||
154+
| `search-actors` | actors | Search for Actors in the Apify Store. ||
155+
| `fetch-actor-details` | actors | Retrieve detailed information about a specific Actor. ||
156+
| `call-actor` | actors | Call an Actor and get its run results. ||
157+
| [`apify-slash-rag-web-browser`](https://apify.com/apify/rag-web-browser) | Actor (see [tool configuration](#tools-configuration)) | An Actor tool to browse the web. ||
167158
| `search-apify-docs` | docs | Search the Apify documentation for relevant pages. ||
168159
| `fetch-apify-docs` | docs | Fetch the full content of an Apify documentation page by its URL. ||
169-
| `call-actor` | preview | Call an Actor and get its run results. | |
170160
| `get-actor-run` | runs | Get detailed information about a specific Actor run. | |
171161
| `get-actor-run-list` | runs | Get a list of an Actor's runs, filterable by status. | |
172162
| `get-actor-log` | runs | Retrieve the logs for a specific Actor run. | |
173163
| `get-dataset` | storage | Get metadata about a specific dataset. | |
174164
| `get-dataset-items` | storage | Retrieve items from a dataset with support for filtering and pagination. | |
165+
| `get-dataset-schema` | storage | Generate a JSON schema from dataset items. | |
175166
| `get-key-value-store` | storage | Get metadata about a specific key-value store. | |
176167
| `get-key-value-store-keys`| storage | List the keys within a specific key-value store. | |
177168
| `get-key-value-store-record`| storage | Get the value associated with a specific key in a key-value store. | |
178169
| `get-dataset-list` | storage | List all available datasets for the user. | |
179170
| `get-key-value-store-list`| storage | List all available key-value stores for the user. | |
171+
| `add-actor` | experimental | Add an Actor as a new tool for the user to call. | |
172+
173+
### Tools configuration
174+
175+
The `tools` configuration parameter is used to specify loaded tools - either categories or specific tools directly, and Apify Actors. For example, `tools=storage,runs` loads two categories; `tools=add-actor` loads just one tool.
176+
177+
When no query parameters are provided, the MCP server loads the following `tools` by default:
178+
179+
- `actors`
180+
- `docs`
181+
- `apify/rag-web-browser`
182+
183+
If the tools parameter is specified, only the listed tools or categories will be enabled - no default tools will be included.
184+
185+
> **Easy configuration:**
186+
>
187+
> Use the [UI configurator](https://mcp.apify.com/) to configure your server, then copy the configuration to your client.
188+
189+
**Configuring the hosted server:**
190+
191+
The hosted server can be configured using query parameters in the URL. For example, to load the default tools, use:
192+
193+
```
194+
https://mcp.apify.com?tools=actors,docs,apify/rag-web-browser
195+
```
196+
197+
For minimal configuration, if you want to use only a single Actor tool - without any discovery or generic calling tools, the server can be configured as follows:
198+
199+
```
200+
https://mcp.apify.com?tools=apify/my-actor
201+
```
202+
203+
This setup exposes only the specified Actor (`apify/my-actor`) as a tool. No other tools will be available.
204+
205+
**Configuring the CLI:**
206+
207+
The CLI can be configured using command-line flags. For example, to load the same tools as in the hosted server configuration, use:
208+
209+
```bash
210+
npx @apify/actors-mcp-server --tools actors,docs,apify/rag-web-browser
211+
```
212+
213+
The minimal configuration is similar to the hosted server configuration:
214+
215+
```bash
216+
npx @apify/actors-mcp-server --tools apify/my-actor
217+
```
218+
219+
As above, this exposes only the specified Actor (`apify/my-actor`) as a tool. No other tools will be available.
220+
221+
> **⚠️ Important recommendation**
222+
>
223+
> **The default tools configuration may change in future versions.** When no `tools` parameter is specified, the server currently loads default tools, but this behavior is subject to change.
224+
>
225+
> **For production use and stable interfaces, always explicitly specify the `tools` parameter** to ensure your configuration remains consistent across updates.
226+
227+
### Backward compatibility
228+
229+
The v2 configuration preserves backward compatibility with v1 usage. Notes:
230+
231+
- `actors` param (URL) and `--actors` flag (CLI) are still supported.
232+
- Internally they are merged into `tools` selectors.
233+
- Examples: `?actors=apify/rag-web-browser``?tools=apify/rag-web-browser`; `--actors apify/rag-web-browser``--tools apify/rag-web-browser`.
234+
- `enable-adding-actors` (CLI) and `enableAddingActors` (URL) are supported but deprecated.
235+
- Prefer `tools=experimental` or including the specific tool `tools=add-actor`.
236+
- Behavior remains: when enabled with no `tools` specified, the server exposes only `add-actor`; when categories/tools are selected, `add-actor` is also included.
237+
- `enableActorAutoLoading` remains as a legacy alias for `enableAddingActors` and is mapped automatically.
238+
- Defaults remain compatible: when no `tools` are specified, the server loads `actors`, `docs`, and `apify/rag-web-browser`.
239+
- If any `tools` are specified, the defaults are not added (same as v1 intent for explicit selection).
240+
- `call-actor` is now included by default via the `actors` category (additive change). To exclude it, specify an explicit `tools` list without `actors`.
241+
- `preview` category is deprecated and removed. Use specific tool names instead.
242+
243+
Existing URLs and commands using `?actors=...` or `--actors` continue to work unchanged.
180244

181245
### Prompts
182246

@@ -237,9 +301,12 @@ Upon launching, the Inspector will display a URL that you can open in your brows
237301

238302
## 🐦 Canary PR releases
239303

240-
Due to the current architecture where Apify MCP is split across two repositories, this one containing the core MCP logic and the private [apify-mcp-server](https://github.com/apify/apify-mcp-server) repository that handles the actual server implementation for [mcp.apify.com](https://mcp.apify.com), development can be challenging as changes need to be synchronized between both repositories.
304+
Apify MCP is split across two repositories: this one for core MCP logic and the private `apify-mcp-server-internal` for the hosted server.
305+
Changes must be synchronized between both.
241306

242-
You can create a canary release from your PR branch by adding the `beta` tag. This will test the code and publish the package to [pkg.pr.new](https://pkg.pr.new/) which you can then use, for example, in a staging environment to test before actually merging the changes. This way we do not need to create new NPM releases and keep the NPM versions cleaner. The workflow runs whenever you commit to a PR branch that has the `beta` tag or when you add the `beta` tag to an already existing PR. For more details check out [the workflow file](.github/workflows/pre_release.yaml).
307+
To create a canary release, add the `beta` tag to your PR branch.
308+
This publishes the package to [pkg.pr.new](https://pkg.pr.new/) for staging and testing before merging.
309+
See [the workflow file](.github/workflows/pre_release.yaml) for details.
243310

244311
# 🐛 Troubleshooting (local MCP server)
245312

@@ -262,7 +329,7 @@ The Actor input schema is processed to be compatible with most MCP clients while
262329

263330
We welcome contributions to improve the Apify MCP Server! Here's how you can help:
264331

265-
- **🐛 Report issues**: Find a bug or have a feature request? [Open an issue](https://github.com/apify/actors-mcp-server/issues).
332+
- **🐛 Report issues**: Find a bug or have a feature request? [Open an issue](https://github.com/apify/apify-mcp-server/issues).
266333
- **🔧 Submit pull requests**: Fork the repo and submit pull requests with enhancements or fixes.
267334
- **📚 Documentation**: Improvements to docs and examples are always welcome.
268335
- **💡 Share use cases**: Contribute examples to help other users.

0 commit comments

Comments
 (0)