jsonv-ts
Version:
JSON Schema builder and validator for TypeScript with static type inference, Hono middleware for OpenAPI generation and validation, and MCP server/client implementation. Lightweight, dependency-free, and built on Web Standards.
116 lines (115 loc) • 3.84 kB
TypeScript
import type { ToolsCallMessage, ResourcesReadMessage, LoggingMessage } from "./messages";
import type { TRpcMessageParams } from "./rpc";
import type { MaybePromise } from "./utils";
export interface McpClientConfig {
name?: string;
version?: string;
transport?: "streamableHttp";
url: string | URL;
fetch?: typeof fetch | ((url: string | RequestInfo | URL, options?: RequestInit) => MaybePromise<Response>);
}
export declare class McpClient {
readonly config: McpClientConfig;
private id;
private sessionId;
constructor(config: McpClientConfig);
private request;
connect(): Promise<{
protocolVersion: string;
capabilities: {
tools: {} | undefined;
resources: {} | undefined;
logging: {};
completions: {};
};
serverInfo: {
name: string;
version: string;
};
} | undefined>;
ping(): Promise<{} | undefined>;
setLoggingLevel(level: TRpcMessageParams<LoggingMessage>["level"]): Promise<{} | undefined>;
listResources(): Promise<{
resources: {
[x: string]: string | number | {
[key: string]: unknown;
} | undefined;
name: any;
title: string | undefined;
description: string | undefined;
mimeType: string | undefined;
size: number | undefined;
_meta: {
[key: string]: unknown;
} | undefined;
}[];
} | undefined>;
listResourceTemplates(): Promise<{
resourceTemplates: {
[x: string]: string | number | {
[key: string]: unknown;
} | undefined;
name: any;
title: string | undefined;
description: string | undefined;
mimeType: string | undefined;
size: number | undefined;
_meta: {
[key: string]: unknown;
} | undefined;
}[];
} | undefined>;
readResource(message: TRpcMessageParams<ResourcesReadMessage>): Promise<{
contents: ({
mimeType: string;
title?: string;
description?: string;
text?: string;
uri: `${string}://${string}`;
name: string;
size: number | undefined;
_meta: {
[key: string]: unknown;
} | undefined;
} | {
mimeType: string;
title?: string;
description?: string;
blob?: string;
uri: `${string}://${string}`;
name: string;
size: number | undefined;
_meta: {
[key: string]: unknown;
} | undefined;
})[];
} | undefined>;
callTool(message: TRpcMessageParams<ToolsCallMessage>): Promise<{
content: (import("./tool").ToolResponseText & any[]) | import("./tool").ToolResponseText[];
} | {
content: {
type: string;
text: string;
}[];
isError: boolean;
} | undefined>;
listTools(): Promise<{
tools: {
name: any;
title: string | undefined;
description: string | undefined;
inputSchema: import("../lib").JSONSchemaDefinition;
outputSchema: import("../lib").JSONSchemaDefinition | undefined;
annotations: {
title?: string | undefined;
readOnlyHint?: boolean | undefined;
destructiveHint?: boolean | undefined;
idempotentHint?: boolean | undefined;
openWorldHint?: boolean | undefined;
} | undefined;
_meta: {
[key: string]: unknown;
} | undefined;
}[];
} | undefined>;
}