UNPKG

xmcp

Version:

The TypeScript MCP framework

44 lines (43 loc) • 2.36 kB
import type { McpHostCallToolParams, McpHostCapabilities, McpHostContainerDimensions, McpHostContext, McpHostMessageResult, McpHostModelContextResult, McpHostOpenLinkParams, McpHostReadResourceResult, McpHostRequestDisplayModeResult, McpHostSendMessageParams, McpHostToolResult, McpUiDisplayMode, McpHostUpdateModelContextParams } from "./mcp-app-types"; export * from "./mcp-app-protocol"; export type * from "./mcp-app-types"; export interface McpHostBridgeState { isConnected: boolean; hostContext: McpHostContext | null; hostCapabilities: McpHostCapabilities | null; } export interface McpHostBridge { callTool: (name: McpHostCallToolParams["name"], args?: McpHostCallToolParams["arguments"]) => Promise<McpHostToolResult>; requestDisplayMode: (mode: McpUiDisplayMode) => Promise<McpHostRequestDisplayModeResult>; openLink: (url: McpHostOpenLinkParams["url"]) => Promise<void>; readResource: (uri: string) => Promise<McpHostReadResourceResult>; sendMessage: (params: McpHostSendMessageParams) => Promise<McpHostMessageResult>; updateModelContext: (params: McpHostUpdateModelContextParams) => Promise<McpHostModelContextResult>; logMessage: (params: McpHostSendMessageParams) => Promise<void>; notifySizeChanged: (params: McpHostContainerDimensions) => Promise<void>; getState: () => McpHostBridgeState; getHostContext: () => McpHostContext | null; getHostCapabilities: () => McpHostCapabilities | null; isConnected: () => boolean; subscribe: (listener: (state: McpHostBridgeState) => void) => () => void; dispose: () => void; } interface MessageEventLike { source: unknown; data: unknown; } interface MessageTargetLike { postMessage: (message: unknown, targetOrigin: string) => void; } interface WindowLike extends MessageTargetLike { parent: MessageTargetLike; open?: (url: string, target?: string, features?: string) => unknown; addEventListener: (type: "message", listener: (event: MessageEventLike) => void) => void; removeEventListener: (type: "message", listener: (event: MessageEventLike) => void) => void; } export interface CreateMcpHostBridgeOptions { targetWindow?: WindowLike; requestTimeoutMs?: number; connectionTimeoutMs?: number; } export declare function createMcpHostBridge(options?: CreateMcpHostBridgeOptions): McpHostBridge;