Skip to main content
Glama
nrwl

Nx MCP Server

Official
by nrwl
nxls-client-state-machine.ts3.93 kB
import { assign, fromPromise, setup } from 'xstate'; export const nxlsClientStateMachine = setup({ types: { context: {} as { workspacePath: string | undefined; error: string | undefined; nxlsPid: number | undefined; }, }, actions: { assignWorkspacePath: assign(({ context, event }) => ({ ...context, workspacePath: event.value ?? context.workspacePath, })), assignError: assign(({ context, event }) => ({ ...context, error: event.error, })), assignNxlsPid: assign(({ context, event }) => ({ ...context, nxlsPid: event.output, })), sendRefreshNotification: () => { throw Error('Not implemented - should be overridden.'); }, }, actors: { startClient: fromPromise( async ({ input, }: { input: { workspacePath: string | undefined }; }): Promise<number | undefined> => { throw Error('Not implemented - should be overridden.'); }, ), stopClient: fromPromise( async ({ input, }: { input: { isNxlsProcessAlive?: boolean }; }): Promise<void> => { throw Error('Not implemented - should be overridden.'); }, ), }, }).createMachine({ /** @xstate-layout N4IgpgJg5mDOIC5QDsAeAbWBhdBLMyALgHS4TpgDEAygCoCCASrQNoAMAuoqAA4D2sXIVx9k3EKkQA2AKxtiATgAsMgEwK2UgMwyFU1TIA0IAJ6ItbeTJlL1WgBwXbqnQF9XxtJhz4ipclTUAKK0APoA6gDyjADS1AAK9FhBoYm0ABLsXEgg-ILCouKSCEoAjADsxPa6WmU2CqVKWqrGZiWl8lqNzVpasqpSSkPunhjYeAQksIQAhgBOwshQlBCiYKTIAG58ANbrXuO+U7MLuEsIZ9sAxjMFyFlZ4nlCImI5xR32UsRKbB2lgzYMik9i+rXMqkqkIUwNqDVKFjYWhGIAOPkmxGm80WyzAczmfDmxB46FuADNCQBbYhoiZ+LGnc6XPg3O4PThPAQvQrvaRfYi9GoyLTlJHlcrghCqNj2AWaBr2GGlBT2JQo2lHTEnHE0EIRaJxRLJVL0DKPHLPO5FRDVLQC0oyDoKDSO+ylUqSsqdbouPpqQZqjyosbovxzACuyGQZ2WdEi8XNvC5Vt5CHdwMU5QcUksWeVSklboFqnUJfsqk+MnK9nVIbpJAjUZjurCUViCSSKTSmQ5FuTr2tacFxAqoo62lVZS0nq0CmI2jY0vU5Skgxcte89a1fB4PGbq2Q62Zexpdc10x3e6ZWxZt1e7OySfyA9TBlKxFUjlVA0G1WUUklOxM1XNghi6FUZWRIMNQxC9d2bPECSJElySpU9N3PQhLxjC4b1Ze9OETXJ+x5UBijfD8v1sVclD-JQANMRBpXfcp1FKL49FYiwpA3Q5YKw+ClhbfV2yNLtTR7R9iOfUiJCY1RiF0RVhVBKQs3scoEU9Dp7SaWjpVY8oFHKGR3GgvgIDgcQYKITkZLeMjEAAWgMH4-lAqR3WaTzPwlRiECcmRFGdZ0mhdcoVGdXjQxIMgKDs7kHLkkoFAUqtlHHRpUtYyUuiCnR6gRDShlVaKtwZHEEpTRyEA099VRFGxSgMYy2AUXLF0U5pmv6awpAUMrNUbaMliql8aoRAEBTdWcymqbQ-LaZpZSaUUGhsDjFR46Cz347DRr7ezB1sQD+oFEzNJm-qXFMsygA */ id: 'nxlsClient', initial: 'idle', context: { workspacePath: undefined, error: undefined, nxlsPid: undefined, }, states: { idle: { on: { START: { target: 'starting', actions: ['assignWorkspacePath'], }, SET_WORKSPACE_PATH: { actions: ['assignWorkspacePath'], }, }, }, starting: { invoke: { src: 'startClient', input: ({ context }) => ({ workspacePath: context.workspacePath }), onDone: { target: 'running', actions: ['assignNxlsPid'], }, onError: { target: 'idle', actions: ['assignError'], }, }, on: { STOP: { target: 'stopping', }, SET_WORKSPACE_PATH: { actions: ['assignWorkspacePath'], }, }, }, running: { on: { STOP: { target: 'stopping', }, SET_WORKSPACE_PATH: { actions: ['assignWorkspacePath', 'sendRefreshNotification'], }, }, }, stopping: { invoke: { src: 'stopClient', input: ({ event }) => ({ isNxlsProcessAlive: event.isNxlsProcessAlive, }), onDone: { target: 'idle', actions: ['assignError'], }, onError: { target: 'idle', actions: ['assignError'], }, }, on: { SET_WORKSPACE_PATH: { actions: ['assignWorkspacePath'], }, }, }, }, });

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