Skip to content

Commit d5a877a

Browse files
authored
Merge branch 'main' into fix/optional-arrays-issue-771
2 parents 4e385ee + 2352993 commit d5a877a

File tree

16 files changed

+343
-178
lines changed

16 files changed

+343
-178
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
name: Bug report
3+
about: Create a report to help us improve
4+
title: ""
5+
labels: ""
6+
assignees: ""
7+
---
8+
9+
**Inspector Version**
10+
11+
- [e.g. 0.16.5)
12+
13+
**Describe the bug**
14+
A clear and concise description of what the bug is.
15+
16+
**To Reproduce**
17+
Steps to reproduce the behavior:
18+
19+
1. Go to '...'
20+
2. Click on '....'
21+
3. Scroll down to '....'
22+
4. See error
23+
24+
**Expected behavior**
25+
A clear and concise description of what you expected to happen.
26+
27+
**Screenshots**
28+
If applicable, add screenshots to help explain your problem.
29+
30+
**Environment (please complete the following information):**
31+
32+
- OS: [e.g. iOS]
33+
- Browser [e.g. chrome, safari]
34+
35+
**Additional context**
36+
Add any other context about the problem here.

README.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,16 @@ The MCP Inspector provides convenient buttons to export server launch configurat
9898
}
9999
```
100100

101+
**Streamable HTTP transport example:**
102+
103+
```json
104+
{
105+
"type": "streamable-http",
106+
"url": "http://localhost:3000/mcp",
107+
"note": "For Streamable HTTP connections, add this URL directly in your MCP Client"
108+
}
109+
```
110+
101111
- **Servers File** - Copies a complete MCP configuration file structure to your clipboard, with your current server configuration added as `default-server`. This can be saved directly as `mcp.json`.
102112

103113
**STDIO transport example:**
@@ -131,9 +141,23 @@ The MCP Inspector provides convenient buttons to export server launch configurat
131141
}
132142
```
133143

144+
**Streamable HTTP transport example:**
145+
146+
```json
147+
{
148+
"mcpServers": {
149+
"default-server": {
150+
"type": "streamable-http",
151+
"url": "http://localhost:3000/mcp",
152+
"note": "For Streamable HTTP connections, add this URL directly in your MCP Client"
153+
}
154+
}
155+
}
156+
```
157+
134158
These buttons appear in the Inspector UI after you've configured your server settings, making it easy to save and reuse your configurations.
135159

136-
For SSE transport connections, the Inspector provides similar functionality for both buttons. The "Server Entry" button copies the SSE URL configuration that can be added to your existing configuration file, while the "Servers File" button creates a complete configuration file containing the SSE URL for direct use in clients.
160+
For SSE and Streamable HTTP transport connections, the Inspector provides similar functionality for both buttons. The "Server Entry" button copies the configuration that can be added to your existing configuration file, while the "Servers File" button creates a complete configuration file containing the URL for direct use in clients.
137161

138162
You can paste the Server Entry into your existing `mcp.json` file under your chosen server name, or use the complete Servers File payload to create a new configuration file.
139163

cli/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@modelcontextprotocol/inspector-cli",
3-
"version": "0.16.6",
3+
"version": "0.16.7",
44
"description": "CLI for the Model Context Protocol inspector",
55
"license": "MIT",
66
"author": "Anthropic, PBC (https://anthropic.com)",
@@ -24,7 +24,7 @@
2424
},
2525
"devDependencies": {},
2626
"dependencies": {
27-
"@modelcontextprotocol/sdk": "^1.17.5",
27+
"@modelcontextprotocol/sdk": "^1.18.0",
2828
"commander": "^13.1.0",
2929
"spawn-rx": "^5.1.2"
3030
}

client/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@modelcontextprotocol/inspector-client",
3-
"version": "0.16.6",
3+
"version": "0.16.7",
44
"description": "Client-side application for the Model Context Protocol inspector",
55
"license": "MIT",
66
"author": "Anthropic, PBC (https://anthropic.com)",
@@ -25,7 +25,7 @@
2525
"cleanup:e2e": "node e2e/global-teardown.js"
2626
},
2727
"dependencies": {
28-
"@modelcontextprotocol/sdk": "^1.17.5",
28+
"@modelcontextprotocol/sdk": "^1.18.0",
2929
"@radix-ui/react-checkbox": "^1.1.4",
3030
"@radix-ui/react-dialog": "^1.1.3",
3131
"@radix-ui/react-icons": "^1.3.0",

client/src/components/AuthDebugger.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ const AuthDebugger = ({
187187
JSON.stringify(currentState),
188188
);
189189
// Open the authorization URL automatically
190-
window.location.href = currentState.authorizationUrl;
190+
window.location.href = currentState.authorizationUrl.toString();
191191
break;
192192
}
193193
}

