- {error ? (
-
-
- Error
- {error}
-
- ) : selectedTool ? (
+ {selectedTool ? (
{selectedTool.description}
@@ -226,7 +219,11 @@ const ToolsTab = ({
) : (
{
bearerToken: "",
setBearerToken: jest.fn(),
onConnect: jest.fn(),
+ onDisconnect: jest.fn(),
stdErrNotifications: [],
logLevel: "info" as const,
sendLogLevelRequest: jest.fn(),
diff --git a/client/src/components/__tests__/ToolsTab.test.tsx b/client/src/components/__tests__/ToolsTab.test.tsx
index 2a45065..349977a 100644
--- a/client/src/components/__tests__/ToolsTab.test.tsx
+++ b/client/src/components/__tests__/ToolsTab.test.tsx
@@ -1,5 +1,6 @@
import { render, screen, fireEvent } from "@testing-library/react";
import { describe, it, expect, jest } from "@jest/globals";
+import "@testing-library/jest-dom";
import ToolsTab from "../ToolsTab";
import { Tool } from "@modelcontextprotocol/sdk/types.js";
import { Tabs } from "@/components/ui/tabs";
@@ -16,6 +17,16 @@ describe("ToolsTab", () => {
},
},
},
+ {
+ name: "tool3",
+ description: "Integer tool",
+ inputSchema: {
+ type: "object" as const,
+ properties: {
+ count: { type: "integer" as const },
+ },
+ },
+ },
{
name: "tool2",
description: "Second tool",
@@ -61,7 +72,7 @@ describe("ToolsTab", () => {
// Switch to second tool
rerender(
-
+
,
);
@@ -69,4 +80,23 @@ describe("ToolsTab", () => {
const newInput = screen.getByRole("spinbutton") as HTMLInputElement;
expect(newInput.value).toBe("");
});
+ it("should handle integer type inputs", () => {
+ renderToolsTab({
+ selectedTool: mockTools[1], // Use the tool with integer type
+ });
+
+ const input = screen.getByRole("spinbutton", {
+ name: /count/i,
+ }) as HTMLInputElement;
+ expect(input).toHaveProperty("type", "number");
+ fireEvent.change(input, { target: { value: "42" } });
+ expect(input.value).toBe("42");
+
+ const submitButton = screen.getByRole("button", { name: /run tool/i });
+ fireEvent.click(submitButton);
+
+ expect(defaultProps.callTool).toHaveBeenCalledWith(mockTools[1].name, {
+ count: 42,
+ });
+ });
});
diff --git a/client/src/lib/hooks/useConnection.ts b/client/src/lib/hooks/useConnection.ts
index 404cd98..dec575b 100644
--- a/client/src/lib/hooks/useConnection.ts
+++ b/client/src/lib/hooks/useConnection.ts
@@ -342,6 +342,14 @@ export function useConnection({
}
};
+ const disconnect = async () => {
+ await mcpClient?.close();
+ setMcpClient(null);
+ setConnectionStatus("disconnected");
+ setCompletionsSupported(false);
+ setServerCapabilities(null);
+ };
+
return {
connectionStatus,
serverCapabilities,
@@ -352,5 +360,6 @@ export function useConnection({
handleCompletion,
completionsSupported,
connect,
+ disconnect,
};
}
diff --git a/package-lock.json b/package-lock.json
index 9dbc15c..3919428 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,20 +1,20 @@
{
"name": "@modelcontextprotocol/inspector",
- "version": "0.7.0",
+ "version": "0.8.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@modelcontextprotocol/inspector",
- "version": "0.7.0",
+ "version": "0.8.0",
"license": "MIT",
"workspaces": [
"client",
"server"
],
"dependencies": {
- "@modelcontextprotocol/inspector-client": "^0.7.0",
- "@modelcontextprotocol/inspector-server": "^0.7.0",
+ "@modelcontextprotocol/inspector-client": "^0.8.0",
+ "@modelcontextprotocol/inspector-server": "^0.8.0",
"concurrently": "^9.0.1",
"shell-quote": "^1.8.2",
"spawn-rx": "^5.1.2",
@@ -32,7 +32,7 @@
},
"client": {
"name": "@modelcontextprotocol/inspector-client",
- "version": "0.7.0",
+ "version": "0.8.0",
"license": "MIT",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.6.1",
@@ -11810,7 +11810,7 @@
},
"server": {
"name": "@modelcontextprotocol/inspector-server",
- "version": "0.7.0",
+ "version": "0.8.0",
"license": "MIT",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.6.1",
diff --git a/package.json b/package.json
index 28b93d8..d323dda 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@modelcontextprotocol/inspector",
- "version": "0.7.0",
+ "version": "0.8.0",
"description": "Model Context Protocol inspector",
"license": "MIT",
"author": "Anthropic, PBC (https://anthropic.com)",
@@ -36,8 +36,8 @@
"publish-all": "npm publish --workspaces --access public && npm publish --access public"
},
"dependencies": {
- "@modelcontextprotocol/inspector-client": "^0.7.0",
- "@modelcontextprotocol/inspector-server": "^0.7.0",
+ "@modelcontextprotocol/inspector-client": "^0.8.0",
+ "@modelcontextprotocol/inspector-server": "^0.8.0",
"concurrently": "^9.0.1",
"shell-quote": "^1.8.2",
"spawn-rx": "^5.1.2",
diff --git a/server/package.json b/server/package.json
index 732993f..9072f51 100644
--- a/server/package.json
+++ b/server/package.json
@@ -1,6 +1,6 @@
{
"name": "@modelcontextprotocol/inspector-server",
- "version": "0.7.0",
+ "version": "0.8.0",
"description": "Server-side application for the Model Context Protocol inspector",
"license": "MIT",
"author": "Anthropic, PBC (https://anthropic.com)",