From d7b020fdda8fd751fa5e6b1df9cbf0490fb30274 Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Sun, 15 Jun 2025 14:04:17 -0700 Subject: [PATCH 1/4] Fix hard-coded CLI version, use package.json consistent with client --- cli/src/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cli/src/index.ts b/cli/src/index.ts index 2b0c4f53d..dea6e296b 100644 --- a/cli/src/index.ts +++ b/cli/src/index.ts @@ -20,6 +20,8 @@ import { import { handleError } from "./error-handler.js"; import { createTransport, TransportOptions } from "./transport.js"; +import packageJson from "../package.json" with { type: "json" }; + type Args = { target: string[]; method?: string; @@ -89,7 +91,7 @@ async function callMethod(args: Args): Promise { const transport = createTransport(transportOptions); const client = new Client({ name: "inspector-cli", - version: "0.5.1", + version: packageJson.version, }); try { From f942df7e4c1f53fead4102cf14b635797d59de84 Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Tue, 5 Aug 2025 10:52:56 -0700 Subject: [PATCH 2/4] Consistent MCP Client() name from package Make both clients use name from package.json for consistency and protocol clarity - web client changes `mcp-inspector` -> `inspector-client` (package.json) - cli client remains `inspector-cli` (package.json) --- cli/src/index.ts | 10 ++++++---- client/src/lib/hooks/useConnection.ts | 27 +++++++++++++++------------ 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/cli/src/index.ts b/cli/src/index.ts index dea6e296b..aa6492d47 100644 --- a/cli/src/index.ts +++ b/cli/src/index.ts @@ -89,10 +89,12 @@ function createTransportOptions( async function callMethod(args: Args): Promise { const transportOptions = createTransportOptions(args.target, args.transport); const transport = createTransport(transportOptions); - const client = new Client({ - name: "inspector-cli", - version: packageJson.version, - }); + + const [, name = packageJson.name] = packageJson.name.split("/"); + const version = packageJson.version; + const clientIdentity = { name, version }; + + const client = new Client(clientIdentity); try { await connect(client, transport); diff --git a/client/src/lib/hooks/useConnection.ts b/client/src/lib/hooks/useConnection.ts index 8c44d51bb..92029d2cf 100644 --- a/client/src/lib/hooks/useConnection.ts +++ b/client/src/lib/hooks/useConnection.ts @@ -347,20 +347,23 @@ export function useConnection({ }; const connect = async (_e?: unknown, retryCount: number = 0) => { - const client = new Client( - { - name: "mcp-inspector", - version: packageJson.version, - }, - { - capabilities: { - sampling: {}, - elicitation: {}, - roots: { - listChanged: true, - }, + const [, name = packageJson.name] = packageJson.name.split("/"); + const version = packageJson.version; + const clientIdentity = { name, version }; + + const clientCapabilities = { + capabilities: { + sampling: {}, + elicitation: {}, + roots: { + listChanged: true, }, }, + }; + + const client = new Client( + clientIdentity, + clientCapabilities, ); try { From 0d202ee47b9ebfd8f591f0da554eed32fa04772a Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Tue, 5 Aug 2025 12:20:36 -0700 Subject: [PATCH 3/4] Update client name during Elicitation test init --- client/src/lib/hooks/__tests__/useConnection.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/lib/hooks/__tests__/useConnection.test.tsx b/client/src/lib/hooks/__tests__/useConnection.test.tsx index 7518f814e..3cf037841 100644 --- a/client/src/lib/hooks/__tests__/useConnection.test.tsx +++ b/client/src/lib/hooks/__tests__/useConnection.test.tsx @@ -247,7 +247,7 @@ describe("useConnection", () => { expect(Client).toHaveBeenCalledWith( expect.objectContaining({ - name: "mcp-inspector", + name: "inspector-client", version: expect.any(String), }), expect.objectContaining({ From ae7d745d5e5c5ea9979b3192272127c98fa76eb6 Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Fri, 22 Aug 2025 10:47:36 -0700 Subject: [PATCH 4/4] Ensure tests will always use the current client name and version --- client/src/lib/constants.ts | 8 ++++++++ client/src/lib/hooks/__tests__/useConnection.test.tsx | 6 +++--- client/src/lib/hooks/useConnection.ts | 9 ++------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/client/src/lib/constants.ts b/client/src/lib/constants.ts index 2e983302e..8e4ff2b56 100644 --- a/client/src/lib/constants.ts +++ b/client/src/lib/constants.ts @@ -1,4 +1,12 @@ import { InspectorConfig } from "./configurationTypes"; +import packageJson from "../../package.json"; + +// Client identity for MCP connections +export const CLIENT_IDENTITY = (() => { + const [, name = packageJson.name] = packageJson.name.split("/"); + const version = packageJson.version; + return { name, version }; +})(); // OAuth-related session storage keys export const SESSION_KEYS = { diff --git a/client/src/lib/hooks/__tests__/useConnection.test.tsx b/client/src/lib/hooks/__tests__/useConnection.test.tsx index 3cf037841..109464163 100644 --- a/client/src/lib/hooks/__tests__/useConnection.test.tsx +++ b/client/src/lib/hooks/__tests__/useConnection.test.tsx @@ -2,7 +2,7 @@ import { renderHook, act } from "@testing-library/react"; import { useConnection } from "../useConnection"; import { z } from "zod"; import { ClientRequest } from "@modelcontextprotocol/sdk/types.js"; -import { DEFAULT_INSPECTOR_CONFIG } from "../../constants"; +import { DEFAULT_INSPECTOR_CONFIG, CLIENT_IDENTITY } from "../../constants"; import { SSEClientTransportOptions, SseError, @@ -247,8 +247,8 @@ describe("useConnection", () => { expect(Client).toHaveBeenCalledWith( expect.objectContaining({ - name: "inspector-client", - version: expect.any(String), + name: CLIENT_IDENTITY.name, + version: CLIENT_IDENTITY.version, }), expect.objectContaining({ capabilities: expect.objectContaining({ diff --git a/client/src/lib/hooks/useConnection.ts b/client/src/lib/hooks/useConnection.ts index 92029d2cf..129cdd3e8 100644 --- a/client/src/lib/hooks/useConnection.ts +++ b/client/src/lib/hooks/useConnection.ts @@ -35,7 +35,7 @@ import { RequestOptions } from "@modelcontextprotocol/sdk/shared/protocol.js"; import { useEffect, useState } from "react"; import { useToast } from "@/lib/hooks/useToast"; import { z } from "zod"; -import { ConnectionStatus } from "../constants"; +import { ConnectionStatus, CLIENT_IDENTITY } from "../constants"; import { Notification } from "../notificationTypes"; import { auth, @@ -47,7 +47,6 @@ import { saveClientInformationToSessionStorage, discoverScopes, } from "../auth"; -import packageJson from "../../../package.json"; import { getMCPProxyAddress, getMCPServerRequestMaxTotalTimeout, @@ -347,10 +346,6 @@ export function useConnection({ }; const connect = async (_e?: unknown, retryCount: number = 0) => { - const [, name = packageJson.name] = packageJson.name.split("/"); - const version = packageJson.version; - const clientIdentity = { name, version }; - const clientCapabilities = { capabilities: { sampling: {}, @@ -362,7 +357,7 @@ export function useConnection({ }; const client = new Client( - clientIdentity, + CLIENT_IDENTITY, clientCapabilities, );