client/src/components/OAuthFlowProgress.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ export const OAuthFlowProgress = ({
240240
<p className="font-medium mb-2 text-sm">Authorization URL:</p>
241241
<div className="flex items-center gap-2">
242242
<p className="text-xs break-all">
243-
{authState.authorizationUrl}
243+
{String(authState.authorizationUrl)}
244244
</p>
245245
<button
246246
onClick={() => {

client/src/components/Sidebar.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,9 @@ const Sidebar = ({
175175
description:
176176
transportType === "stdio"
177177
? "Server configuration has been copied to clipboard. Add this to your mcp.json inside the 'mcpServers' object with your preferred server name."
178-
: "SSE URL has been copied. Use this URL directly in your MCP Client.",
178+
: transportType === "streamable-http"
179+
? "Streamable HTTP URL has been copied. Use this URL directly in your MCP Client."
180+
: "SSE URL has been copied. Use this URL directly in your MCP Client.",
179181
});
180182

181183
setTimeout(() => {

client/src/components/__tests__/AuthDebugger.test.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,9 @@ describe("AuthDebugger", () => {
482482
await waitFor(() => {
483483
expect(updateAuthState).toHaveBeenCalledWith(
484484
expect.objectContaining({
485-
authorizationUrl: expect.stringContaining("scope="),
485+
authorizationUrl: expect.objectContaining({
486+
href: "https://oauth.example.com/authorize?scope=read+write",
487+
}),
486488
}),
487489
);
488490
});
@@ -496,7 +498,9 @@ describe("AuthDebugger", () => {
496498
await waitFor(() => {
497499
expect(updateAuthState).toHaveBeenCalledWith(
498500
expect.objectContaining({
499-
authorizationUrl: expect.stringContaining("scope="),
501+
authorizationUrl: expect.objectContaining({
502+
href: "https://oauth.example.com/authorize?scope=read+write",
503+
}),
500504
}),
501505
);
502506
});

client/src/components/__tests__/Sidebar.test.tsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,11 @@ describe("Sidebar", () => {
446446
4,
447447
);
448448
expect(mockClipboardWrite).toHaveBeenCalledWith(expectedConfig);
449+
expect(mockToast).toHaveBeenCalledWith({
450+
title: "Config entry copied",
451+
description:
452+
"Server configuration has been copied to clipboard. Add this to your mcp.json inside the 'mcpServers' object with your preferred server name.",
453+
});
449454
});
450455

451456
it("should copy servers file configuration to clipboard for STDIO transport", async () => {
@@ -504,6 +509,11 @@ describe("Sidebar", () => {
504509
4,
505510
);
506511
expect(mockClipboardWrite).toHaveBeenCalledWith(expectedConfig);
512+
expect(mockToast).toHaveBeenCalledWith({
513+
title: "Config entry copied",
514+
description:
515+
"SSE URL has been copied. Use this URL directly in your MCP Client.",
516+
});
507517
});
508518

509519
it("should copy servers file configuration to clipboard for SSE transport", async () => {
@@ -554,6 +564,11 @@ describe("Sidebar", () => {
554564
4,
555565
);
556566
expect(mockClipboardWrite).toHaveBeenCalledWith(expectedConfig);
567+
expect(mockToast).toHaveBeenCalledWith({
568+
title: "Config entry copied",
569+
description:
570+
"Streamable HTTP URL has been copied. Use this URL directly in your MCP Client.",
571+
});
557572
});
558573

559574
it("should copy servers file configuration to clipboard for streamable-http transport", async () => {

client/src/lib/auth-types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export interface AuthDebuggerState {
3434
authServerUrl: URL | null;
3535
oauthMetadata: OAuthMetadata | null;
3636
oauthClientInfo: OAuthClientInformationFull | OAuthClientInformation | null;
37-
authorizationUrl: string | null;
37+
authorizationUrl: URL | null;
3838
authorizationCode: string;
3939
latestError: Error | null;
4040
statusMessage: StatusMessage | null;

0 commit comments

Comments
 (0)