fix(mcp): improve search_docs ranking and get_doc resolution#1746
fix(mcp): improve search_docs ranking and get_doc resolution#1746onlyexeption wants to merge 4 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Improves the Ignite UI MCP documentation search and retrieval experience by making search_docs return more relevant feature-specific docs (especially for multi-word queries) and making get_doc resolve common/implicit doc name patterns more reliably.
Changes:
- Switch
search_docsquery sanitization from OR-joined terms to implicit AND for multi-word queries. - Add field-weighted re-ranking (title/keywords/filename/summary boosts) after fetching a larger candidate set.
- Expand
get_docname resolution via new aliases and a genericgrid-prefix fallback for bare grid feature names.
Reviewed changes
Copilot reviewed 7 out of 8 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/igniteui-mcp/igniteui-doc-mcp/src/tools/doc-tools.ts | Updates FTS query sanitization behavior and adds new doc aliases (virtualization, igxFor, etc.). |
| packages/igniteui-mcp/igniteui-doc-mcp/src/tools/constants.ts | Updates MCP tool descriptions to reflect new resolution and query semantics. |
| packages/igniteui-mcp/igniteui-doc-mcp/src/providers/LocalDocsProvider.ts | Implements field-weighted re-ranking for searchDocs() and increases candidate LIMIT to 200. |
| packages/igniteui-mcp/igniteui-doc-mcp/src/index.ts | Adds get_doc fallback to grid-{name} when the initial lookup misses. |
| packages/igniteui-mcp/igniteui-doc-mcp/src/tests/tools/doc-tools.test.ts | Updates unit tests to match the new implicit-AND sanitization output. |
| packages/igniteui-mcp/igniteui-doc-mcp/docs/knowledgebase.md | Documents the ranking issue and the applied fixes/rules. |
| packages/igniteui-mcp/docs-backend/docs-backend/Controllers/DocsController.cs | Mirrors field-weighted re-ranking behavior in the backend search endpoint. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@onlyexeption You need to update the tests. |
| 'hierarchical-grid-virtualization': 'hierarchical-grid-virtualization', | ||
| 'tree-grid-virtualization': 'tree-grid-virtualization', |
| 'hierarchical-grid-virtualization': 'hierarchicalgrid-virtualization', | ||
| 'tree-grid-virtualization': 'treegrid-virtualization', |
There was a problem hiding this comment.
Do these need to be joined? The dashed seems like a better term
| 'hierarchical-grid-virtualization': 'hierarchical-grid-virtualization', | ||
| 'tree-grid-virtualization': 'tree-grid-virtualization', |
There was a problem hiding this comment.
it's because Angular's docfx doc filenames are joined (hierarchicalgrid-virtualization.md, treegrid-virtualization.md), unlike the other platforms which keep the dash (hierarchical-grid-, tree-grid-). These lines exist so that when the LLM guesses the more natural (dashed) form, we still resolve it to the actual Angular doc.
| 'hierarchical-grid-virtualization': 'hierarchical-grid-virtualization', | ||
| 'tree-grid-virtualization': 'tree-grid-virtualization', |
Description
Related Issue
Closes #1745
Type of Change
Affected Packages
igniteui-cli(packages/cli)@igniteui/cli-core(packages/core)@igniteui/angular-templates(packages/igx-templates)@igniteui/angular-schematics(packages/ng-schematics)@igniteui/mcp-server(packages/igniteui-mcp)Checklist
npm run test)npm run build)npm run lint)Additional Context