| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- // ref: https://spec.modelcontextprotocol.io/specification/basic/messages/
- import { z } from "zod";
- export interface McpRequestMessage {
- jsonrpc?: "2.0";
- id?: string | number;
- method: "tools/call" | string;
- params?: {
- [key: string]: unknown;
- };
- }
- export const McpRequestMessageSchema: z.ZodType<McpRequestMessage> = z.object({
- jsonrpc: z.literal("2.0").optional(),
- id: z.union([z.string(), z.number()]).optional(),
- method: z.string(),
- params: z.record(z.unknown()).optional(),
- });
- export interface McpResponseMessage {
- jsonrpc?: "2.0";
- id?: string | number;
- result?: {
- [key: string]: unknown;
- };
- error?: {
- code: number;
- message: string;
- data?: unknown;
- };
- }
- export const McpResponseMessageSchema: z.ZodType<McpResponseMessage> = z.object(
- {
- jsonrpc: z.literal("2.0").optional(),
- id: z.union([z.string(), z.number()]).optional(),
- result: z.record(z.unknown()).optional(),
- error: z
- .object({
- code: z.number(),
- message: z.string(),
- data: z.unknown().optional(),
- })
- .optional(),
- },
- );
- export interface McpNotifications {
- jsonrpc?: "2.0";
- method: string;
- params?: {
- [key: string]: unknown;
- };
- }
- export const McpNotificationsSchema: z.ZodType<McpNotifications> = z.object({
- jsonrpc: z.literal("2.0").optional(),
- method: z.string(),
- params: z.record(z.unknown()).optional(),
- });
- // MCP 服务器配置相关类型
- export interface ServerConfig {
- command: string;
- args: string[];
- env?: Record<string, string>;
- }
- export interface McpConfig {
- mcpServers: Record<string, ServerConfig>;
- }
- export interface ArgsMapping {
- type: "spread" | "single" | "env";
- position?: number;
- key?: string;
- }
- export interface PresetServer {
- id: string;
- name: string;
- description: string;
- command: string;
- baseArgs: string[];
- configurable: boolean;
- configSchema?: {
- properties: Record<
- string,
- {
- type: string;
- description?: string;
- required?: boolean;
- minItems?: number;
- }
- >;
- };
- argsMapping?: Record<string, ArgsMapping>;
- }
|