Skip to main content
Glama
nrwl

Nx MCP Server

Official
by nrwl
project-details-manager.ts1.76 kB
import { getNxVersion, getProjectByPath, } from '@nx-console/vscode-nx-workspace'; import { showNoNxVersionMessage } from '@nx-console/vscode-output-channels'; import { ExtensionContext, ViewColumn } from 'vscode'; import { OldProjectDetailsPreview, ProjectDetailsPreview, } from './project-details-preview'; import { NewProjectDetailsPreview } from './new-project-details-preview'; import { gte } from '@nx-console/nx-version'; export class ProjectDetailsManager { private previews: Map<string, ProjectDetailsPreview> = new Map(); constructor(private context: ExtensionContext) {} async openProjectDetailsToSide(path: string, expandedTarget?: string) { let preview: ProjectDetailsPreview | undefined = await this.findMatchingPreview(path); if (!preview) { const nxVersion = await getNxVersion(); if (!nxVersion) { showNoNxVersionMessage(); return; } if (gte(nxVersion, '19.8.0')) { preview = new NewProjectDetailsPreview(path, this.context); } else { preview = new OldProjectDetailsPreview( path, this.context, expandedTarget, ); } preview.onDispose(() => { this.previews.delete(path); }); this.previews.set(path, preview); } preview.reveal(ViewColumn.Beside); } private async findMatchingPreview( path: string, ): Promise<ProjectDetailsPreview | undefined> { const directMatch = this.previews.get(path); if (directMatch) return directMatch; const projectRoot = (await getProjectByPath(path))?.root; if (!projectRoot) return; for (const [, preview] of this.previews) { if (preview.projectRoot === projectRoot) return preview; } return; } }

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