mirror of
https://github.com/rowboatlabs/rowboat.git
synced 2026-04-26 08:56:22 +02:00
50 lines
No EOL
1.4 KiB
TypeScript
50 lines
No EOL
1.4 KiB
TypeScript
import z from "zod";
|
|
|
|
export const StdioMcpServerConfig = z.object({
|
|
type: z.literal("stdio").optional(),
|
|
command: z.string(),
|
|
args: z.array(z.string()).optional(),
|
|
env: z.record(z.string(), z.string()).optional(),
|
|
});
|
|
|
|
export const HttpMcpServerConfig = z.object({
|
|
type: z.literal("http").optional(),
|
|
url: z.string(),
|
|
headers: z.record(z.string(), z.string()).optional(),
|
|
});
|
|
|
|
export const McpServerDefinition = z.union([StdioMcpServerConfig, HttpMcpServerConfig]);
|
|
|
|
export const McpServerConfig = z.object({
|
|
mcpServers: z.record(z.string(), McpServerDefinition),
|
|
});
|
|
|
|
export const connectionState = z.enum(["disconnected", "connected", "error"]);
|
|
|
|
export const McpServerList = z.object({
|
|
mcpServers: z.record(z.string(), z.object({
|
|
config: McpServerDefinition,
|
|
state: connectionState,
|
|
error: z.string().nullable(),
|
|
})),
|
|
});
|
|
|
|
export const Tool = z.object({
|
|
name: z.string(),
|
|
description: z.string().optional(),
|
|
inputSchema: z.object({
|
|
type: z.literal("object"),
|
|
properties: z.record(z.string(), z.any()).optional(),
|
|
required: z.array(z.string()).optional(),
|
|
}),
|
|
outputSchema: z.object({
|
|
type: z.literal("object"),
|
|
properties: z.record(z.string(), z.any()).optional(),
|
|
required: z.array(z.string()).optional(),
|
|
}).optional(),
|
|
});
|
|
|
|
export const ListToolsResponse = z.object({
|
|
tools: z.array(Tool),
|
|
nextCursor: z.string().optional(),
|
|
}); |