Import shared wire types from @modelcontextprotocol/client

spec.types.ts previously inferred CallToolResult, ContentBlock and
friends from core's Zod schemas via a local core-types module so that
the type surface stayed free of a client package edge. Now that client
is a required peer, take the types from it directly and delete the
indirection. Generated schemas are unchanged.
This commit is contained in:
Olivier Chafik 2026-09-07 15:26:00 +01:00
commit 040942b3af
3 changed files with 6 additions and 24 deletions

View file

@ -22,10 +22,12 @@
* *
* **Problem**: ts-to-zod cannot resolve types imported from external packages. * **Problem**: ts-to-zod cannot resolve types imported from external packages.
* When it encounters types like `ContentBlock`, `CallToolResult`, `Implementation`, * When it encounters types like `ContentBlock`, `CallToolResult`, `Implementation`,
* `RequestId`, and `Tool` from `@modelcontextprotocol/core`, it generates `z.any()` * `RequestId`, and `Tool` (imported by spec.types.ts from
* as a placeholder. * `@modelcontextprotocol/client`), it generates `z.any()` as a placeholder.
* *
* **Solution**: Import the schemas from MCP SDK and remove the z.any() placeholders. * **Solution**: Import the corresponding Zod schemas from
* `@modelcontextprotocol/core` (the role-neutral package both client and
* server re-export) and remove the z.any() placeholders.
* *
* ### 3. Index Signatures (`z.record().and()` → `z.object().passthrough()`) * ### 3. Index Signatures (`z.record().and()` → `z.object().passthrough()`)
* *

View file

@ -1,20 +0,0 @@
import {
CallToolResultSchema,
ContentBlockSchema,
EmbeddedResourceSchema,
ImplementationSchema,
RequestIdSchema,
ResourceLinkSchema,
ToolSchema,
} from "@modelcontextprotocol/core";
import type { z } from "zod/v4";
// Infer shared wire types from the public role-neutral schemas so declarations
// used by every entrypoint do not acquire a client or server package edge.
export type CallToolResult = z.infer<typeof CallToolResultSchema>;
export type ContentBlock = z.infer<typeof ContentBlockSchema>;
export type EmbeddedResource = z.infer<typeof EmbeddedResourceSchema>;
export type Implementation = z.infer<typeof ImplementationSchema>;
export type RequestId = z.infer<typeof RequestIdSchema>;
export type ResourceLink = z.infer<typeof ResourceLinkSchema>;
export type Tool = z.infer<typeof ToolSchema>;

View file

@ -18,7 +18,7 @@ import type {
RequestId, RequestId,
ResourceLink, ResourceLink,
Tool, Tool,
} from "./core-types"; } from "@modelcontextprotocol/client";
/** /**
* Current protocol version supported by this SDK. * Current protocol version supported by this SDK.