Commit graph

962 commits

Author SHA1 Message Date
Cliff Hall
d0ba4185ee
Merge branch 'main' into allow-multiple-client-connections 2025-05-29 11:54:02 -04:00
Cliff Hall
520416b4a9
Merge pull request #360 from olaservo/fix-port-numbers
Adding tests for when a sse url with specfic protocols or ports are passed to `useConnection`
2025-05-29 11:51:39 -04:00
Cliff Hall
7fb2211bf2
Merge branch 'main' into fix-port-numbers 2025-05-29 11:41:10 -04:00
ihrpr
e364273ae2
Merge pull request #456 from modelcontextprotocol/feature/structured-output-support
Add structured output support
2025-05-29 09:14:24 +01:00
Basil Hosmer
d8a2821344
refactor: Address PR comments
- Extract tool results rendering into separate ToolResults component
- Hoist checkContentCompatibility function to module level following codebase conventions
- Add ajv@6.12.6 as direct dependency to client package.json
- All tests pass and linting is clean

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-28 22:18:19 -04:00
cliffhall
0c1962c2d0 prettier 2025-05-28 15:46:07 -04:00
Basil Hosmer
5a628c7a00
fix: Fix lint errors
- Remove unused catch parameter in ToolsTab.tsx
- Replace 'as any' with @ts-expect-error in test for invalid schema

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-28 15:24:40 -04:00
Basil Hosmer
e7e4745464
fix: Fix TypeScript build errors in ToolsTab tests
The previous test implementation caused build failures due to Jest
hoisting issues with mock variables. This commit fixes the build by
removing mocking in favor of using real schema validation.

- Remove jest.mock() of schemaUtils module that caused initialization errors
- Add beforeEach to clear schema cache between tests
- Use cacheToolOutputSchemas() to set up test scenarios
- Let real validation logic run for more accurate tests
- All tests pass and build succeeds

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-28 15:24:40 -04:00
Basil Hosmer
b184654ee5
style: Apply Prettier formatting to structured output code
Applied consistent formatting to ToolsTab.tsx and schemaUtils.ts
to fix linting issues. No functional changes.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-28 15:24:40 -04:00
Basil Hosmer
cf1fb61de4
test: Add comprehensive tests for structured output validation
Added extensive test coverage for the new structured output features:

Schema Utilities Tests:
- Tests for cacheToolOutputSchemas function
- Tests for validateToolOutput with various scenarios
- Tests for getToolOutputValidator and hasOutputSchema helpers
- Coverage for valid/invalid schemas and edge cases
- Tests for nested object validation

ToolsTab Component Tests:
- Tests for output schema display and expand/collapse functionality
- Tests for structured content validation display
- Tests for validation error messages
- Tests for unstructured content title logic
- Tests for compatibility checking between structured/unstructured content
- Tests ensuring compatibility check only runs with output schemas

All tests passing with 100% coverage of new functionality.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-28 15:24:40 -04:00
Basil Hosmer
de84c472ce
feat: Add structured output support to browser UI
This commit adds comprehensive support for structured output validation in tool calls,
following the MCP specification for tools with output schemas.

UI Changes:
1. Output Schema Display:
   - Added collapsible output schema section in ToolsTab
   - Shows output schemas after input fields, before the Run Tool button
   - Default view shows 8 lines with scrolling, expandable to full view
   - Expand/Collapse button with chevron icons for better UX

2. Structured Content Display:
   - New "Structured Content" section when tools return structuredContent
   - Shows structured data in a formatted JSON view
   - Validation status indicator (green checkmark for valid, red X for errors)
   - Detailed validation error messages when content doesn't match schema

3. Unstructured Content Labeling:
   - Added "Unstructured Content" heading when both structured and unstructured content exist
   - Only shows label when structured content is also present
   - Maintains clean UI when only unstructured content exists

