crawlforge-mcp-server 4.2.5 → 4.2.7
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/package.json +2 -2
- package/server.js +9 -3
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "crawlforge-mcp-server",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.7",
|
|
4
4
|
"description": "CrawlForge MCP Server - Professional Model Context Protocol server with 23 web scraping, crawling, and content processing tools. Defaults to local Ollama for LLM extraction (no API key needed); OpenAI/Anthropic available as opt-in. v4.0 adds Markdown-first output, pre-built site templates, Camoufox stealth engine, and cost transparency.",
|
|
5
5
|
"main": "server.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"crawlforge": "src/cli/index.js",
|
|
8
8
|
"crawlforge-setup": "setup.js",
|
|
9
|
-
"crawlforge-mcp-server": "
|
|
9
|
+
"crawlforge-mcp-server": "src/cli/index.js",
|
|
10
10
|
"crawlforge-mcp": "server.js"
|
|
11
11
|
},
|
|
12
12
|
"scripts": {
|
package/server.js
CHANGED
|
@@ -96,7 +96,7 @@ if (configErrors.length > 0 && config.server.nodeEnv === 'production') {
|
|
|
96
96
|
// Create the server
|
|
97
97
|
const server = new McpServer({
|
|
98
98
|
name: "crawlforge",
|
|
99
|
-
version: "4.2.
|
|
99
|
+
version: "4.2.6",
|
|
100
100
|
description: "Production-ready MCP server with 23 web scraping, crawling, and content processing tools. Features MCP Resources (crawlforge://), Prompts, Sampling fallback, Elicitation, stealth browsing, deep research, structured extraction, change tracking, and local-LLM extraction via Ollama.",
|
|
101
101
|
homepage: "https://www.crawlforge.dev",
|
|
102
102
|
icon: "https://www.crawlforge.dev/icon.png"
|
|
@@ -1163,12 +1163,18 @@ async function gracefulShutdown(signal) {
|
|
|
1163
1163
|
process.on('SIGINT', () => gracefulShutdown('SIGINT'));
|
|
1164
1164
|
process.on('SIGTERM', () => gracefulShutdown('SIGTERM'));
|
|
1165
1165
|
process.on('uncaughtException', (error) => {
|
|
1166
|
+
// Keep the long-running stdio server alive: a single uncaught error in one
|
|
1167
|
+
// request path should not tear down the session for every other tool. We log
|
|
1168
|
+
// and continue rather than exiting. (Node considers the process state
|
|
1169
|
+
// technically undefined after this; acceptable trade-off for a resilient MCP
|
|
1170
|
+
// server, vs. disconnecting the client on any stray throw.)
|
|
1166
1171
|
console.error('Uncaught Exception:', error);
|
|
1167
|
-
gracefulShutdown('uncaughtException');
|
|
1168
1172
|
});
|
|
1169
1173
|
process.on('unhandledRejection', (reason, promise) => {
|
|
1174
|
+
// A stray rejection — typically background async work inside a single tool —
|
|
1175
|
+
// must NOT terminate the whole stdio MCP server, which would disconnect every
|
|
1176
|
+
// other tool mid-session. Log it and keep serving.
|
|
1170
1177
|
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
|
1171
|
-
gracefulShutdown('unhandledRejection');
|
|
1172
1178
|
});
|
|
1173
1179
|
|
|
1174
1180
|
// Memory monitoring (development only)
|