fix: patch zod-to-json-schema to use Draft-07 for MCP client compatibility
- Add FastMCPCompat.js to monkey-patch zodToJsonSchema function - Force JSON Schema Draft-07 instead of Draft 2020-12 - Use relative refs for better MCP client compatibility - Fixes MCP server startup error in Augment IDE and other clients Closes #1284 Co-authored-by: Ralph Khreish <Crunchyman-ralph@users.noreply.github.com>
This commit is contained in:
committed by
Ralph Khreish
parent
b8830d9508
commit
7c84d9ffe3
33
mcp-server/src/FastMCPCompat.js
Normal file
33
mcp-server/src/FastMCPCompat.js
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/**
|
||||||
|
* @fileoverview JSON Schema Draft-07 compatibility patch
|
||||||
|
*
|
||||||
|
* This patches the zod-to-json-schema module to default to JSON Schema Draft-7
|
||||||
|
* instead of Draft 2020-12 for better MCP client compatibility.
|
||||||
|
*
|
||||||
|
* The patch works by overriding the zodToJsonSchema function's default behavior.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import * as zodToJsonSchemaModule from 'zod-to-json-schema';
|
||||||
|
|
||||||
|
// Store original function
|
||||||
|
const originalZodToJsonSchema = zodToJsonSchemaModule.zodToJsonSchema;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Patched zodToJsonSchema function that defaults to Draft-07
|
||||||
|
*/
|
||||||
|
function patchedZodToJsonSchema(schema, options = {}) {
|
||||||
|
// Force JSON Schema Draft-07 for MCP compatibility
|
||||||
|
const draft7Options = {
|
||||||
|
...options,
|
||||||
|
target: 'jsonSchema7',
|
||||||
|
$refStrategy: options.$refStrategy || 'relative'
|
||||||
|
};
|
||||||
|
|
||||||
|
return originalZodToJsonSchema(schema, draft7Options);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply the patch by overriding the module's export
|
||||||
|
zodToJsonSchemaModule.zodToJsonSchema = patchedZodToJsonSchema;
|
||||||
|
|
||||||
|
// Export the patched FastMCP (just re-export regular FastMCP since we've patched at module level)
|
||||||
|
export { FastMCP } from 'fastmcp';
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { FastMCP } from 'fastmcp';
|
import { FastMCP } from './FastMCPCompat.js';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import dotenv from 'dotenv';
|
import dotenv from 'dotenv';
|
||||||
import { fileURLToPath } from 'url';
|
import { fileURLToPath } from 'url';
|
||||||
|
|||||||
Reference in New Issue
Block a user