firecrawl-mcp 3.19.0 → 3.20.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/README.md +2 -108
- package/dist/index.js +0 -198
- package/dist/monitor.js +2 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -18,7 +18,6 @@ A Model Context Protocol (MCP) server that brings [Firecrawl](https://github.com
|
|
|
18
18
|
- Scrape any URL into clean, structured data
|
|
19
19
|
- Interact with pages — click, navigate, and operate
|
|
20
20
|
- Deep research with autonomous agent
|
|
21
|
-
- Cloud browser sessions with agent-browser automation
|
|
22
21
|
- Automatic retries and rate limiting
|
|
23
22
|
- Cloud and self-hosted support
|
|
24
23
|
- SSE support
|
|
@@ -328,7 +327,6 @@ Use this guide to select the right tool for your task:
|
|
|
328
327
|
- **If you need complex research across multiple unknown sources:** use **agent**
|
|
329
328
|
- **If you want to analyze a whole site or section:** use **crawl** (with limits!)
|
|
330
329
|
- **If you need interactive browser automation** (click, type, navigate): use **scrape** + **interact**
|
|
331
|
-
- **If you need a raw CDP browser session** (advanced): use **browser** (deprecated)
|
|
332
330
|
|
|
333
331
|
### Quick Reference Table
|
|
334
332
|
|
|
@@ -341,7 +339,6 @@ Use this guide to select the right tool for your task:
|
|
|
341
339
|
| crawl | Multi-page extraction (with limits) | markdown/html[] |
|
|
342
340
|
| search | Web search for info | results[] |
|
|
343
341
|
| agent | Complex multi-source research | JSON (structured data) |
|
|
344
|
-
| browser | Interactive multi-step automation (deprecated) | Session with live browser |
|
|
345
342
|
|
|
346
343
|
### Format Selection Guide
|
|
347
344
|
|
|
@@ -886,6 +883,8 @@ Create and manage recurring page monitors. Monitors run scheduled scrapes or cra
|
|
|
886
883
|
|
|
887
884
|
Use `page` or `pages` plus `goal`. The MCP server builds the monitor request with a 30-minute schedule and the API enables meaningful-change judging automatically.
|
|
888
885
|
|
|
886
|
+
Meaningful-change judging runs automatically when `goal` is set. Page webhooks expose `isMeaningful` and `judgment` on `monitor.page` events.
|
|
887
|
+
|
|
889
888
|
Write goals as concise 2-3 sentence monitor instructions. Say what should trigger an alert, preserve any scope the user gave, and include intent-specific exclusions only when obvious from the request. Generic noise such as whitespace, formatting-only changes, request IDs, tracking params, generic metadata, and unrelated page chrome is already handled by the judge, so do not repeat it in every goal. If the user is vague, keep the goal broad; if they ask for broad monitoring or "any change", preserve that. If the user says they do not care about something, include that explicitly.
|
|
890
889
|
|
|
891
890
|
```json
|
|
@@ -938,111 +937,6 @@ Pass `body` when you need crawl targets, JSON change tracking, custom retention,
|
|
|
938
937
|
- `firecrawl_monitor_checks`: list checks, optionally filtered by status.
|
|
939
938
|
- `firecrawl_monitor_check`: get page-level results, including `diff`, `snapshot`, `judgment.meaningful`, and `judgment.meaningfulChanges`.
|
|
940
939
|
|
|
941
|
-
### 12. Browser Create (`firecrawl_browser_create`) — Deprecated
|
|
942
|
-
|
|
943
|
-
> **Deprecated:** Prefer `firecrawl_scrape` + `firecrawl_interact` instead. Interact lets you scrape a page and then click, fill forms, and navigate without managing sessions manually.
|
|
944
|
-
|
|
945
|
-
Create a cloud browser session for interactive automation.
|
|
946
|
-
|
|
947
|
-
**Arguments:**
|
|
948
|
-
|
|
949
|
-
- `ttl`: Total session lifetime in seconds (30-3600, optional)
|
|
950
|
-
- `activityTtl`: Idle timeout in seconds (10-3600, optional)
|
|
951
|
-
- `streamWebView`: Whether to enable live view streaming (optional)
|
|
952
|
-
- `profile`: Save and reuse browser state across sessions (optional)
|
|
953
|
-
- `name`: Profile name (sessions with the same name share state)
|
|
954
|
-
- `saveChanges`: Whether to save changes back to the profile (default: true)
|
|
955
|
-
|
|
956
|
-
**Usage Example:**
|
|
957
|
-
|
|
958
|
-
```json
|
|
959
|
-
{
|
|
960
|
-
"name": "firecrawl_browser_create",
|
|
961
|
-
"arguments": {
|
|
962
|
-
"ttl": 600,
|
|
963
|
-
"profile": { "name": "my-profile", "saveChanges": true }
|
|
964
|
-
}
|
|
965
|
-
}
|
|
966
|
-
```
|
|
967
|
-
|
|
968
|
-
**Returns:**
|
|
969
|
-
|
|
970
|
-
- Session ID, CDP URL, and live view URL
|
|
971
|
-
|
|
972
|
-
### 13. Browser Execute (`firecrawl_browser_execute`) — Deprecated
|
|
973
|
-
|
|
974
|
-
> **Deprecated:** Prefer `firecrawl_scrape` + `firecrawl_interact` instead.
|
|
975
|
-
|
|
976
|
-
Execute code in a browser session. Supports agent-browser commands (bash), Python, or JavaScript.
|
|
977
|
-
|
|
978
|
-
**Recommended: Use bash with agent-browser commands** (pre-installed in every sandbox):
|
|
979
|
-
|
|
980
|
-
```json
|
|
981
|
-
{
|
|
982
|
-
"name": "firecrawl_browser_execute",
|
|
983
|
-
"arguments": {
|
|
984
|
-
"sessionId": "session-id-here",
|
|
985
|
-
"code": "agent-browser open https://example.com",
|
|
986
|
-
"language": "bash"
|
|
987
|
-
}
|
|
988
|
-
}
|
|
989
|
-
```
|
|
990
|
-
|
|
991
|
-
**Common agent-browser commands:**
|
|
992
|
-
|
|
993
|
-
| Command | Description |
|
|
994
|
-
| ------------------------------- | -------------------------------------- |
|
|
995
|
-
| `agent-browser open <url>` | Navigate to URL |
|
|
996
|
-
| `agent-browser snapshot` | Accessibility tree with clickable refs |
|
|
997
|
-
| `agent-browser click @e5` | Click element by ref from snapshot |
|
|
998
|
-
| `agent-browser type @e3 "text"` | Type into element |
|
|
999
|
-
| `agent-browser get title` | Get page title |
|
|
1000
|
-
| `agent-browser screenshot` | Take screenshot |
|
|
1001
|
-
| `agent-browser --help` | Full command reference |
|
|
1002
|
-
|
|
1003
|
-
**For Playwright scripting, use Python:**
|
|
1004
|
-
|
|
1005
|
-
```json
|
|
1006
|
-
{
|
|
1007
|
-
"name": "firecrawl_browser_execute",
|
|
1008
|
-
"arguments": {
|
|
1009
|
-
"sessionId": "session-id-here",
|
|
1010
|
-
"code": "await page.goto('https://example.com')\ntitle = await page.title()\nprint(title)",
|
|
1011
|
-
"language": "python"
|
|
1012
|
-
}
|
|
1013
|
-
}
|
|
1014
|
-
```
|
|
1015
|
-
|
|
1016
|
-
### 14. Browser List (`firecrawl_browser_list`) — Deprecated
|
|
1017
|
-
|
|
1018
|
-
> **Deprecated:** Prefer `firecrawl_scrape` + `firecrawl_interact` instead.
|
|
1019
|
-
|
|
1020
|
-
List browser sessions, optionally filtered by status.
|
|
1021
|
-
|
|
1022
|
-
```json
|
|
1023
|
-
{
|
|
1024
|
-
"name": "firecrawl_browser_list",
|
|
1025
|
-
"arguments": {
|
|
1026
|
-
"status": "active"
|
|
1027
|
-
}
|
|
1028
|
-
}
|
|
1029
|
-
```
|
|
1030
|
-
|
|
1031
|
-
### 15. Browser Delete (`firecrawl_browser_delete`) — Deprecated
|
|
1032
|
-
|
|
1033
|
-
> **Deprecated:** Prefer `firecrawl_scrape` + `firecrawl_interact` instead.
|
|
1034
|
-
|
|
1035
|
-
Destroy a browser session.
|
|
1036
|
-
|
|
1037
|
-
```json
|
|
1038
|
-
{
|
|
1039
|
-
"name": "firecrawl_browser_delete",
|
|
1040
|
-
"arguments": {
|
|
1041
|
-
"sessionId": "session-id-here"
|
|
1042
|
-
}
|
|
1043
|
-
}
|
|
1044
|
-
```
|
|
1045
|
-
|
|
1046
940
|
## Logging System
|
|
1047
941
|
|
|
1048
942
|
The server includes comprehensive logging:
|
package/dist/index.js
CHANGED
|
@@ -1203,204 +1203,6 @@ Check the status of an agent job and retrieve results when complete. Use this to
|
|
|
1203
1203
|
return asText(res);
|
|
1204
1204
|
},
|
|
1205
1205
|
});
|
|
1206
|
-
// Browser session tools (deprecated — prefer firecrawl_scrape + firecrawl_interact)
|
|
1207
|
-
server.addTool({
|
|
1208
|
-
name: 'firecrawl_browser_create',
|
|
1209
|
-
annotations: {
|
|
1210
|
-
title: 'Create browser session',
|
|
1211
|
-
readOnlyHint: false,
|
|
1212
|
-
openWorldHint: false,
|
|
1213
|
-
destructiveHint: false,
|
|
1214
|
-
},
|
|
1215
|
-
description: `
|
|
1216
|
-
**DEPRECATED — prefer firecrawl_scrape + firecrawl_interact instead.** Interact lets you scrape a page and then click, fill forms, and navigate without managing sessions manually.
|
|
1217
|
-
|
|
1218
|
-
Create a browser session for code execution via CDP (Chrome DevTools Protocol).
|
|
1219
|
-
|
|
1220
|
-
**Arguments:**
|
|
1221
|
-
- ttl: Total session lifetime in seconds (30-3600, optional)
|
|
1222
|
-
- activityTtl: Idle timeout in seconds (10-3600, optional)
|
|
1223
|
-
- streamWebView: Whether to enable live view streaming (optional)
|
|
1224
|
-
- profile: Save and reuse browser state (cookies, localStorage) across sessions (optional)
|
|
1225
|
-
- name: Profile name (sessions with the same name share state)
|
|
1226
|
-
- saveChanges: Whether to save changes back to the profile (default: true)
|
|
1227
|
-
|
|
1228
|
-
**Usage Example:**
|
|
1229
|
-
\`\`\`json
|
|
1230
|
-
{
|
|
1231
|
-
"name": "firecrawl_browser_create",
|
|
1232
|
-
"arguments": {
|
|
1233
|
-
"profile": { "name": "my-profile", "saveChanges": true }
|
|
1234
|
-
}
|
|
1235
|
-
}
|
|
1236
|
-
\`\`\`
|
|
1237
|
-
**Returns:** Session ID, CDP URL, and live view URL.
|
|
1238
|
-
`,
|
|
1239
|
-
parameters: z.object({
|
|
1240
|
-
ttl: z.number().min(30).max(3600).optional(),
|
|
1241
|
-
activityTtl: z.number().min(10).max(3600).optional(),
|
|
1242
|
-
streamWebView: z.boolean().optional(),
|
|
1243
|
-
profile: z
|
|
1244
|
-
.object({
|
|
1245
|
-
name: z.string().min(1).max(128),
|
|
1246
|
-
saveChanges: z.boolean().default(true),
|
|
1247
|
-
})
|
|
1248
|
-
.optional(),
|
|
1249
|
-
}),
|
|
1250
|
-
execute: async (args, { session, log }) => {
|
|
1251
|
-
const client = getClient(session);
|
|
1252
|
-
const a = args;
|
|
1253
|
-
const cleaned = removeEmptyTopLevel(a);
|
|
1254
|
-
log.info('Creating browser session');
|
|
1255
|
-
const res = await client.browser(cleaned);
|
|
1256
|
-
return asText(res);
|
|
1257
|
-
},
|
|
1258
|
-
});
|
|
1259
|
-
if (!SAFE_MODE) {
|
|
1260
|
-
server.addTool({
|
|
1261
|
-
name: 'firecrawl_browser_execute',
|
|
1262
|
-
annotations: {
|
|
1263
|
-
title: 'Run code in browser session',
|
|
1264
|
-
readOnlyHint: false,
|
|
1265
|
-
openWorldHint: false,
|
|
1266
|
-
destructiveHint: true,
|
|
1267
|
-
},
|
|
1268
|
-
description: `
|
|
1269
|
-
**DEPRECATED — prefer firecrawl_scrape + firecrawl_interact instead.** Interact lets you scrape a page and then click, fill forms, and navigate without managing sessions manually.
|
|
1270
|
-
|
|
1271
|
-
Execute code in a browser session. Supports agent-browser commands (bash), Python, or JavaScript.
|
|
1272
|
-
**Requires:** An active browser session (create one with firecrawl_browser_create first).
|
|
1273
|
-
|
|
1274
|
-
**Arguments:**
|
|
1275
|
-
- sessionId: The browser session ID (required)
|
|
1276
|
-
- code: The code to execute (required)
|
|
1277
|
-
- language: "bash", "python", or "node" (optional, defaults to "bash")
|
|
1278
|
-
|
|
1279
|
-
**Recommended: Use bash with agent-browser commands** (pre-installed in every sandbox):
|
|
1280
|
-
\`\`\`json
|
|
1281
|
-
{
|
|
1282
|
-
"name": "firecrawl_browser_execute",
|
|
1283
|
-
"arguments": {
|
|
1284
|
-
"sessionId": "session-id-here",
|
|
1285
|
-
"code": "agent-browser open https://example.com",
|
|
1286
|
-
"language": "bash"
|
|
1287
|
-
}
|
|
1288
|
-
}
|
|
1289
|
-
\`\`\`
|
|
1290
|
-
|
|
1291
|
-
**Common agent-browser commands:**
|
|
1292
|
-
- \`agent-browser open <url>\` — Navigate to URL
|
|
1293
|
-
- \`agent-browser snapshot\` — Get accessibility tree with clickable refs (for AI)
|
|
1294
|
-
- \`agent-browser snapshot -i -c\` — Interactive elements only, compact
|
|
1295
|
-
- \`agent-browser click @e5\` — Click element by ref from snapshot
|
|
1296
|
-
- \`agent-browser type @e3 "text"\` — Type into element
|
|
1297
|
-
- \`agent-browser fill @e3 "text"\` — Clear and fill element
|
|
1298
|
-
- \`agent-browser get text @e1\` — Get text content
|
|
1299
|
-
- \`agent-browser get title\` — Get page title
|
|
1300
|
-
- \`agent-browser get url\` — Get current URL
|
|
1301
|
-
- \`agent-browser screenshot [path]\` — Take screenshot
|
|
1302
|
-
- \`agent-browser scroll down\` — Scroll page
|
|
1303
|
-
- \`agent-browser wait 2000\` — Wait 2 seconds
|
|
1304
|
-
- \`agent-browser --help\` — Full command reference
|
|
1305
|
-
|
|
1306
|
-
**For Playwright scripting, use Python** (has proper async/await support):
|
|
1307
|
-
\`\`\`json
|
|
1308
|
-
{
|
|
1309
|
-
"name": "firecrawl_browser_execute",
|
|
1310
|
-
"arguments": {
|
|
1311
|
-
"sessionId": "session-id-here",
|
|
1312
|
-
"code": "await page.goto('https://example.com')\\ntitle = await page.title()\\nprint(title)",
|
|
1313
|
-
"language": "python"
|
|
1314
|
-
}
|
|
1315
|
-
}
|
|
1316
|
-
\`\`\`
|
|
1317
|
-
|
|
1318
|
-
**Note:** Prefer bash (agent-browser) or Python.
|
|
1319
|
-
**Returns:** Execution result including stdout, stderr, and exit code.
|
|
1320
|
-
`,
|
|
1321
|
-
parameters: z.object({
|
|
1322
|
-
sessionId: z.string(),
|
|
1323
|
-
code: z.string(),
|
|
1324
|
-
language: z.enum(['bash', 'python', 'node']).optional(),
|
|
1325
|
-
}),
|
|
1326
|
-
execute: async (args, { session, log }) => {
|
|
1327
|
-
const client = getClient(session);
|
|
1328
|
-
const { sessionId, code, language } = args;
|
|
1329
|
-
log.info('Executing code in browser session', { sessionId });
|
|
1330
|
-
const res = await client.browserExecute(sessionId, { code, language });
|
|
1331
|
-
return asText(res);
|
|
1332
|
-
},
|
|
1333
|
-
});
|
|
1334
|
-
}
|
|
1335
|
-
server.addTool({
|
|
1336
|
-
name: 'firecrawl_browser_delete',
|
|
1337
|
-
annotations: {
|
|
1338
|
-
title: 'Delete browser session',
|
|
1339
|
-
readOnlyHint: false,
|
|
1340
|
-
openWorldHint: false,
|
|
1341
|
-
destructiveHint: true,
|
|
1342
|
-
},
|
|
1343
|
-
description: `
|
|
1344
|
-
**DEPRECATED — prefer firecrawl_scrape + firecrawl_interact instead.**
|
|
1345
|
-
|
|
1346
|
-
Destroy a browser session.
|
|
1347
|
-
|
|
1348
|
-
**Usage Example:**
|
|
1349
|
-
\`\`\`json
|
|
1350
|
-
{
|
|
1351
|
-
"name": "firecrawl_browser_delete",
|
|
1352
|
-
"arguments": {
|
|
1353
|
-
"sessionId": "session-id-here"
|
|
1354
|
-
}
|
|
1355
|
-
}
|
|
1356
|
-
\`\`\`
|
|
1357
|
-
**Returns:** Success confirmation.
|
|
1358
|
-
`,
|
|
1359
|
-
parameters: z.object({
|
|
1360
|
-
sessionId: z.string(),
|
|
1361
|
-
}),
|
|
1362
|
-
execute: async (args, { session, log }) => {
|
|
1363
|
-
const client = getClient(session);
|
|
1364
|
-
const { sessionId } = args;
|
|
1365
|
-
log.info('Deleting browser session', { sessionId });
|
|
1366
|
-
const res = await client.deleteBrowser(sessionId);
|
|
1367
|
-
return asText(res);
|
|
1368
|
-
},
|
|
1369
|
-
});
|
|
1370
|
-
server.addTool({
|
|
1371
|
-
name: 'firecrawl_browser_list',
|
|
1372
|
-
annotations: {
|
|
1373
|
-
title: 'List browser sessions',
|
|
1374
|
-
readOnlyHint: true,
|
|
1375
|
-
openWorldHint: false,
|
|
1376
|
-
},
|
|
1377
|
-
description: `
|
|
1378
|
-
**DEPRECATED — prefer firecrawl_scrape + firecrawl_interact instead.**
|
|
1379
|
-
|
|
1380
|
-
List browser sessions, optionally filtered by status.
|
|
1381
|
-
|
|
1382
|
-
**Usage Example:**
|
|
1383
|
-
\`\`\`json
|
|
1384
|
-
{
|
|
1385
|
-
"name": "firecrawl_browser_list",
|
|
1386
|
-
"arguments": {
|
|
1387
|
-
"status": "active"
|
|
1388
|
-
}
|
|
1389
|
-
}
|
|
1390
|
-
\`\`\`
|
|
1391
|
-
**Returns:** Array of browser sessions.
|
|
1392
|
-
`,
|
|
1393
|
-
parameters: z.object({
|
|
1394
|
-
status: z.enum(['active', 'destroyed']).optional(),
|
|
1395
|
-
}),
|
|
1396
|
-
execute: async (args, { session, log }) => {
|
|
1397
|
-
const client = getClient(session);
|
|
1398
|
-
const { status } = args;
|
|
1399
|
-
log.info('Listing browser sessions', { status });
|
|
1400
|
-
const res = await client.listBrowsers({ status });
|
|
1401
|
-
return asText(res);
|
|
1402
|
-
},
|
|
1403
|
-
});
|
|
1404
1206
|
// Interact tools (scrape-bound browser sessions)
|
|
1405
1207
|
server.addTool({
|
|
1406
1208
|
name: 'firecrawl_interact',
|
package/dist/monitor.js
CHANGED
|
@@ -127,6 +127,8 @@ Create a Firecrawl monitor — a recurring scrape or crawl that diffs each resul
|
|
|
127
127
|
|
|
128
128
|
Prefer the simple path: pass \`page\` or \`pages\` plus \`goal\`. The tool will create a scrape monitor with a 30-minute schedule and meaningful-change judging enabled by the API. Use \`body\` only for advanced requests such as crawl targets, JSON change tracking, custom retention, or manual \`judgeEnabled\` control.
|
|
129
129
|
|
|
130
|
+
Meaningful-change judge: set \`goal\` to a plain-language description of what the user actually cares about. \`judgeEnabled\` defaults to true when \`goal\` is set, so providing \`goal\` is enough. Page webhooks expose \`isMeaningful\` and \`judgment\` on \`monitor.page\` events.
|
|
131
|
+
|
|
130
132
|
Simple fields:
|
|
131
133
|
- \`page\`: one page URL to monitor.
|
|
132
134
|
- \`pages\`: multiple page URLs to monitor.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "firecrawl-mcp",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.20.0",
|
|
4
4
|
"description": "MCP server for Firecrawl — search, scrape, and interact with the web. Supports both cloud and self-hosted instances. Features include web search, scraping, page interaction, batch processing, and LLM-powered content analysis.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"mcpName": "io.github.firecrawl/firecrawl-mcp-server",
|