4. Compatibility Checking:
   - Checks if unstructured content matches structured content (when output schema exists)
   - Shows compatibility status with blue (compatible) or yellow (incompatible) indicators
   - Detailed messages explain why content doesn't match
   - Only runs compatibility check for tools with output schemas

5. Validation Error Handling:
   - Shows error when tool with output schema doesn't return structured content
   - Clear error messages for schema validation failures
   - Maintains proper error state display

Technical Implementation:
- Added schema validation utilities using Ajv (same as SDK)
- Caches compiled validators for performance
- Validates on tool result display, not during the call
- Follows SDK's Client.callTool validation pattern

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-28 15:24:40 -04:00
cliffhall
9bc6bd725e Address [comment](https://github.com/modelcontextprotocol/inspector/pull/428/files/f04470ace7080f53233d1387e2dbb4d232bd5f7d#r2109509222) [by](https://github.com/modelcontextprotocol/inspector/pull/428/files/f04470ace7080f53233d1387e2dbb4d232bd5f7d#r2108137150) @olaservo 2025-05-28 13:46:58 -04:00
cliffhall
bc90f11dc8 Address [comment](https://github.com/modelcontextprotocol/inspector/pull/428/files/f04470ace7080f53233d1387e2dbb4d232bd5f7d#r2109509222) by @olaservo 2025-05-28 13:44:55 -04:00
Ola Hungerford
183f80104a
Merge pull request #464 from modelcontextprotocol/revert-380-main
Revert "fix: handle the client disconnect so that the server does not crash."
2025-05-28 10:15:05 -07:00
Cliff Hall
692c863f5b
Revert "fix: handle the client disconnect so that the server does not crash." 2025-05-28 12:56:55 -04:00
Cliff Hall
f1eb488801
Merge pull request #380 from wolfdancer/main
fix: handle the client disconnect so that the server does not crash.
2025-05-28 12:55:27 -04:00
Paul Carleton
7b1299c730
[auth debugger] Make the quick flow use the same state machine as the step-by-step flow (#426)
* use state machine in quick flow

* clean up test

* rm some comments
2025-05-27 11:36:19 +01:00
cliffhall
f04470ace7 Allow multiple client connections to the MCP server, by making a unique server tranpsort for each web app transport.
* In server/src/index.ts
  - add serverTransports map

  - remove backingServerTransport var

  - in /mcp POST handler, when a new connection is being made
    - create a server transport
    - map the server transport using the session id from the web app connection
    - pass serverTransport to the mcpProxy instead of backingServerTransport

  - in /stdio GET handler, when a new connection is being made
    - create a server transport
    - map the server transport using the session id from the web app connection
    - pass serverTransport to the mcpProxy instead of backingServerTransport

  - in /sse GET handler, when a new connection is being made
    - create a server transport
    - map the server transport using the session id from the web app connection
    - pass serverTransport to the mcpProxy instead of backingServerTransport
2025-05-21 17:45:19 -04:00
Cliff Hall
efa4959ec4
Merge branch 'main' into main 2025-05-21 16:27:13 -04:00
Cliff Hall
ec24f7bbbf
Merge pull request #425 from modelcontextprotocol/pcarleton/naming
rework naming on config copy
2025-05-21 16:17:26 -04:00
Cliff Hall
c2610b6bb6
Merge branch 'main' into pcarleton/naming 2025-05-21 16:15:58 -04:00
ihrpr
b07f738cf3
Merge pull request #427 from modelcontextprotocol/ihrpr/0.13.0 0.13.0
0.13.0 bump version
2025-05-21 21:03:09 +01:00
ihrpr
7cf85b526a
update TS sdk 2025-05-21 20:56:25 +01:00
ihrpr
bbdbd3afb9
update dependencies as well 2025-05-21 20:37:20 +01:00
ihrpr
b0db14c3a7
0.13.0 bump version 2025-05-21 20:33:19 +01:00
ihrpr
eda63dafb8
Merge pull request #418 from modelcontextprotocol/ihrpr/auth-sse-shttp-connect
Fix connection issue for servers with auth
2025-05-21 20:26:03 +01:00
Shane
3232c0e11e
Revert "fix the PR build error"
This reverts commit 80377bc914.
2025-05-21 10:21:39 -07:00
Shane
80377bc914
fix the PR build error 2025-05-20 22:28:26 -07:00
Paul Carleton
df9ea1e8a4
rework naming 2025-05-20 19:51:48 +01:00
ihrpr
8ab5ac1476
remove null check 2025-05-20 18:21:33 +01:00
Shane
a61a1b0df2
format update with prettier 2025-05-20 09:25:47 -07:00
ihrpr
014ef7d35e
refactor 2025-05-20 17:25:44 +01:00
ihrpr
6b19ac3e3d
random issue when running build 2025-05-19 19:21:58 +01:00
ihrpr
2f6a9fca11
format 2025-05-19 19:03:22 +01:00
ihrpr
85ae0ede85
small fix 2025-05-19 18:36:50 +01:00
ihrpr
13eb077329
fix auth conect 2025-05-19 18:29:42 +01:00
Cliff Hall
eb190b637d
Merge branch 'main' into fix-port-numbers 2025-05-19 12:45:51 -04:00
Shane
7df1936b3c
fixed the error handling in async call 2025-05-18 23:33:19 -07:00
Shane
b9b3682350
format fix 2025-05-18 21:45:39 -07:00
Shane
fa236ea2c7
handle the case that client disconnects so that the server does not crash 2025-05-18 21:45:38 -07:00
Kamal Fariz Mahyuddin
c6fad3f923
fix: quick oauth flow could not transition to token_request due to missing server metadata (#407)
* fix: quick oauth flow could not transition to token_request due to missing server metadata

* chore: prettier fix
2025-05-16 16:22:39 +01:00
Cliff Hall
05e41d2ccc
Merge pull request #334 from sumeetpardeshi/main
feat: Add copy json config button
2025-05-15 12:45:56 -04:00
sumeetpardeshi
1e48310bcb Merge branch 'main' of https://github.com/sumeetpardeshi/inspector 2025-05-14 19:01:32 -07:00
sumeetpardeshi
d40140c2e8 fixing lint error 2025-05-14 19:01:22 -07:00
Cliff Hall
faf3efc19b
Merge branch 'main' into main 2025-05-14 16:09:23 -04:00
sumeetpardeshi
e3076ae05c fixing indentation 2025-05-13 17:09:02 -07:00
Paul Carleton
5e8e78c31d
Add Auth debugger tab (#355)
* wip auth debugger

* cleanup types and validation

* more cleanup

* draft test

* wip clean up some

* rm toasts

* consolidate state management

* prettier

* hoist state up to App

* working with quick and guided

* sort out displaying debugger

* prettier

* cleanup types

* fix tests

* cleanup comment

* prettier

* fixup types in tests

* prettier

* refactor debug to avoid toasting

* callback shuffling

* linting

* types

* rm toast in test

* bump typescript sdk version to 0.11.2 for scope parameter passing

* use proper scope handling

* test scope parameter passing

* move functions and s/sseUrl/serverUrl/

* extract status message into component

* refactor progress and steps into components

* fix test

* rename quick handler

* one less click

* last step complete

* add state machine

* test and types
2025-05-13 19:37:09 +01:00
sumeetpardeshi
8ca5a34d12 fix readme after merging main 2025-05-12 20:30:54 -07:00
sumeetpardeshi
283371c313 Merge branch 'main' of https://github.com/modelcontextprotocol/inspector 2025-05-12 20:30:02 -07:00
sumeetpardeshi
5b54ce1281 adding fixes as buttons were not visible for streamable-http transport type, as per PR review comment 2025-05-12 20:17:28 -07:00