@apify/actors-mcp-server 0.1.5 → 0.1.7-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.js CHANGED
@@ -6,9 +6,10 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
6
6
  import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
7
7
  import { Actor } from 'apify';
8
8
  import { ApifyClient } from 'apify-client';
9
- import { getActorsAsTools } from './actorDefinition.js';
10
- import { ACTOR_OUTPUT_MAX_CHARS_PER_ITEM, ACTOR_OUTPUT_TRUNCATED_MESSAGE, defaults, SERVER_NAME, SERVER_VERSION, USER_AGENT_ORIGIN, } from './const.js';
9
+ import { actorNameToToolName, filterSchemaProperties, getActorDefinition, getActorsAsTools, shortenProperties, toolNameToActorName, } from './actors.js';
10
+ import { ACTOR_OUTPUT_MAX_CHARS_PER_ITEM, ACTOR_OUTPUT_TRUNCATED_MESSAGE, defaults, InternalTools, SERVER_NAME, SERVER_VERSION, USER_AGENT_ORIGIN, } from './const.js';
11
11
  import { log } from './logger.js';
12
+ import { RemoveActorToolArgsSchema, AddActorToToolsArgsSchema, DiscoverActorsArgsSchema, searchActorsByKeywords, GetActorDefinition, } from './tools.js';
12
13
  /**
13
14
  * Create Apify MCP server
14
15
  */
