Commit graph inspector/client/src/utils/schemaUtils.ts
Author SHA1 Message Date
Vincent
12332932b0 fix: Modify test mock data 2025-11-08 09:57:48 -08:00
Vincent
8ad6253cd9 fix: Extract function to utils 2025-11-04 09:31:31 -08:00
Cliff Hall
54484e7e8e
Merge branch 'main' into fix-default-null-array-input 2025-10-30 12:04:47 -04:00
cliffhall
37acee9283 Handle nullable arrays in tool inputSchemas
* In DynamicJsonForm.tsx
  - In debouncedUpdateParent, formatJson, and validateJson,
    - when trimming the JSON value, use ?.trim() in case the field is null

* In jsonUtils.ts
  - in tryParseJson
    - use ?.trim() in case the field is null

* In schemaUtils.ts
  - in normalizeUnionType
    - add condition to handle the case where there is an anyOf with array or null as options

* In ToolsTab.tsx
  - for nullable fields, in null checkbox, in onCheckedChange handler
    - when not checked, if prop type is array, set to undefined (empty input field that can be edited rather than the word "null" as the default could provide

Fixes #846
2025-10-29 14:28:49 -04:00
yanOO1497
fb7fae1436 fix: resolve $ref references in tool input schema properties 2025-10-25 17:02:25 +08:00
Greg Saab
3fd0feb75a if a field is nullable, provide a means of specifying null 2025-10-08 12:22:47 -04:00
Jean-Marc Le Roux
409ac3945d fix: return undefined for optional objects instead of empty objects
- Update generateDefaultValue to return undefined for optional object parameters
- Add comprehensive tests for required vs non-required objects
- Fixes issue where MCP Inspector sends empty objects {} for optional parameters
- Objects with required properties still return populated objects
- Empty optional objects now return undefined to be omitted from requests

Refs #771
2025-08-30 14:46:34 +02:00
Jean-Marc Le Roux
3cdb4bd744 fix: return undefined for optional arrays instead of empty arrays
- Update generateDefaultValue to return undefined for optional array parameters
- Add comprehensive tests for required vs non-required arrays
- Fixes issue where MCP Inspector sends empty arrays [] for optional parameters
- Resolves compatibility issues with OpenAPI servers expecting omitted optionals

Refs #771
2025-08-30 14:45:29 +02:00
Mats Julius Funke
1d960a1b9a
fix: added explicit handling for float & int 2025-08-03 10:34:19 +02:00
Mats Julius Funke
5469993e27
fix: add boolean union type support for FastMCP optional booleans 2025-08-02 16:35:42 +02:00
Mats Julius Funke
f73d8e6f8a
fix: support FastMCP union types in tool parameter forms 2025-08-02 15:59:45 +02:00
olaservo
2fb5d4b684 Fix formatting 2025-06-10 21:29:08 -07:00
olaservo
a2061a6f76 Add check to fix build failure 2025-06-10 21:27:54 -07:00
olaservo
123a462681 Fix formatting 2025-06-10 21:23:04 -07:00
Ola Hungerford
cf2778ad19
Update client/src/utils/schemaUtils.ts
Co-authored-by: Cliff Hall <cliff@futurescale.com>
2025-06-10 21:21:51 -07:00
Ola Hungerford
51eb7cf849
Update client/src/utils/schemaUtils.ts
Co-authored-by: Cliff Hall <cliff@futurescale.com>
2025-06-10 21:21:43 -07:00
olaservo
990bc0f7fd Fix formatting 2025-06-01 15:41:30 -07:00
olaservo
b555e41c0b Address the schema architecture crisis 2025-06-01 09:03:02 -07: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
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
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
Mitko Iliev
b9c58252a1 Fixed: if not given cannnot be null default 2025-04-19 00:05:56 +03:00
yushengchen
fe74dbea74 refactor(json): Consolidate JSON utilities and type definitions
Modified files:
- client/src/components/DynamicJsonForm.tsx
- client/src/components/JsonView.tsx
- client/src/components/ToolsTab.tsx
- client/src/components/__tests__/DynamicJsonForm.test.tsx
- client/src/utils/__tests__/jsonPathUtils.test.ts → client/src/utils/__tests__/jsonUtils.test.ts
- client/src/utils/__tests__/schemaUtils.test.ts
- client/src/utils/jsonPathUtils.ts → client/src/utils/jsonUtils.ts
- client/src/utils/schemaUtils.ts

Descriptions:
- Move JSON type definitions from DynamicJsonForm to centralized jsonUtils
- Consolidate utility functions (getDataType, tryParseJson) into jsonUtils
- Rename jsonPathUtils to jsonUtils for better semantic clarity
- Add comprehensive test coverage for new utility functions
- Update imports across all affected components
- Improve type references consistency throughout the codebase
2025-04-09 09:20:02 +08:00
Ola Hungerford
c463dc58c2 Simplify check for defaults and add another test 2025-03-18 06:23:25 -07:00
Ola Hungerford
7ddba51b36 Generate empty objects and arrays for non required object and array fields 2025-03-17 06:36:35 -07:00
Ola Hungerford
a1eb343b79 Remove unused function plus tests 2025-02-28 06:26:04 -07:00
Ola Hungerford
82bbe58a46 Fix formatting 2025-02-27 22:08:04 -07:00
Ola Hungerford
44982e6c97 Default to nulls and update tests 2025-02-27 21:33:37 -07:00
Ola Hungerford
238c22830b Fix formatting 2025-02-27 07:21:04 -07:00
Ola Hungerford
0b105b29c1 Extract functions 2025-02-26 19:55:01 -07:00