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