Fix scaffold: use z.any() for JSON Schema input

This commit is contained in:
root
2026-03-12 12:01:23 +00:00
parent a55e65dae6
commit b20a429f39

View File

@@ -136,12 +136,13 @@ function scaffoldServer(repoDir: string, request: MetaRequest) {
};
const toolName = name;
const inputSchema = JSON.stringify(request.requirements[0]?.inputSchema ?? {
const rawSchema = request.requirements[0]?.inputSchema ?? {
type: 'object',
properties: {},
});
};
const inputSchemaJson = JSON.stringify(rawSchema, null, 2);
const serverCode = `import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { z } from 'zod';\n\nconst server = new McpServer({ name: '${name}', version: '0.1.0' });\n\nconst InputSchema = z.object(${inputSchema});\n\nserver.registerTool('${toolName}', {\n description: '${toolDesc.replace(/'/g, "\\'")}',\n inputSchema: InputSchema\n}, async (args) => {\n // TODO: implement tool logic\n return {\n content: [{ type: 'text', text: JSON.stringify({ ok: true, args }, null, 2) }]\n };\n});\n\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n\nmain().catch((err) => {\n console.error('Server failed', err);\n process.exit(1);\n});\n`;
const serverCode = `import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { z } from 'zod';\n\nconst server = new McpServer({ name: '${name}', version: '0.1.0' });\n\n// NOTE: JSON Schema -> Zod conversion is not implemented yet.\n// We accept any input for now and keep the JSON Schema for reference.\nconst InputSchema = z.any();\nconst InputSchemaJson = ${inputSchemaJson};\n\nserver.registerTool('${toolName}', {\n description: '${toolDesc.replace(/'/g, "\\'")}',\n inputSchema: InputSchema\n}, async (args) => {\n // TODO: implement tool logic\n return {\n content: [{ type: 'text', text: JSON.stringify({ ok: true, args, schema: InputSchemaJson }, null, 2) }]\n };\n});\n\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n\nmain().catch((err) => {\n console.error('Server failed', err);\n process.exit(1);\n});\n`;
const readme = `# ${name}\n\nAuto-generated MCP server from Meta MCP.\n\n## Tool\n- **${toolName}**: ${toolDesc}\n\n## Dev\n\n\
\