Skip to main content
Glama

tauri_ipc_monitor

Monitor IPC calls between frontend and Rust backend in Tauri applications to capture invoke() calls and responses for debugging purposes.

Instructions

[Tauri Apps Only] Monitor Tauri IPC calls between frontend and Rust backend. Requires active tauri_driver_session. Captures invoke() calls and responses. This is Tauri-specific; for browser network monitoring, use Chrome DevTools MCP.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actionYesAction to perform: start or stop IPC monitoring
appIdentifierNoApp port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected.

Implementation Reference

  • Core handler functions for 'tauri_ipc_monitor': manageIPCMonitoring dispatches start/stop actions, which send specific commands to the Tauri MCP Bridge plugin via executeIPCCommand to enable/disable IPC traffic monitoring.
    export const ManageIPCMonitoringSchema = z.object({
       action: z.enum([ 'start', 'stop' ]).describe('Action to perform: start or stop IPC monitoring'),
       appIdentifier: z.union([ z.string(), z.number() ]).optional().describe(
          'App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected.'
       ),
    });
    
    // Keep individual schemas for backward compatibility if needed
    export const StartIPCMonitoringSchema = z.object({});
    export const StopIPCMonitoringSchema = z.object({});
    
    export async function manageIPCMonitoring(action: 'start' | 'stop', appIdentifier?: string | number): Promise<string> {
       if (action === 'start') {
          return startIPCMonitoring(appIdentifier);
       }
       return stopIPCMonitoring(appIdentifier);
    }
    
    export async function startIPCMonitoring(appIdentifier?: string | number): Promise<string> {
       try {
          const result = await executeIPCCommand({ command: 'plugin:mcp-bridge|start_ipc_monitor', appIdentifier });
    
          const parsed = JSON.parse(result);
    
          if (!parsed.success) {
             throw new Error(parsed.error || 'Unknown error');
          }
    
          return JSON.stringify(parsed.result);
       } catch(error: unknown) {
          const message = error instanceof Error ? error.message : String(error);
    
          throw new Error(`Failed to start IPC monitoring: ${message}`);
       }
    }
    
    export async function stopIPCMonitoring(appIdentifier?: string | number): Promise<string> {
       try {
          const result = await executeIPCCommand({ command: 'plugin:mcp-bridge|stop_ipc_monitor', appIdentifier });
    
          const parsed = JSON.parse(result);
    
          if (!parsed.success) {
             throw new Error(parsed.error || 'Unknown error');
          }
    
          return JSON.stringify(parsed.result);
       } catch(error: unknown) {
          const message = error instanceof Error ? error.message : String(error);
    
          throw new Error(`Failed to stop IPC monitoring: ${message}`);
       }
    }
  • Input validation schema for the 'tauri_ipc_monitor' tool, specifying 'action' ('start' or 'stop') and optional target app.
    export const ManageIPCMonitoringSchema = z.object({
       action: z.enum([ 'start', 'stop' ]).describe('Action to perform: start or stop IPC monitoring'),
       appIdentifier: z.union([ z.string(), z.number() ]).optional().describe(
          'App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected.'
       ),
    });
  • Tool registration entry for 'tauri_ipc_monitor' in the central tools registry, linking schema, handler, description, and annotations.
    {
       name: 'tauri_ipc_monitor',
       description:
          '[Tauri Apps Only] Monitor Tauri IPC calls between frontend and Rust backend. ' +
          'Requires active tauri_driver_session. Captures invoke() calls and responses. ' +
          'This is Tauri-specific; for browser network monitoring, use Chrome DevTools MCP.',
       category: TOOL_CATEGORIES.IPC_PLUGIN,
       schema: ManageIPCMonitoringSchema,
       annotations: {
          title: 'Monitor Tauri IPC',
          readOnlyHint: false,
          destructiveHint: false,
          idempotentHint: true,
          openWorldHint: false,
       },
       handler: async (args) => {
          const parsed = ManageIPCMonitoringSchema.parse(args);
    
          return await manageIPCMonitoring(parsed.action, parsed.appIdentifier);
       },
    },
  • Shared helper function used by IPC monitoring handlers to execute arbitrary Tauri IPC commands via the WebSocket connection to the MCP Bridge plugin.
    export async function executeIPCCommand(options: {
       command: string;
       args?: unknown;
       appIdentifier?: string | number;
    }): Promise<string> {
       try {
          const { command, args = {}, appIdentifier } = options;
    
          // Ensure we have an active session and are connected
          const client = await ensureSessionAndConnect(appIdentifier);
    
          // Send IPC command via WebSocket to the mcp-bridge plugin
          const response = await client.sendCommand({
             command: 'invoke_tauri',
             args: { command, args },
          });
    
          if (!response.success) {
             return JSON.stringify({ success: false, error: response.error || 'Unknown error' });
          }
    
          return JSON.stringify({ success: true, result: response.data });
       } catch(error: unknown) {
          const message = error instanceof Error ? error.message : String(error);
    
          return JSON.stringify({ success: false, error: message });
       }
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hypothesi/mcp-server-tauri'

If you have feedback or need assistance with the MCP directory API, please join our Discord server