Skip to content

test(igniteui-mcp): add vitest unit test suite for MCP server#1570

Open
ivanvpetrov wants to merge 4 commits intofeat/igniteui-mcpfrom
ipetrov/igniteui-mcp-tests
Open

test(igniteui-mcp): add vitest unit test suite for MCP server#1570
ivanvpetrov wants to merge 4 commits intofeat/igniteui-mcpfrom
ipetrov/igniteui-mcp-tests

Conversation

@ivanvpetrov
Copy link
Copy Markdown
Contributor

@ivanvpetrov ivanvpetrov commented Mar 26, 2026

  • Fix invalid JSON (trailing commas) in VS Code, Claude Desktop, and Cursor config examples in README
  • Fix typos "IgniteUI CLI" and "globally" in README
  • Rename UnitTest1.cs to DocsControllerTests.cs to match the test class name
  • Update PR description to reflect full scope of changes

Summary of changes in this PR

New: C# docs REST backend (packages/igniteui-mcp/docs-backend)

  • ASP.NET Core Web API (DocsController) backed by SQLite FTS4
  • Endpoints: GET /api/docs, GET /api/docs/{framework}/{name}, GET /api/docs/search
  • NUnit test project (tests-docs-backend/DocsControllerTests.cs) with full coverage

New: ig mcp CLI command

  • CLI entry point to launch the MCP server
  • MCP client config templates for VS Code, Claude Desktop, and Cursor

New: MCP server workspace/build wiring

  • Added build:mcp script to root package.json
  • Workspace package setup in yarn workspaces / lerna

New: Vitest unit test suite (packages/igniteui-mcp/igniteui-doc-mcp/src/__tests__)

  • vitest.config.ts, added test/test:watch/coverage scripts
  • 8 test files, 150+ tests covering config, lib, tools, and providers layers
  • Extracted sanitizeFtsQuery() into src/lib/fts-sanitizer.ts for testability

Updated: Angular API markdown docs and submodule pins

  • Generated Angular API docs under docs/angular/api/
  • Updated git submodule pointers

Fixed: README improvements

  • Valid JSON in all MCP client config examples (no trailing commas)
  • Spelling corrections: "IgniteUI CLI", "globally"

⌨️ Start Copilot coding agent tasks without leaving your editor — available in VS Code, Visual Studio, JetBrains IDEs and Eclipse.

Copilot AI review requested due to automatic review settings March 26, 2026 15:57
@ivanvpetrov ivanvpetrov changed the base branch from master to feat/igniteui-mcp March 26, 2026 16:00
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-backend ASP.NET Core API and NUnit test project backed by SQLite/FTS.
  • Added ig mcp CLI 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.

Comment on lines 24 to 26
Copy link

Copilot AI Mar 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot apply changes based on this feedback

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link

Copilot AI Mar 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot apply changes based on this feedback

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renamed in commit 21be234UnitTest1.csDocsControllerTests.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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants