Skip to content

Commit 98e2710

Browse files
authored
Merge branch 'main' into add-mcp-docs-server-to-claude
2 parents da75bfb + 976d77f commit 98e2710

21 files changed

+478
-142
lines changed

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,4 @@ Add any other context about the problem here.
3737

3838
**Version Consideration**
3939

40-
Inspector V2 is under development to address architectural and UX improvements. See [CONTRIBUTING.md](CONTRIBUTING.md) for information about V2 development.
40+
Inspector V2 is under development to address architectural and UX improvements. During this time, V1 contributions should focus on **bug fixes and MCP spec compliance**. See [CONTRIBUTING.md](CONTRIBUTING.md) for more details.

.github/pull_request_template.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<!-- Provide a brief description of what this PR does -->
44

5-
> **Note:** Inspector V2 is under development to address architectural and UX improvements. See [CONTRIBUTING.md](CONTRIBUTING.md) for information about V2 development.
5+
> **Note:** Inspector V2 is under development to address architectural and UX improvements. During this time, V1 contributions should focus on **bug fixes and MCP spec compliance**. See [CONTRIBUTING.md](CONTRIBUTING.md) for more details.
66
77
## Type of Change
88

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# MCP Inspector Development Guide
22

3-
> **Note:** Inspector V2 is under development to address architectural and UX improvements. These guidelines apply to the current version (V1). See [CONTRIBUTING.md](CONTRIBUTING.md) for information about V2 development.
3+
> **Note:** Inspector V2 is under development to address architectural and UX improvements. During this time, V1 contributions should focus on **bug fixes and MCP spec compliance**. See [CONTRIBUTING.md](CONTRIBUTING.md) for more details.
44
55
## Build Commands
66

CONTRIBUTING.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ We're actively developing **Inspector V2** to address architectural and UX impro
1515

1616
**Current version (V1) contribution scope:**
1717

18-
- Critical issues are actively maintained
19-
- Small UX improvements are welcome
18+
- Bug fixes and MCP spec compliance are actively maintained
2019
- Documentation updates are always appreciated
2120
- Major changes will be directed to V2 development
2221

cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@modelcontextprotocol/inspector-cli",
3-
"version": "0.17.4",
3+
"version": "0.17.5",
44
"description": "CLI for the Model Context Protocol inspector",
55
"license": "MIT",
66
"author": "Anthropic, PBC (https://anthropic.com)",

client/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@modelcontextprotocol/inspector-client",
3-
"version": "0.17.4",
3+
"version": "0.17.5",
44
"description": "Client-side application for the Model Context Protocol inspector",
55
"license": "MIT",
66
"author": "Anthropic, PBC (https://anthropic.com)",

client/src/App.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ import {
1818
LoggingLevel,
1919
} from "@modelcontextprotocol/sdk/types.js";
2020
import { OAuthTokensSchema } from "@modelcontextprotocol/sdk/shared/auth.js";
21+
import type {
22+
AnySchema,
23+
SchemaOutput,
24+
} from "@modelcontextprotocol/sdk/server/zod-compat.js";
2125
import { SESSION_KEYS, getServerSpecificKey } from "./lib/constants";
2226
import {
2327
hasValidMetaName,
@@ -296,6 +300,7 @@ const App = () => {
296300
const {
297301
connectionStatus,
298302
serverCapabilities,
303+
serverImplementation,
299304
mcpClient,
300305
requestHistory,
301306
clearRequestHistory,
@@ -687,11 +692,11 @@ const App = () => {
687692
setErrors((prev) => ({ ...prev, [tabKey]: null }));
688693
};
689694

690-
const sendMCPRequest = async <T extends z.ZodType>(
695+
const sendMCPRequest = async <T extends AnySchema>(
691696
request: ClientRequest,
692697
schema: T,
693698
tabKey?: keyof typeof errors,
694-
) => {
699+
): Promise<SchemaOutput<T>> => {
695700
try {
696701
const response = await makeRequest(request, schema);
697702
if (tabKey !== undefined) {
@@ -978,6 +983,7 @@ const App = () => {
978983
loggingSupported={!!serverCapabilities?.logging || false}
979984
connectionType={connectionType}
980985
setConnectionType={setConnectionType}
986+
serverImplementation={serverImplementation}
981987
/>
982988
<div
983989
onMouseDown={handleSidebarDragStart}

client/src/__tests__/App.routing.test.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ const disconnectedConnectionState = {
4949
completionsSupported: false,
5050
connect: jest.fn(),
5151
disconnect: jest.fn(),
52+
serverImplementation: null,
5253
};
5354

5455
// Connected state for tests that need an active connection
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// Define Icon type locally since it might not be exported yet
2+
interface Icon {
3+
src: string;
4+
mimeType?: string;
5+
sizes?: string[];
6+
}
7+
8+
// Helper type for objects that may have icons
9+
export interface WithIcons {
10+
icons?: Icon[];
11+
}
12+
13+
interface IconDisplayProps {
14+
icons?: Icon[];
15+
className?: string;
16+
size?: "sm" | "md" | "lg";
17+
}
18+
19+
const IconDisplay = ({
20+
icons,
21+
className = "",
22+
size = "md",
23+
}: IconDisplayProps) => {
24+
if (!icons || icons.length === 0) {
25+
return null;
26+
}
27+
28+
const sizeClasses = {
29+
sm: "w-4 h-4",
30+
md: "w-6 h-6",
31+
lg: "w-8 h-8",
32+
};
33+
34+
const sizeClass = sizeClasses[size];
35+
36+
return (
37+
<div className={`flex gap-1 ${className}`}>
38+
{icons.map((icon, index) => (
39+
<img
40+
key={index}
41+
src={icon.src}
42+
alt=""
43+
className={`${sizeClass} object-contain flex-shrink-0`}
44+
style={{
45+
imageRendering: "auto",
46+
}}
47+
onError={(e) => {
48+
// Hide broken images
49+
e.currentTarget.style.display = "none";
50+
}}
51+
/>
52+
))}
53+
</div>
54+
);
55+
};
56+
57+
export default IconDisplay;

client/src/components/PromptsTab.tsx

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ import {
99
PromptReference,
1010
ResourceReference,
1111
} from "@modelcontextprotocol/sdk/types.js";
12-
import { AlertCircle } from "lucide-react";
12+
import { AlertCircle, ChevronRight } from "lucide-react";
1313
import { useEffect, useState } from "react";
1414
import ListPane from "./ListPane";
1515
import { useCompletionState } from "@/lib/hooks/useCompletionState";
1616
import JsonView from "./JsonView";
17+
import IconDisplay, { WithIcons } from "./IconDisplay";
1718

1819
export type Prompt = {
1920
name: string;
@@ -23,6 +24,7 @@ export type Prompt = {
2324
description?: string;
2425
required?: boolean;
2526
}[];
27+
icons?: { src: string; mimeType?: string; sizes?: string[] }[];
2628
};
2729

2830
const PromptsTab = ({
@@ -108,11 +110,17 @@ const PromptsTab = ({
108110
setPromptArgs({});
109111
}}
110112
renderItem={(prompt) => (
111-
<div className="flex flex-col items-start">
112-
<span className="flex-1">{prompt.name}</span>
113-
<span className="text-sm text-gray-500 text-left">
114-
{prompt.description}
115-
</span>
113+
<div className="flex items-start w-full gap-2">
114+
<div className="flex-shrink-0 mt-1">
115+
<IconDisplay icons={prompt.icons} size="sm" />
116+
</div>
117+
<div className="flex flex-col flex-1 min-w-0">
118+
<span className="truncate">{prompt.name}</span>
119+
<span className="text-sm text-gray-500 text-left line-clamp-2">
120+
{prompt.description}
121+
</span>
122+
</div>
123+
<ChevronRight className="w-4 h-4 flex-shrink-0 text-gray-400 mt-1" />
116124
</div>
117125
)}
118126
title="Prompts"
@@ -122,9 +130,17 @@ const PromptsTab = ({
122130

123131
<div className="bg-card border border-border rounded-lg shadow">
124132
<div className="p-4 border-b border-gray-200 dark:border-border">
125-
<h3 className="font-semibold">
126-
{selectedPrompt ? selectedPrompt.name : "Select a prompt"}
127-
</h3>
133+
<div className="flex items-center gap-2">
134+
{selectedPrompt && (
135+
<IconDisplay
136+
icons={(selectedPrompt as WithIcons).icons}
137+
size="md"
138+
/>
139+
)}
140+
<h3 className="font-semibold">
141+
{selectedPrompt ? selectedPrompt.name : "Select a prompt"}
142+
</h3>
143+
</div>
128144
</div>
129145
<div className="p-4">
130146
{error ? (

0 commit comments

Comments
 (0)