firecrawl-mcp 3.19.1 → 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 +0 -108
- package/dist/index.js +0 -198
- 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
|
|
|
@@ -940,111 +937,6 @@ Pass `body` when you need crawl targets, JSON change tracking, custom retention,
|
|
|
940
937
|
- `firecrawl_monitor_checks`: list checks, optionally filtered by status.
|
|
941
938
|
- `firecrawl_monitor_check`: get page-level results, including `diff`, `snapshot`, `judgment.meaningful`, and `judgment.meaningfulChanges`.
|
|
942
939
|
|
|
943
|
-
### 12. Browser Create (`firecrawl_browser_create`) — Deprecated
|
|
944
|
-
|
|
945
|
-
> **Deprecated:** Prefer `firecrawl_scrape` + `firecrawl_interact` instead. Interact lets you scrape a page and then click, fill forms, and navigate without managing sessions manually.
|
|
946
|
-
|
|
947
|
-
Create a cloud browser session for interactive automation.
|
|
948
|
-
|
|
949
|
-
**Arguments:**
|
|
950
|
-
|
|
951
|
-
- `ttl`: Total session lifetime in seconds (30-3600, optional)
|
|
952
|
-
- `activityTtl`: Idle timeout in seconds (10-3600, optional)
|
|
953
|
-
- `streamWebView`: Whether to enable live view streaming (optional)
|
|
954
|
-
- `profile`: Save and reuse browser state across sessions (optional)
|
|
955
|
-
- `name`: Profile name (sessions with the same name share state)
|
|
956
|
-
- `saveChanges`: Whether to save changes back to the profile (default: true)
|
|
957
|
-
|
|
958
|
-
**Usage Example:**
|
|
959
|
-
|
|
960
|
-
```json
|
|
961
|
-
{
|
|
962
|
-
"name": "firecrawl_browser_create",
|
|
963
|
-
"arguments": {
|
|
964
|
-
"ttl": 600,
|
|
965
|
-
"profile": { "name": "my-profile", "saveChanges": true }
|
|
966
|
-
}
|
|
967
|
-
}
|
|
968
|
-
```
|
|
969
|
-
|
|
970
|
-
**Returns:**
|
|
971
|
-
|
|
972
|
-
- Session ID, CDP URL, and live view URL
|
|
973
|
-
|
|
974
|
-
### 13. Browser Execute (`firecrawl_browser_execute`) — Deprecated
|
|
975
|
-
|
|
976
|
-
> **Deprecated:** Prefer `firecrawl_scrape` + `firecrawl_interact` instead.
|
|
977
|
-
|
|
978
|
-
Execute code in a browser session. Supports agent-browser commands (bash), Python, or JavaScript.
|
|
979
|
-
|
|
980
|
-
**Recommended: Use bash with agent-browser commands** (pre-installed in every sandbox):
|
|
981
|
-
|
|
982
|
-
```json
|
|
983
|
-
{
|
|
984
|
-
"name": "firecrawl_browser_execute",
|
|
985
|
-
"arguments": {
|
|
986
|
-
"sessionId": "session-id-here",
|
|
987
|
-
"code": "agent-browser open https://example.com",
|
|
988
|
-
"language": "bash"
|
|
989
|
-
}
|
|
990
|
-
}
|
|
991
|
-
```
|
|
992
|
-
|
|
993
|
-
**Common agent-browser commands:**
|
|
994
|
-
|
|
995
|
-
| Command | Description |
|
|
996
|
-
| ------------------------------- | -------------------------------------- |
|
|
997
|
-
| `agent-browser open <url>` | Navigate to URL |
|
|
998
|
-
| `agent-browser snapshot` | Accessibility tree with clickable refs |
|
|
999
|
-
| `agent-browser click @e5` | Click element by ref from snapshot |
|
|
1000
|
-
| `agent-browser type @e3 "text"` | Type into element |
|
|
1001
|
-
| `agent-browser get title` | Get page title |
|
|
1002
|
-
| `agent-browser screenshot` | Take screenshot |
|
|
1003
|
-
| `agent-browser --help` | Full command reference |
|
|
1004
|
-
|
|
1005
|
-
**For Playwright scripting, use Python:**
|
|
1006
|
-
|
|
1007
|
-
```json
|
|
1008
|
-
{
|
|
1009
|
-
"name": "firecrawl_browser_execute",
|
|
1010
|
-
"arguments": {
|
|
1011
|
-
"sessionId": "session-id-here",
|
|
1012
|
-
"code": "await page.goto('https://example.com')\ntitle = await page.title()\nprint(title)",
|
|
1013
|
-
"language": "python"
|
|
1014
|
-
}
|
|
1015
|
-
}
|
|
1016
|
-
```
|
|
1017
|
-
|
|
1018
|
-
### 14. Browser List (`firecrawl_browser_list`) — Deprecated
|
|
1019
|
-
|
|
1020
|
-
> **Deprecated:** Prefer `firecrawl_scrape` + `firecrawl_interact` instead.
|
|
1021
|
-
|
|
1022
|
-
List browser sessions, optionally filtered by status.
|
|
1023
|
-
|
|
1024
|
-
```json
|
|
1025
|
-
{
|
|
1026
|
-
"name": "firecrawl_browser_list",
|
|
1027
|
-
"arguments": {
|
|
1028
|
-
"status": "active"
|
|
1029
|
-
}
|
|
1030
|
-
}
|
|
1031
|
-
```
|
|
1032
|
-
|
|
1033
|
-
### 15. Browser Delete (`firecrawl_browser_delete`) — Deprecated
|
|
1034
|
-
|
|
1035
|
-
> **Deprecated:** Prefer `firecrawl_scrape` + `firecrawl_interact` instead.
|
|
1036
|
-
|
|
1037
|
-
Destroy a browser session.
|
|
1038
|
-
|
|
1039
|
-
```json
|
|
1040
|
-
{
|
|
1041
|
-
"name": "firecrawl_browser_delete",
|
|
1042
|
-
"arguments": {
|
|
1043
|
-
"sessionId": "session-id-here"
|
|
1044
|
-
}
|
|
1045
|
-
}
|
|
1046
|
-
```
|
|
1047
|
-
|
|
1048
940
|
## Logging System
|
|
1049
941
|
|
|
1050
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/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",
|