xmcp
Version:
The TypeScript MCP framework
44 lines (43 loc) • 2.36 kB
TypeScript
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;