Skip to content

MCP: the npx -y igniteui-cli mcp entry written by ai-config is the slowest way to start the server #1864

Description

@radomirchev

Framework

All / Not framework-specific

Related CLI Command

ai-config

Feature Area

Performance

Problem Statement

ig ai-config writes the docs server as npx -y igniteui-cli mcp (IGNITEUI_MCP_SERVERS in packages/core/util/mcp-config.ts), and the CLI README documents the same. This is the slowest way to start the server:

  1. npx installs the whole CLI to run the server: 187 packages, about 140 MB in the npx cache (TypeScript, the Angular templates, inquirer, yargs, ...). npx -y @igniteui/mcp-server needs 98 packages and about 82 MB.
  2. ig mcp (packages/cli/lib/commands/mcp.ts) loads the CLI and then spawns node dist/index.js as a child process. The CLI process stays alive as the parent for the whole session.

Time from spawn to the initialize response, measured with a small stdio client on Windows 11, Node 24.18.0 and npm 11. "Cold" means an empty npm cache and no global install:

Command Cold Warm
npx -y igniteui-cli mcp 19.4 s, 17.6 s 2.5 to 3.4 s
npx -y igniteui-cli mcp, two instances started together 24.1 s and 41.4 s 4.1 s and 4.3 s
npx -y @igniteui/mcp-server 8.9 s, 7.6 s 1.7 to 2.7 s
node .../igniteui-cli/bin/execute.js mcp n/a 1.7 to 2.1 s
node .../@igniteui/mcp-server/dist/index.js n/a 0.7 to 1.0 s

The MCP client I use gives a stdio server 30 s to answer initialize. Its logs on this machine for the Ignite UI docs and theming servers show 334 successful connections: 185 took under 10 s, 102 took 10 to 20 s, and 47 took longer than 20 s. In 33 other connection attempts the server did not answer within the 30 s timeout. Most of these were at times when two or three sessions started together. The 41.4 s case in the table is the same server registered twice in one client, so that two instances start together.

Other effects of the unpinned npx -y igniteui-cli entry:

  • After each new igniteui-cli release, the next start reinstalls the package and is slow again.
  • If igniteui-cli is installed globally, npx runs the global copy. Here that was 15.7.0, while 15.8.2 is current. The server reports serverInfo.version 1.0.0, so the client cannot see which version runs.

Memory per running instance on Windows: the npx process (node npx-cli.js) uses about 52 MB, the ig mcp parent about 53 MB, and the server itself about 72 MB.

The server exits cleanly when stdin closes. All processes of the chain are gone within about 1 s, so shutdown is not a problem.

Proposed Solution

  • Have ai-config write npx -y @igniteui/mcp-server, which the @igniteui/mcp-server README already documents. This halves the cold start and removes one Node process.
  • Alternatively, have ig mcp import and start the server in the same process instead of spawning a second node.
  • Document the cold-start cost. Suggest a pinned version (@igniteui/mcp-server@<version>) or a global install for clients that have a connection timeout.

Alternatives Considered

Raising the client's connection timeout. This avoids the failures, but every session still waits for the start.

Additional Context

igniteui-cli and @igniteui/mcp-server 15.8.2 (and the 15.7.0 global install), Windows 11, Node 24.18.0, npm 11.

Activity

  1. self-assigned this
    on Nov 2, 2026
  2. ivanvpetrov commented on Nov 5, 2026

    @ivanvpetrov
    Contributor

    It will be fully closed with #1870

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions