import { type JSONRPCError, type JSONRPCNotification, type JSONRPCRequest, type JSONRPCResponse } from "../jsonrpc2/types.js"; import type { CallToolResult, Prompt, ServerCapabilities, Tool } from "../mcp/20251125/types.js"; import type { PromptConfig } from "../prompts/types.js"; import type { ResourceMetadata, ResourceReader, URITemplate } from "../resources/types.js"; import type { ToolConfig } from "../tools/types.js"; import type { Transport } from "../transport/types.js"; import type { InputParamValidator, MCPServerOptions } from "./types.js"; export declare const DEFAULT_MCP_SERVER_NAME = "MCP Server"; export declare const DEFAULT_MCP_SERVER_VERSION = "0.0.0"; export declare class MCPServer { private capabilities; private tools; private prompts; private resources; private name; private version; private instructions; private logger; constructor(options: MCPServerOptions); withTransport(transport: Transport): void; getTool(name: string): Tool | undefined; getTools(): Map; /** * Get the server capabilities */ getCapabilities(): ServerCapabilities; /** * Register a tool */ addTool, R extends CallToolResult = CallToolResult>(config: ToolConfig): void; /** * Remove a tool from the server */ removeTool(name: string): boolean; /** * Get all registered tools */ getToolDefinitions(): Tool[]; /** * Register a prompt */ addPrompt>(config: PromptConfig): void; /** * Remove a prompt from the server */ removePrompt(name: string): boolean; /** * Get a specific prompt by name */ getPrompt(name: string): Prompt | undefined; /** * Get all registered prompts */ getPromptDefinitions(): Prompt[]; /** * Add a resource to the server */ addResource(name: string, uri: string | URITemplate, metadata: ResourceMetadata, reader: ResourceReader): void; /** * Remove a resource from the server */ removeResource(name: string): boolean; /** * Get a specific resource by name */ getResource(name: string): { [x: string]: unknown; name: string; uri: string; title?: string | undefined; icons?: { [x: string]: unknown; src: string; mimeType?: string | undefined; sizes?: string[] | undefined; theme?: "light" | "dark" | undefined; }[] | undefined; description?: string | undefined; mimeType?: string | undefined; annotations?: { [x: string]: unknown; audience?: ("user" | "assistant")[] | undefined; priority?: number | undefined; lastModified?: string | undefined; } | undefined; size?: number | undefined; _meta?: { [x: string]: unknown; } | undefined; } | undefined; /** * Get a specific resource template by name */ getResourceTemplate(name: string): { [x: string]: unknown; name: string; uriTemplate: string; title?: string | undefined; icons?: { [x: string]: unknown; src: string; mimeType?: string | undefined; sizes?: string[] | undefined; theme?: "light" | "dark" | undefined; }[] | undefined; description?: string | undefined; mimeType?: string | undefined; annotations?: { [x: string]: unknown; audience?: ("user" | "assistant")[] | undefined; priority?: number | undefined; lastModified?: string | undefined; } | undefined; _meta?: { [x: string]: unknown; } | undefined; } | undefined; /** * Get all registered resources (non-templates) */ getResourceDefinitions(): { [x: string]: unknown; name: string; uri: string; title?: string | undefined; icons?: { [x: string]: unknown; src: string; mimeType?: string | undefined; sizes?: string[] | undefined; theme?: "light" | "dark" | undefined; }[] | undefined; description?: string | undefined; mimeType?: string | undefined; annotations?: { [x: string]: unknown; audience?: ("user" | "assistant")[] | undefined; priority?: number | undefined; lastModified?: string | undefined; } | undefined; size?: number | undefined; _meta?: { [x: string]: unknown; } | undefined; }[]; /** * Get all registered resource templates */ getResourceTemplateDefinitions(): { [x: string]: unknown; name: string; uriTemplate: string; title?: string | undefined; icons?: { [x: string]: unknown; src: string; mimeType?: string | undefined; sizes?: string[] | undefined; theme?: "light" | "dark" | undefined; }[] | undefined; description?: string | undefined; mimeType?: string | undefined; annotations?: { [x: string]: unknown; audience?: ("user" | "assistant")[] | undefined; priority?: number | undefined; lastModified?: string | undefined; } | undefined; _meta?: { [x: string]: unknown; } | undefined; }[]; /** * Handle a JSON-RPC request */ handleRequest(request: JSONRPCRequest): Promise; /** * Handle a JSON-RPC notification */ handleNotification(notification: JSONRPCNotification): Promise; /** * Handle ping request - the server MUST respond with an empty request. */ private handlePing; /** * Handle initialize request */ private handleInitialize; private handleToolListRequest; /** * Handle tool request */ private handleToolCallRequest; /** * Handle prompts/list request */ private handlePromptListRequest; /** * Handle prompts/get request */ private handlePromptGetRequest; /** * Update the available tools in capabilities */ private updateAvailableTools; /** * Handle resources/list request */ private handleResourceListRequest; /** * Handle resources/templates/list request */ private handleResourceTemplateListRequest; /** * Handle resources/read request */ private handleResourceReadRequest; }