Skip to content

API Reference ​

Core Types ​

WebMCPToolDefinition ​

Defines a tool that can be registered with a WebMCP server.

ts
interface WebMCPToolDefinition {
  name: string;
  description: string;
  inputSchema: {
    type: 'object';
    properties?: Record<string, any>;
    required?: string[];
  };
}

WebMCPToolHandler ​

Function that executes when a tool is called.

ts
type WebMCPToolHandler = (args: Record<string, any>) => Promise<any> | any;

WebMCPTransport ​

Abstract transport interface for all communication channels.

ts
interface WebMCPTransport {
  connect(): Promise<void>;
  disconnect(): Promise<void>;
  send(message: WebMCPMessage): Promise<void>;
  onMessage(handler: (message: WebMCPMessage) => void): void;
  onConnect?(handler: () => void): void;
  onDisconnect?(handler: () => void): void;
  isConnected(): boolean;
}

WebMCPRequest ​

JSON-RPC 2.0 request message.

ts
interface WebMCPRequest {
  jsonrpc: '2.0';
  id: string | number;
  method: string;
  params?: Record<string, any>;
}

WebMCPResponse ​

JSON-RPC 2.0 response message.

ts
interface WebMCPResponse {
  jsonrpc: '2.0';
  id: string | number;
  result?: any;
  error?: {
    code: number;
    message: string;
    data?: any;
  };
}

Classes ​

WebMCPClient ​

Agent-side client for discovering and calling tools.

ts
import { WebMCPClient } from '@thestudioxi/webmcp';

const client = new WebMCPClient({
  transport: myTransport,
  timeoutMs: 10000,
});
MethodSignatureDescription
connect() => Promise<void>Open transport connection
disconnect() => Promise<void>Close transport connection
listTools() => Promise<WebMCPToolDefinition[]>List all registered tools
callTool(name: string, args?: Record<string, any>) => Promise<any>Execute a tool

WebMCPServer ​

Tool host and JSON-RPC dispatcher.

ts
import { WebMCPServer } from '@thestudioxi/webmcp';

const server = new WebMCPServer({ transport: myTransport });
MethodSignatureDescription
registerTool(definition: WebMCPToolDefinition, handler: WebMCPToolHandler) => voidRegister a tool
start() => Promise<void>Start the server (connects transport)
stop() => Promise<void>Stop the server (disconnects transport)

WebMCPBrowserBridge ​

Frontend SDK for browser-side tool hosting.

ts
import { createFrontendBridge } from '@thestudioxi/webmcp';

const bridge = createFrontendBridge({
  transport: myTransport,
  autoRegisterStarterKit: true,
});
MethodSignatureDescription
registerTool(definition, handler) => thisRegister a custom tool
registerCustomTool(name, description, inputSchema, handler) => thisRegister with inline args
registerStarterKit() => thisRegister all starter kit tools
start() => Promise<void>Start the bridge
stop() => Promise<void>Stop the bridge

WebMCPAgentClient ​

Backend SDK for server-side agent integration.

ts
import { createBackendAgentClient } from '@thestudioxi/webmcp';

const agent = createBackendAgentClient({ transport: myTransport });
MethodSignatureDescription
connect() => Promise<void>Connect to WebMCP server
disconnect() => Promise<void>Disconnect
getAvailableTools() => Promise<WebMCPToolDefinition[]>List available tools
executeTool(name: string, args?: Record<string, any>) => Promise<any>Execute a tool
getVercelAITools() => Promise<Record<string, VercelAITool>>Get tools in Vercel AI SDK format
getRawClient() => WebMCPClientAccess the underlying client

Transports ​

MessageChannelTransport ​

For in-page communication (iframes, workers, content scripts).

ts
import { MessageChannelTransport } from '@thestudioxi/webmcp';

const { port1, port2 } = new MessageChannel();
const transport = new MessageChannelTransport(port1);

WebSocketTransport ​

For local network IPC over WebSocket.

ts
import { WebSocketTransport } from '@thestudioxi/webmcp';

const transport = new WebSocketTransport({
  url: 'ws://localhost:8765',  // client mode
  // or
  port: 8765,                  // server mode
  role: 'client' | 'server',
});

WebStandardHttpTransport ​

For HTTP-based request/response communication.

ts
import { WebStandardHttpTransport } from '@thestudioxi/webmcp';

const transport = new WebStandardHttpTransport({
  corsOrigin: '*',
  requestTimeoutMs: 30000,
});
MethodSignatureDescription
handleRequest(request: Request) => Promise<Response>Process an HTTP request

createWebMCPHttpHandler(transport) ​

Helper that returns a fetch-compatible handler:

ts
import { createWebMCPHttpHandler } from '@thestudioxi/webmcp';

const handler = createWebMCPHttpHandler(transport);
// handler: (request: Request) => Promise<Response>

Adapter Functions ​

createExpressWebMCPMiddleware(transport) ​

Creates Express.js middleware. Returns (req, res, next) => void.

createHonoWebMCPHandler(transport) ​

Creates a Hono route handler. Returns (c: Context) => Promise<Response>.

WebMCPAdapter ​

Self-contained adapter for NestJS and other server-side frameworks.

webmcpToVercelAITools(tools, execute?) ​

Converts WebMCP tool definitions to Vercel AI SDK format.

jsonSchemaObjectToZod(inputSchema) ​

Converts JSON Schema to Zod schema for Vercel AI SDK compatibility.

Released under the MIT License.