fix(mcp): v1.4.1 — add Node version check and better-sqlite3 error handling

- Check Node version on startup, exit with clear message if >=24
- Catch better-sqlite3 load failure with actionable error message
- Cap engines to node >=18 <24 in package.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
“BeeRad”
2026-02-10 15:58:21 +11:00
co-authored by Claude Opus 4.6
parent 0cb9a24327
commit d6987a3dc1
2 changed files with 26 additions and 3 deletions
+24 -1
View File
@@ -1,6 +1,29 @@
#!/usr/bin/env node #!/usr/bin/env node
'use strict'; 'use strict';
// Check Node version early — better-sqlite3 native bindings don't support bleeding-edge Node
const nodeVersion = parseInt(process.versions.node.split('.')[0], 10);
if (nodeVersion >= 24) {
console.error(`[ra-h-mcp-server] ERROR: Node.js v${process.versions.node} is not supported.`);
console.error('[ra-h-mcp-server] better-sqlite3 requires Node 18-22 LTS. Install Node 22:');
console.error('[ra-h-mcp-server] nvm install 22 && nvm use 22');
console.error('[ra-h-mcp-server] or: brew install node@22');
process.exit(1);
}
let Database;
try {
Database = require('better-sqlite3');
} catch (err) {
console.error('[ra-h-mcp-server] ERROR: Failed to load better-sqlite3 native module.');
console.error(`[ra-h-mcp-server] Node version: ${process.versions.node}`);
console.error('[ra-h-mcp-server] This usually means the native bindings need rebuilding:');
console.error('[ra-h-mcp-server] npm rebuild better-sqlite3');
console.error('[ra-h-mcp-server] Or your Node version is too new. Use Node 18-22 LTS.');
console.error('[ra-h-mcp-server] Original error:', err.message);
process.exit(1);
}
const { z } = require('zod'); const { z } = require('zod');
const { McpServer } = require('@modelcontextprotocol/sdk/server/mcp.js'); const { McpServer } = require('@modelcontextprotocol/sdk/server/mcp.js');
const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js'); const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');
@@ -14,7 +37,7 @@ const guideService = require('./services/guideService');
// Server info // Server info
const serverInfo = { const serverInfo = {
name: 'ra-h-standalone', name: 'ra-h-standalone',
version: '1.4.0' version: '1.4.1'
}; };
const instructions = [ const instructions = [
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "ra-h-mcp-server", "name": "ra-h-mcp-server",
"version": "1.4.0", "version": "1.4.1",
"description": "Connect Claude Code/Desktop to your RA-H knowledge base. Direct SQLite access - no web app required.", "description": "Connect Claude Code/Desktop to your RA-H knowledge base. Direct SQLite access - no web app required.",
"main": "index.js", "main": "index.js",
"bin": { "bin": {
@@ -38,7 +38,7 @@
"zod": "^3.23.0" "zod": "^3.23.0"
}, },
"engines": { "engines": {
"node": ">=18.0.0" "node": ">=18.0.0 <24.0.0"
}, },
"files": [ "files": [
"index.js", "index.js",