firecrawl-mcp 3.28.2 → 3.29.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 +92 -3
- package/dist/index.js +3381 -3106
- package/dist/introspection-cache.js +1 -1
- package/dist/server.d.ts +404 -0
- package/dist/server.js +5879 -0
- package/dist/www-authenticate.js +1 -1
- package/package.json +9 -1
package/README.md
CHANGED
|
@@ -83,9 +83,6 @@ https://mcp.firecrawl.dev/v2/mcp-search
|
|
|
83
83
|
|
|
84
84
|
It exposes a fixed set of nine tools: `firecrawl_search`, `firecrawl_developer_search`, `firecrawl_gov_search`, the four `firecrawl_research_*` tools, and the two Alexandria tools `firecrawl_find_tools` and `firecrawl_scrape`. Its `firecrawl_search` fetches no page content, and the surface has its own OAuth identity; the full endpoint above is unchanged. It backs a published connector listing, so its tool set is a contract rather than a profile to tune. See [docs/search-profile.md](docs/search-profile.md) for the full contract and what a change to it involves.
|
|
85
85
|
|
|
86
|
-
For packaged MCP workflows in ChatGPT, Codex, or Claude Code, see
|
|
87
|
-
[MCP plugin packages](plugins/README.md).
|
|
88
|
-
|
|
89
86
|
### Running with npx
|
|
90
87
|
|
|
91
88
|
```bash
|
|
@@ -169,6 +166,41 @@ env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecra
|
|
|
169
166
|
|
|
170
167
|
Use the url: http://localhost:3000/mcp
|
|
171
168
|
|
|
169
|
+
### Running with Docker
|
|
170
|
+
|
|
171
|
+
The `ghcr.io/firecrawl/firecrawl-mcp-server` image runs the same server as `npx -y firecrawl-mcp`. Every build from `main` is tagged `latest`, `v<package version>` and `sha-<commit sha>`. `v<package version>` moves to the newest build of that version, so pin `sha-<commit sha>` (or a digest) when you need a fixed image.
|
|
172
|
+
|
|
173
|
+
stdio (the default), for MCP clients that launch the server as a command:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
docker run -i --rm -e FIRECRAWL_API_KEY=fc-YOUR_API_KEY ghcr.io/firecrawl/firecrawl-mcp-server:latest
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
```json
|
|
180
|
+
{
|
|
181
|
+
"mcpServers": {
|
|
182
|
+
"firecrawl-mcp": {
|
|
183
|
+
"command": "docker",
|
|
184
|
+
"args": ["run", "-i", "--rm", "-e", "FIRECRAWL_API_KEY", "ghcr.io/firecrawl/firecrawl-mcp-server:latest"],
|
|
185
|
+
"env": {
|
|
186
|
+
"FIRECRAWL_API_KEY": "YOUR_API_KEY"
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Streamable HTTP, served at `http://localhost:3000/mcp`:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
docker run --rm -p 127.0.0.1:3000:3000 \
|
|
197
|
+
-e HTTP_STREAMABLE_SERVER=true \
|
|
198
|
+
-e FIRECRAWL_API_KEY=fc-YOUR_API_KEY \
|
|
199
|
+
ghcr.io/firecrawl/firecrawl-mcp-server:latest
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
The image sets `HOST=0.0.0.0` and `PORT=3000`; override `PORT` (and the `-p` mapping) to listen elsewhere. The server uses the container's `FIRECRAWL_API_KEY` for requests that don't send their own credential, so the example publishes the port on `127.0.0.1` only; don't expose it more widely unless clients must supply their own key. Set `FIRECRAWL_API_URL` to use a self-hosted Firecrawl API. The container runs as the unprivileged `node` user.
|
|
203
|
+
|
|
172
204
|
### Installing via Smithery (Legacy)
|
|
173
205
|
|
|
174
206
|
To install Firecrawl for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@mendableai/mcp-server-firecrawl):
|
|
@@ -1159,6 +1191,63 @@ The tool requires an authenticated Firecrawl account and is read-only.
|
|
|
1159
1191
|
- `firecrawl_credit_usage` defaults to `{ "view": "current" }` and returns `remainingCredits`, `planCredits`, `billingPeriodStart`, and `billingPeriodEnd`. Remaining credits can exceed plan credits when the team has top-ups or grants.
|
|
1160
1192
|
- Pass `{ "view": "historical" }` for calendar-month periods containing `startDate`, `endDate`, and `creditsUsed`. Passing `{ "byApiKey": true }` also selects the historical view and splits periods by API key; each row then includes `apiKey`. Do not combine `byApiKey` with `{ "view": "current" }`. The latest period's `endDate` can be null.
|
|
1161
1193
|
|
|
1194
|
+
## Programmatic use (unstable)
|
|
1195
|
+
|
|
1196
|
+
The package also exposes a library entry point for embedding the server in another runtime. It is **unstable**: the API, its options and its types may change in any release, including minor and patch releases, so pin an exact version.
|
|
1197
|
+
|
|
1198
|
+
```sh
|
|
1199
|
+
npm install --save-exact firecrawl-mcp zod
|
|
1200
|
+
```
|
|
1201
|
+
|
|
1202
|
+
The example defines tool parameters with `zod`, so the embedding project installs it as its own dependency.
|
|
1203
|
+
|
|
1204
|
+
```js
|
|
1205
|
+
import { createFirecrawlMcpServer } from 'firecrawl-mcp/server';
|
|
1206
|
+
import { z } from 'zod';
|
|
1207
|
+
|
|
1208
|
+
const server = createFirecrawlMcpServer({
|
|
1209
|
+
transport: 'httpStream',
|
|
1210
|
+
apiKey: process.env.FIRECRAWL_API_KEY,
|
|
1211
|
+
unstable_hooks: {
|
|
1212
|
+
registerExtraTools: (registrar) => {
|
|
1213
|
+
registrar.addTool({
|
|
1214
|
+
name: 'my_tool',
|
|
1215
|
+
description: 'An extra tool served next to the Firecrawl tools.',
|
|
1216
|
+
parameters: z.object({ text: z.string() }),
|
|
1217
|
+
execute: async ({ text }) => text,
|
|
1218
|
+
});
|
|
1219
|
+
},
|
|
1220
|
+
},
|
|
1221
|
+
});
|
|
1222
|
+
|
|
1223
|
+
await server.start({
|
|
1224
|
+
transportType: 'httpStream',
|
|
1225
|
+
httpStream: { port: 3000, host: '127.0.0.1', endpoint: '/mcp', stateless: true },
|
|
1226
|
+
});
|
|
1227
|
+
// MCP endpoint: http://127.0.0.1:3000/mcp
|
|
1228
|
+
```
|
|
1229
|
+
|
|
1230
|
+
Set `host` explicitly. Without it the server listens on `localhost`, which Node binds to a single address (often only `::1`), so requests to `127.0.0.1` are refused. Use `0.0.0.0` or `::` to accept connections from other machines only behind network access controls or an `unstable_hooks.authenticate` check: without one, every caller that can reach the port is served with the configured `apiKey`.
|
|
1231
|
+
|
|
1232
|
+
Options mirror the CLI's environment variables: `apiUrl`, `apiKey`, `transport`, `logging`, `safeMode`, `fileAccess` (`local` or `upload`), `requireCredential`, `searchFeedback` and `endpointFeedback`. `unstable_hooks` accepts:
|
|
1233
|
+
|
|
1234
|
+
| Hook | Purpose |
|
|
1235
|
+
|---|---|
|
|
1236
|
+
| `authenticate(request)` | Resolve the session for a request; throw a `Response` to reject it. |
|
|
1237
|
+
| `wrapTool(tool)` | Decorate every registered tool. |
|
|
1238
|
+
| `onToolResult(event)` | Observe the start and outcome of each tool call, with any API agent hints. |
|
|
1239
|
+
| `instructions` | Server instructions, or a function choosing from the defaults. |
|
|
1240
|
+
| `registerExtraTools(registrar, context)` | Add tools after the built-in ones. |
|
|
1241
|
+
| `outboundRequest(session)` | Credential and extra headers for each Firecrawl API request. |
|
|
1242
|
+
| `beforeKeylessRequest(session, origin)` | Refuse a keyless request by throwing. |
|
|
1243
|
+
| `toolFilter(name)` | Leave built-in tools out of the instance. |
|
|
1244
|
+
| `configureHttp(app)` | Add HTTP routes. |
|
|
1245
|
+
| `oauth.protectedResource` | Serve OAuth protected-resource metadata. |
|
|
1246
|
+
|
|
1247
|
+
FastMCP is bundled inside the package, so use the types exported from `firecrawl-mcp/server` (`Session`, `ToolDefinition`, `ToolRegistrar`, `FirecrawlMcpServerHooks` and others) rather than importing `fastmcp` yourself.
|
|
1248
|
+
|
|
1249
|
+
The entry point also exports the helpers the built-in tools use, such as `recoveryPayload`, `normalizeHeader`, `requestOrigin`, `searchToolBaseFields`, `searchOutputSchema` and `structuredCompact`, so extra tools and hooks can match the built-in behaviour. They are unstable as well.
|
|
1250
|
+
|
|
1162
1251
|
## Logging System
|
|
1163
1252
|
|
|
1164
1253
|
The server includes comprehensive logging:
|