Get rid of the fastmcp schema workarounds (#457)

* Get rid of the fastmcp schema workarounds

* tweak

* update lock
This commit is contained in:
Mateusz Burzyński
2026-03-06 18:12:44 +00:00
committed by pullfrog[bot]
parent ed91fbb18d
commit f87073fcef
6 changed files with 6037 additions and 7674 deletions
+7 -8
View File
@@ -1,4 +1,4 @@
import type { StandardSchemaV1 } from "@standard-schema/spec";
import type { StandardJSONSchemaV1, StandardSchemaV1 } from "@standard-schema/spec";
import { Ajv } from "ajv";
import { type } from "arktype";
import { log } from "../utils/cli.ts";
@@ -14,16 +14,18 @@ type JsonSchema = Record<string, unknown>;
function jsonSchemaToStandardSchema({
$schema: _,
...jsonSchema
}: JsonSchema): StandardSchemaV1<any> & { toJsonSchema(): JsonSchema } {
}: JsonSchema): StandardJSONSchemaV1<any> & StandardSchemaV1<any> {
const ajv = new Ajv();
const validate = ajv.compile(jsonSchema);
return {
"~standard": {
version: 1,
// xsschema (used by fastmcp) hardcodes supported vendors instead of duck-typing toJsonSchema().
// "arktype" works because its converter is just `(schema) => schema.toJsonSchema()`.
vendor: "arktype",
vendor: "json-schema",
jsonSchema: {
input: () => jsonSchema,
output: () => jsonSchema,
},
validate(input: unknown) {
if (validate(input)) {
return { value: input };
@@ -36,9 +38,6 @@ function jsonSchemaToStandardSchema({
};
},
},
toJsonSchema() {
return jsonSchema;
},
};
}