modelcontextprotocol / modelcontextprotocol/inspector

Skills catalog byte/count budget is enforced per-server, not per-session across multiple connected servers

Open
#2,419 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement v2
Dominant language
TypeScript
Stars
10.9k
Forks
1.5k
Avg merge
6h 17m
Merged PRs (30d)
151

Description

Which version line?

v2 — current (@modelcontextprotocol/inspector@latest)

Which client?

All / shared core

Inspector version

2.7.0 (git tag) — static code-review finding, not run locally

Node version

N/A — static code review, no live run performed

Operating system (and browser, for the web client)

N/A — static code review

Transport

Not applicable / never connected

MCP server under inspection

N/A — this is a static code-review finding against the 2.7.0 tag source (core/mcp/skills.ts, core/mcp/skillsVerification.ts), not a live reproduction against a running MCP server.

Steps to reproduce

Found via static review of the 2.7.0 tag source, not a live run.

  1. resolveSkillCatalogBudget() (core/mcp/skills.ts, lines 109-121) computes a skills-catalog cap (maxSkills, maxBytes) purely from one server's own settings.
  2. skillsVerification.ts (line 331) calls it as resolveSkillCatalogBudget(client.getServerSettings?.()) — i.e. once per connected server/client, using only that server's configured limits.
  3. There is no aggregate budget anywhere that sums or caps the combined catalog size across multiple servers connected in the same session.

I have not connected multiple servers and measured the combined catalog live; flagging the absence of a session-level cap given the per-server design.

Expected behavior

With several servers connected in the same session (the Inspector's roadmap §4.10 names multi-server workspace support as a goal), the combined skills catalog across all of them stays bounded by some aggregate/session-level cap, not just by each server's individual limit.

Actual behavior

Each server's catalog is capped individually and independently. A user connected to several servers, each individually within its own configured skillCatalogMaxBytes/skillCatalogMaxSkills, can still accumulate a combined catalog far larger than any single server's cap intends, since nothing bounds the sum across servers.

Suggested fix: add a session-level (aggregate) cap alongside the existing per-server one — either a shared budget divided across connected servers, or a global ceiling checked after each server's catalog is resolved.

Logs, errors, or screenshots

No response

Already prototyped a fix?

No response

Before you submit
  • I searched existing issues and this is not a duplicate.
  • This is not a security vulnerability report (those go through the private advisory process).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading core/mcp/skills.ts around resolveSkillCatalogBudget() and core/mcp/skillsVerification.ts around line 331, then trace how connected servers contribute catalogs to a session. Define and implement the session-level bound alongside the existing per-server limits; done means combined catalogs cannot exceed the aggregate cap across multiple connected servers.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.