Skip to main content
Glama
nrwl

Nx MCP Server

Official
by nrwl
nx-task-commands.ts3.15 kB
import { commands, ExtensionContext, tasks, window } from 'vscode'; import { getNxWorkspace } from '@nx-console/vscode-nx-workspace'; import { selectAffectedFlags, selectRunManyFlags, } from '@nx-console/vscode-nx-cli-quickpicks'; import { logAndShowError } from '@nx-console/vscode-output-channels'; import { getTelemetry } from '@nx-console/vscode-telemetry'; import { NxTask } from './nx-task'; export function registerNxCommands(context: ExtensionContext) { context.subscriptions.push( commands.registerCommand(`nx.affected`, async () => { getTelemetry().logUsage('cli.affected'); const target = await promptForTarget(); if (!target) { return; } promptForAffectedFlags(target); }), ...['build', 'e2e', 'lint', 'test'].map((target) => commands.registerCommand(`nx.affected.${target}`, () => { getTelemetry().logUsage(`cli.affected`); promptForAffectedFlags(target); }), ), ); context.subscriptions.push( commands.registerCommand('nx.run-many', () => { getTelemetry().logUsage('tasks.run-many'); promptForRunMany(); }), ); context.subscriptions.push( commands.registerCommand('nx.list', () => { getTelemetry().logUsage('cli.list'); promptForList(); }), ); } async function promptForTarget(): Promise<string | undefined> { const nxWorkspace = await getNxWorkspace(); if (!nxWorkspace) { return; } const { validWorkspaceJson, projectGraph } = nxWorkspace; if (!validWorkspaceJson) { return; } const validTargets = Array.from( new Set( Object.entries(projectGraph.nodes) .map(([, project]) => Object.keys(project.data.targets || {})) .flat(), ), ).sort(); if (!validTargets.length) { window.showErrorMessage( 'None of your workspace projects have an architect or targets command', ); return; } return window.showQuickPick(validTargets); } async function promptForAffectedFlags(target: string) { const { positional, command, flags } = await selectAffectedFlags(target); if (flags !== undefined) { const task = await NxTask.create({ command, flags, positional, }); if (!task) { logAndShowError( 'Error while creating task. Please see the logs for more information.', ); return; } tasks.executeTask(task); } } async function promptForRunMany() { const target = await promptForTarget(); if (!target) { return; } const flags = await selectRunManyFlags(target); if (flags !== undefined) { const task = await NxTask.create({ command: 'run-many', flags, }); if (!task) { logAndShowError( 'Error while creating task. Please see the logs for more information.', ); return; } tasks.executeTask(task); } } async function promptForList() { const task = await NxTask.create({ command: 'list', flags: [], }); if (!task) { logAndShowError( 'Error while creating task. Please see the logs for more information.', ); return; } tasks.executeTask(task); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nrwl/nx-console'

If you have feedback or need assistance with the MCP directory API, please join our Discord server