@@ -52,17 +53,15 @@ export class ApifyMcpServer {
52
53
  * @throws {Error} - Throws an error if the `APIFY_TOKEN` is not set
53
54
  */
54
55
  async callActorGetDataset(actorName, input, callOptions = undefined) {
55
- if (!process.env.APIFY_TOKEN) {
56
- throw new Error('APIFY_TOKEN is required but not set. Please set it as an environment variable');
57
- }
56
+ const name = toolNameToActorName(actorName);
58
57
  try {
59
- log.info(`Calling actor ${actorName} with input: ${JSON.stringify(input)}`);
58
+ log.info(`Calling actor ${name} with input: ${JSON.stringify(input)}`);
60
59
  const options = { requestInterceptors: [this.addUserAgent] };
61
60
  const client = new ApifyClient({ ...options, token: process.env.APIFY_TOKEN });
62
- const actorClient = client.actor(actorName);
61
+ const actorClient = client.actor(name);
63
62
  const results = await actorClient.call(input, callOptions);
64
63
  const dataset = await client.dataset(results.defaultDatasetId).listItems();
65
- log.info(`Actor ${actorName} finished with ${dataset.items.length} items`);
64
+ log.info(`Actor ${name} finished with ${dataset.items.length} items`);
66
65
  if (process.env.APIFY_IS_AT_HOME) {
67
66
  await Actor.pushData(dataset.items);
68
67
  log.info(`Pushed ${dataset.items.length} items to the dataset`);
@@ -70,7 +69,7 @@ export class ApifyMcpServer {
70
69
  return dataset.items;
71
70
  }
72
71
  catch (error) {
73
- log.error(`Error calling actor: ${error}. Actor: ${actorName}, input: ${JSON.stringify(input)}`);
72
+ log.error(`Error calling actor: ${error}. Actor: ${name}, input: ${JSON.stringify(input)}`);
74
73
  throw new Error(`Error calling actor: ${error}`);
75
74
  }
76
75
  }
@@ -111,23 +110,54 @@ export class ApifyMcpServer {
111
110
  this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
112
111
  const { name, arguments: args } = request.params;
113
112
  // Anthropic can't handle '/' in tool names. The replace is only necessary when calling the tool from stdio clients.
114
- const tool = this.tools.get(name) || this.tools.get(name.replace('/', '_'));
113
+ const tool = this.tools.get(name) || this.tools.get(actorNameToToolName(name));
115
114
  if (!tool) {
116
115
  throw new Error(`Unknown tool: ${name}`);
117
116
  }
117
+ if (!args) {
118
+ throw new Error(`Missing arguments for tool: ${name}`);
119
+ }
118
120
  log.info(`Validate arguments for tool: ${tool.name} with arguments: ${JSON.stringify(args)}`);
119
121
  if (!tool.ajvValidate(args)) {
120
122
  throw new Error(`Invalid arguments for tool ${tool.name}: args: ${JSON.stringify(args)} error: ${JSON.stringify(tool?.ajvValidate.errors)}`);
121
123
  }
122
124
  try {
123
- const items = await this.callActorGetDataset(tool.actorName, args, { memory: tool.memoryMbytes });
124
- const content = items.map((item) => {
125
- const text = JSON.stringify(item).slice(0, ACTOR_OUTPUT_MAX_CHARS_PER_ITEM);
126
- return text.length === ACTOR_OUTPUT_MAX_CHARS_PER_ITEM
127
- ? { type: 'text', text: `${text} ... ${ACTOR_OUTPUT_TRUNCATED_MESSAGE}` }
128
- : { type: 'text', text };
129
- });
130
- return { content };
125
+ switch (name) {
126
+ case InternalTools.ADD_ACTOR_TO_TOOLS: {
127
+ const parsed = AddActorToToolsArgsSchema.parse(args);
128
+ await this.addToolsFromActors([parsed.actorFullName]);
129
+ return { content: [{ type: 'text', text: `Actor ${args.name} was added to tools` }] };
130
+ }
131
+ case InternalTools.REMOVE_ACTOR_FROM_TOOLS: {
132
+ const parsed = RemoveActorToolArgsSchema.parse(args);
133
+ this.tools.delete(parsed.toolName);
134
+ return { content: [{ type: 'text', text: `Actor ${args.name} was removed from tools` }] };
135
+ }
136
+ case InternalTools.DISCOVER_ACTORS: {
137
+ const parsed = DiscoverActorsArgsSchema.parse(args);
138
+ const actors = await searchActorsByKeywords(parsed.search, parsed.limit, parsed.offset);
139
+ return { content: actors?.map((item) => ({ type: 'text', text: JSON.stringify(item) })) };
140
+ }
141
+ case InternalTools.GET_ACTOR_DETAILS: {
142
+ const parsed = GetActorDefinition.parse(args);
143
+ const v = await getActorDefinition(parsed.actorFullName);
144
+ if (v && v.input && 'properties' in v.input && v.input) {
145
+ const properties = filterSchemaProperties(v.input.properties);
146
+ v.input.properties = shortenProperties(properties);
147
+ }
148
+ return { content: [{ type: 'text', text: JSON.stringify(v) }] };
149
+ }
150
+ default: {
151
+ const items = await this.callActorGetDataset(tool.actorFullName, args, { memory: tool.memoryMbytes });
152
+ const content = items.map((item) => {
153
+ const text = JSON.stringify(item).slice(0, ACTOR_OUTPUT_MAX_CHARS_PER_ITEM);
154
+ return text.length === ACTOR_OUTPUT_MAX_CHARS_PER_ITEM
155
+ ? { type: 'text', text: `${text} ... ${ACTOR_OUTPUT_TRUNCATED_MESSAGE}` }
156
+ : { type: 'text', text };
157
+ });
158
+ return { content };
159
+ }
160
+ }
131
161
  }
132
162
  catch (error) {
133
163
  log.error(`Error calling tool: ${error}`);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ import type { ActorStorePruned, Tool } from './types.js';
3
+ export declare const DiscoverActorsArgsSchema: z.ZodObject<{
4
+ limit: z.ZodDefault<z.ZodNumber>;
5
+ offset: z.ZodDefault<z.ZodNumber>;
6
+ search: z.ZodDefault<z.ZodString>;
7
+ category: z.ZodDefault<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ limit: number;
10
+ offset: number;
11
+ search: string;
12
+ category: string;
13
+ }, {
14
+ limit?: number | undefined;
15
+ offset?: number | undefined;
16
+ search?: string | undefined;
17
+ category?: string | undefined;
18
+ }>;
19
+ export declare const RemoveActorToolArgsSchema: z.ZodObject<{
20
+ toolName: z.ZodEffects<z.ZodString, string, string>;
21
+ }, "strip", z.ZodTypeAny, {
22
+ toolName: string;
23
+ }, {
24
+ toolName: string;
25
+ }>;
26
+ export declare const AddActorToToolsArgsSchema: z.ZodObject<{
27
+ actorFullName: z.ZodEffects<z.ZodString, string, string>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ actorFullName: string;
30
+ }, {
31
+ actorFullName: string;
32
+ }>;
33
+ export declare const GetActorDefinition: z.ZodObject<{
34
+ actorFullName: z.ZodEffects<z.ZodString, string, string>;
35
+ }, "strip", z.ZodTypeAny, {
36
+ actorFullName: string;
37
+ }, {
38
+ actorFullName: string;
39
+ }>;
40
+ export declare function getActorAutoLoadingTools(): Tool[];
41
+ export declare function getActorDiscoveryTools(): Tool[];
42
+ export declare function searchActorsByKeywords(search: string, limit?: number | undefined, offset?: number | undefined): Promise<ActorStorePruned[] | null>;
43
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EAAE,gBAAgB,EAAe,IAAI,EAAE,MAAM,YAAY,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAqBnC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;EAKpC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;EAKpC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;EAK7B,CAAC;AAEH,wBAAgB,wBAAwB,IAAI,IAAI,EAAE,CAqBjD;AAED,wBAAgB,sBAAsB,IAAI,IAAI,EAAE,CAyB/C;AA2BD,wBAAsB,sBAAsB,CACxC,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAM,GAAG,SAAqB,EACrC,MAAM,GAAE,MAAM,GAAG,SAAqB,GACvC,OAAO,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAIpC"}
package/dist/tools.js ADDED
@@ -0,0 +1,123 @@
1
+ import { Ajv } from 'ajv';
2
+ import { ApifyClient } from 'apify-client';
3
+ import { z } from 'zod';
4
+ import { zodToJsonSchema } from 'zod-to-json-schema';
5
+ import { actorNameToToolName, toolNameToActorName } from './actors.js';
6
+ import { InternalTools } from './const.js';
7
+ export const DiscoverActorsArgsSchema = z.object({
8
+ limit: z.number()
9
+ .int()
10
+ .min(1)
11
+ .max(100)
12
+ .default(10)
13
+ .describe('The maximum number of Actors to return. Default value is 10.'),
14
+ offset: z.number()
15
+ .int()
16
+ .min(0)
17
+ .default(0)
18
+ .describe('The number of elements that should be skipped at the start. Default value is 0.'),
19
+ search: z.string()
20
+ .default('')
21
+ .describe('String of key words to search by. '
22
+ + 'Searches the title, name, description, username, and readme of an Actor.'
23
+ + 'Only key word search is supported, no advanced search.'),
24
+ category: z.string()
25
+ .default('')
26
+ .describe('Filters the results by the specified category.'),
27
+ });
28
+ export const RemoveActorToolArgsSchema = z.object({
29
+ toolName: z.string()
30
+ .describe('Full name of the Actor to remove. Actor full name is always composed from `username--name`'
31
+ + 'Never use name or username only')
32
+ .transform((val) => actorNameToToolName(val)),
33
+ });
34
+ export const AddActorToToolsArgsSchema = z.object({
35
+ actorFullName: z.string()
36
+ .describe('Full name of the Actor to add as tool. Tool name is always composed from `username--name`'
37
+ + 'Never use name or username only')
38
+ .transform((val) => actorNameToToolName(val)),
39
+ });
40
+ export const GetActorDefinition = z.object({
41
+ actorFullName: z.string()
42
+ .describe('Full name of the Actor to retrieve documentation. Actor full name is always composed from `username--name`.'
43
+ + 'Never use name or username only')
44
+ .transform((val) => toolNameToActorName(val)),
45
+ });
46
+ export function getActorAutoLoadingTools() {
47
+ const ajv = new Ajv({ coerceTypes: 'array', strict: false });
48
+ return [
49
+ {
50
+ name: InternalTools.ADD_ACTOR_TO_TOOLS,
51
+ actorFullName: InternalTools.ADD_ACTOR_TO_TOOLS,
52
+ description: 'Add an Actor tool by name to available tools. Do not execute the actor, only add it and list it in available tools. '
53
+ + 'Never run the tool without user consent! '
54
+ + 'For example, add a tool with username--name when user wants to scrape/extract data',
55
+ inputSchema: zodToJsonSchema(AddActorToToolsArgsSchema),
56
+ ajvValidate: ajv.compile(zodToJsonSchema(AddActorToToolsArgsSchema)),
57
+ },
58
+ {
59
+ name: InternalTools.REMOVE_ACTOR_FROM_TOOLS,
60
+ actorFullName: InternalTools.ADD_ACTOR_TO_TOOLS,
61
+ description: 'Remove an actor tool by name from available toos. '
62
+ + 'For example, when user says, I do not need a tool username--name anymore',
63
+ inputSchema: zodToJsonSchema(RemoveActorToolArgsSchema),
64
+ ajvValidate: ajv.compile(zodToJsonSchema(RemoveActorToolArgsSchema)),
65
+ },
66
+ ];
67
+ }
68
+ export function getActorDiscoveryTools() {
69
+ const ajv = new Ajv({ coerceTypes: 'array', strict: false });
70
+ return [
71
+ {
72
+ name: InternalTools.DISCOVER_ACTORS,
73
+ actorFullName: InternalTools.DISCOVER_ACTORS,
74
+ description: `Discover available Actors using full text search using keywords.`
75
+ + `Users try to discover Actors using free form query in this case search query needs to be converted to full text search. `
76
+ + `Prefer Actors from Apify as they are generally more reliable and have better support. `
77
+ + `Returns a list of Actors with name, description, run statistics, pricing, starts, and URL. `
78
+ + `You perhaps need to use this tool several times to find the right Actor. `
79
+ + `Limit number of results returned but ensure that relevant results are returned. `,
80
+ inputSchema: zodToJsonSchema(DiscoverActorsArgsSchema),
81
+ ajvValidate: ajv.compile(zodToJsonSchema(DiscoverActorsArgsSchema)),
82
+ },
83
+ {
84
+ name: InternalTools.GET_ACTOR_DETAILS,
85
+ actorFullName: InternalTools.GET_ACTOR_DETAILS,
86
+ description: 'Get documentation, readme, input schema and other details about Actor. '
87
+ + 'For example, when user says, I need to know more about web crawler Actor.'
88
+ + 'Get details for Actors with username--name.',
89
+ inputSchema: zodToJsonSchema(GetActorDefinition),
90
+ ajvValidate: ajv.compile(zodToJsonSchema(GetActorDefinition)),
91
+ },
92
+ ];
93
+ }
94
+ function pruneActorStoreInfo(response) {
95
+ const stats = response.stats || {};
96
+ const pricingInfo = (response.currentPricingInfo || {});
97
+ return {
98
+ name: response.name?.toString() || '',
99
+ username: response.username?.toString() || '',
100
+ actorFullName: `${response.username}/${response.name}`,
101
+ title: response.title?.toString() || '',
102
+ description: response.description?.toString() || '',
103
+ stats: {
104
+ totalRuns: stats.totalRuns,
105
+ totalUsers30Days: stats.totalUsers30Days,
106
+ publicActorRunStats30Days: 'publicActorRunStats30Days' in stats
107
+ ? stats.publicActorRunStats30Days : {},
108
+ },
109
+ currentPricingInfo: {
110
+ pricingModel: pricingInfo.pricingModel?.toString() || '',
111
+ pricePerUnitUsd: pricingInfo?.pricePerUnitUsd ?? 0,
112
+ trialMinutes: pricingInfo?.trialMinutes ?? 0,
113
+ },
114
+ url: response.url?.toString() || '',
115
+ totalStars: 'totalStars' in response ? response.totalStars : null,
116
+ };
117
+ }
118
+ export async function searchActorsByKeywords(search, limit = undefined, offset = undefined) {
119
+ const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
120
+ const results = await client.store().list({ search, limit, offset });
121
+ return results.items.map((x) => pruneActorStoreInfo(x));
122
+ }
123
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}