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
This commit is contained in:
Jean-Marc Le Roux 2025-08-30 14:46:34 +02:00
commit 409ac3945d

View file

@ -43,8 +43,8 @@ describe("generateDefaultValue", () => {
expect(generateDefaultValue({ type: "array" })).toBe(undefined);
});
test("generates default empty object", () => {
expect(generateDefaultValue({ type: "object" })).toEqual({});
test("generates undefined for optional object", () => {
expect(generateDefaultValue({ type: "object" })).toBe(undefined);
});
test("generates default null for unknown types", () => {
@ -66,8 +66,18 @@ describe("generateDefaultValue", () => {
).toBe(undefined);
});
test("generates empty object for non-required object", () => {
expect(generateDefaultValue({ type: "object" })).toEqual({});
test("generates empty object for required object", () => {
const parentSchema = { required: ["testObject"] };
expect(
generateDefaultValue({ type: "object" }, "testObject", parentSchema),
).toEqual({});
});
test("generates undefined for non-required object", () => {
const parentSchema = { required: ["otherField"] };
expect(
generateDefaultValue({ type: "object" }, "testObject", parentSchema),
).toBe(undefined);
});
test("generates undefined for non-required primitive types", () => {