Lines 1918-1973javascript
1918 const tools = await fetchTools();
1919 activeTools.clear();
1920 for (const t of tools) {
1921 if (t.group === 'core' && !BUILT_IN_NAMES.has(t.name)) activeTools.set(t.name, t);
1924 await server.sendToolListChanged();
1925 log(`Switched to workspace "${slug}", ${activeTools.size} core tools loaded`);
1928 content: [{ type: 'text', text: `Switched to workspace "${slug}". Loaded ${tools.length} tools (${activeTools.size} core active). Use search_tools to activate more.` }],
1931 return { content: [{ type: 'text', text: `Error switching workspace: ${err.message}` }], isError: true };
1935// ─── Bootstrap ───────────────────────────────────────────────────────────────
1937// ─── Auto-update from git ────────────────────────────────────────────────────
1939import { execSync } from 'child_process';
1940import { dirname } from 'path';
1941import { fileURLToPath } from 'url';
1943const __dirname = dirname(fileURLToPath(import.meta.url));
1944const AUTO_UPDATE_INTERVAL = 60 * 60 * 1000; // check every hour
1946function tryAutoUpdate() {
1948 execSync('git rev-parse --git-dir', { cwd: __dirname, stdio: 'ignore' });
1949 const before = execSync('git rev-parse HEAD', { cwd: __dirname, encoding: 'utf8' }).trim();
1950 execSync('git pull --ff-only', { cwd: __dirname, stdio: 'ignore', timeout: 15000 });
1951 const after = execSync('git rev-parse HEAD', { cwd: __dirname, encoding: 'utf8' }).trim();
1952 if (before !== after) {
1953 log(`Updated ${before.slice(0, 7)} → ${after.slice(0, 7)}, restarting...`);
1954 try { execSync('npm install --omit=dev', { cwd: __dirname, stdio: 'ignore', timeout: 30000 }); } catch {}
1955 // Allow pending responses to drain before exit
HighRuntime Package Install
Package source invokes a package manager install command at runtime.
index.jsView on unpkg · L1953 1956 log('Shutting down gracefully...');
1957 setTimeout(() => process.exit(0), 2000);
1959 } catch { /* not a git repo or offline — skip */ }
1962async function main() {
1964 setInterval(tryAutoUpdate, AUTO_UPDATE_INTERVAL);
1966 // Не ждём: запуск сервера не должен зависеть от доступности реестра npm.
1968 setInterval(checkForUpdate, UPDATE_CHECK_INTERVAL_MS).unref();
1970 log(`integram-mcp ${PKG.version}`);
1971 log(`Connecting to ${BASE_URL}, workspace "${workspace || '(not set)'}"`);