test(igniteui-mcp): add vitest unit test suite for MCP server#1570
test(igniteui-mcp): add vitest unit test suite for MCP server#1570ivanvpetrov wants to merge 4 commits intofeat/igniteui-mcpfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Adds MCP-server-related infrastructure across the monorepo: a new C# docs REST backend with tests, CLI support to launch the MCP server, template/config files for MCP clients, and a large set of generated Angular API markdown artifacts + submodule pin updates.
Changes:
- Added
docs-backendASP.NET Core API and NUnit test project backed by SQLite/FTS. - Added
ig mcpCLI command plus MCP client config templates and new MCP server workspace/build wiring. - Added/generated many Angular API markdown docs and updated git submodule pointers.
Reviewed changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCardThumbnailDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCardMediaDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCardHeaderTitleDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCardHeaderSubtitleDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCardHeaderComponent.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCardFooterDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCardContentDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCardComponent.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCardActionsComponent.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCalendarViewBaseDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCalendarMonthDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCSVTextDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxBottomNavItemComponent.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxBottomNavHeaderLabelDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxBottomNavHeaderIconDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxBottomNavHeaderComponent.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxBottomNavContentComponent.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxBottomNavComponent.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxBooleanFilteringOperand.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxBaseExporter.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxBannerActionsDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxAppendDropStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxAngularAnimationService.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxAngularAnimationPlayer.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxAdvancedFilteringDialogComponent.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxActionStripMenuItemDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxActionStripComponent.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgcFormControlDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgSizeDirective.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/ITreeGridAggregation.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/GroupMemberCountSortingStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/GlobalPositionStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/FormattedValuesSortingStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/FilterUtil.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/ExpressionsTreeUtil.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/DefaultTreeGridMergeStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/DefaultSortingStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/DefaultPivotSortingStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/DefaultPivotGridRecordSortingStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/DefaultMergeStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/DefaultDataCloneStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/ContainerPositionStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/ConnectedPositioningStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/CloseScrollStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/CarouselHammerConfig.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/Calendar.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/CachedDataCloneStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/ByLevelTreeGridMergeStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/BlockScrollStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/BaseFilteringStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/AbsoluteScrollStrategy.md | Adds generated Angular API markdown entry |
| packages/igniteui-mcp/igniteui-doc-mcp/common/igniteui-xplat-docs | Updates git submodule pointer |
| packages/igniteui-mcp/igniteui-doc-mcp/blazor/igniteui-blazor-examples | Updates git submodule pointer |
| packages/igniteui-mcp/igniteui-doc-mcp/angular/igniteui-docfx | Updates git submodule pointer |
| packages/igniteui-mcp/igniteui-doc-mcp/angular/igniteui-angular-samples | Updates git submodule pointer |
| packages/igniteui-mcp/igniteui-doc-mcp/angular/igniteui-angular-examples | Updates git submodule pointer |
| packages/igniteui-mcp/igniteui-doc-mcp/angular/igniteui-angular | Updates git submodule pointer |
| packages/igniteui-mcp/igniteui-doc-mcp/README.md | Adds MCP server documentation |
| packages/igniteui-mcp/igniteui-doc-mcp/.npmignore | Adds npm publish ignore rules for MCP package |
| packages/igniteui-mcp/igniteui-doc-mcp/.gitattributes | Sets LF normalization for baseline docs |
| packages/igniteui-mcp/docs-backend/tests-docs-backend/tests-docs-backend.csproj | Adds NUnit test project |
| packages/igniteui-mcp/docs-backend/tests-docs-backend/UnitTest1.cs | Adds controller tests with in-memory SQLite |
| packages/igniteui-mcp/docs-backend/docs/mcp-migration-plan.md | Adds migration planning doc |
| packages/igniteui-mcp/docs-backend/docs/api-plan.md | Adds backend API planning doc |
| packages/igniteui-mcp/docs-backend/docs-backend/docs-backend.http | Adds HTTP scratch file (still references todos) |
| packages/igniteui-mcp/docs-backend/docs-backend/docs-backend.csproj | Adds SQLite dependency + bundles DB file |
| packages/igniteui-mcp/docs-backend/docs-backend/appsettings.json | Adds DbPath config |
| packages/igniteui-mcp/docs-backend/docs-backend/appsettings.Development.json | Adds dev settings |
| packages/igniteui-mcp/docs-backend/docs-backend/Properties/launchSettings.json | Adds launch profile (still points at todos) |
| packages/igniteui-mcp/docs-backend/docs-backend/Program.cs | Wires controllers + CORS + singleton DB connection |
| packages/igniteui-mcp/docs-backend/docs-backend/Controllers/DocsController.cs | Adds docs list/get/search endpoints |
| packages/igniteui-mcp/docs-backend/docs-backend.sln | Adds solution including backend + tests |
| packages/igniteui-mcp/.gitignore | Adds ignores for build and docs artifacts |
| packages/core/package.json | Bumps core version |
| packages/cli/templates/webcomponents/igc-ts/projects/_base/files/__dot__vscode/mcp.json | Adds MCP client config template |
| packages/cli/templates/webcomponents/igc-ts/projects/_base/files/__dot__github/copilot-instructions.md | Adds GitHub Copilot instruction pointer |
| packages/cli/templates/webcomponents/igc-ts/projects/_base/files/__dot__claude/skills/igniteui-wc-integrate-with-framework/references/vue.md | Adds framework reference doc |
| packages/cli/templates/webcomponents/igc-ts/projects/_base/files/__dot__claude/skills/igniteui-wc-integrate-with-framework/references/vanilla-js.md | Adds framework reference doc |
| packages/cli/templates/webcomponents/igc-ts/projects/_base/files/__dot__claude/skills/igniteui-wc-integrate-with-framework/references/react.md | Adds framework reference doc |
| packages/cli/templates/webcomponents/igc-ts/projects/_base/files/__dot__claude/skills/igniteui-wc-integrate-with-framework/references/angular.md | Adds framework reference doc |
| packages/cli/templates/webcomponents/igc-ts/projects/_base/files/__dot__claude/skills/igniteui-wc-integrate-with-framework/SKILL.md | Adds Claude “skill” metadata |
| packages/cli/templates/webcomponents/igc-ts/projects/_base/files/__dot__claude/CLAUDE.md | Adds Claude instruction pointer |
| packages/cli/templates/webcomponents/igc-ts/projects/_base/files/AGENTS.md | Adds agent guidance for template |
| packages/cli/templates/react/igr-ts/projects/_base/files/__dot__vscode/mcp.json | Adds MCP client config template |
| packages/cli/templates/react/igr-ts/projects/_base/files/__dot__github/copilot-instructions.md | Adds GitHub Copilot instruction pointer |
| packages/cli/templates/react/igr-ts/projects/_base/files/__dot__claude/CLAUDE.md | Adds Claude instruction pointer |
| packages/cli/templates/react/igr-ts/projects/_base/files/AGENTS.md | Adds agent guidance for template |
| packages/cli/package.json | Bumps CLI + adds MCP server dependency |
| packages/cli/lib/commands/types.ts | Registers new mcp command |
| packages/cli/lib/commands/mcp.ts | Implements ig mcp command to spawn MCP server |
| packages/cli/lib/commands/index.ts | Exports the new command |
| packages/cli/lib/cli.ts | Registers command with yargs |
| package.json | Adds MCP build step and workspace entry |
| lerna.json | Adds MCP package to lerna packages list |
| README.md | Documents MCP server usage and dev workflow |
| CLAUDE.md | Adds repo guidance, including MCP notes |
| .npmignore | Ignores MCP server sources in root packing |
| .gitmodules | Adds git submodule definitions for MCP docs sources |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
The PR title/description focuses on adding a Vitest unit test suite for the MCP server, but the diff includes significant additional scope (C# docs backend, CLI command, workspace/build wiring, generated docs). Either update the PR title/description to reflect the actual scope or split these changes into separate PRs to keep review and release risk manageable.
There was a problem hiding this comment.
@copilot apply changes based on this feedback
There was a problem hiding this comment.
Updated the PR description in commit 21be234 to reflect the full scope: C# docs backend + NUnit tests, ig mcp CLI command + client config templates, MCP server workspace/build wiring, Vitest unit test suite, generated Angular API docs, and README fixes.
packages/igniteui-mcp/docs-backend/docs-backend/Properties/launchSettings.json
Show resolved
Hide resolved
packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/IgxCardActionsComponent.md
Show resolved
Hide resolved
packages/igniteui-mcp/igniteui-doc-mcp/docs/angular/api/classes/CarouselHammerConfig.md
Show resolved
Hide resolved
There was a problem hiding this comment.
The test class name is descriptive (DocsControllerTests), but the file name UnitTest1.cs is not. Rename the file to match its contents (e.g., DocsControllerTests.cs) to keep the test project navigable as it grows.
There was a problem hiding this comment.
@copilot apply changes based on this feedback
There was a problem hiding this comment.
Renamed in commit 21be234 — UnitTest1.cs → DocsControllerTests.cs.
Agent-Logs-Url: https://github.com/IgniteUI/igniteui-cli/sessions/f5004d2d-c95b-411a-bda8-cf158a166afc Co-authored-by: ivanvpetrov <110455887+ivanvpetrov@users.noreply.github.com>
Agent-Logs-Url: https://github.com/IgniteUI/igniteui-cli/sessions/6c6d0640-fe8e-49e8-9bc8-7c6bcda4dc82 Co-authored-by: ivanvpetrov <110455887+ivanvpetrov@users.noreply.github.com>
UnitTest1.cstoDocsControllerTests.csto match the test class nameSummary of changes in this PR
New: C# docs REST backend (
packages/igniteui-mcp/docs-backend)DocsController) backed by SQLite FTS4GET /api/docs,GET /api/docs/{framework}/{name},GET /api/docs/searchtests-docs-backend/DocsControllerTests.cs) with full coverageNew:
ig mcpCLI commandNew: MCP server workspace/build wiring
build:mcpscript to rootpackage.jsonNew: Vitest unit test suite (
packages/igniteui-mcp/igniteui-doc-mcp/src/__tests__)vitest.config.ts, addedtest/test:watch/coveragescriptssanitizeFtsQuery()intosrc/lib/fts-sanitizer.tsfor testabilityUpdated: Angular API markdown docs and submodule pins
docs/angular/api/Fixed: README improvements
⌨️ Start Copilot coding agent tasks without leaving your editor — available in VS Code, Visual Studio, JetBrains IDEs and Eclipse.