menu
Control and toggle menus in VRChat using the MCP OSC server, enabling AI-assisted avatar interactions and settings adjustments in virtual reality environments.
Instructions
Toggle Menu.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- Core handler function in InputTools class that executes the menu toggle by sending QuickMenuToggleLeft input press and release via WebSocket client.public async menu(ctx?: ToolContext): Promise<string> { if (ctx) { await ctx.info('Menu'); } try { // Send jump input const success = await this.wsClient.sendInput('QuickMenuToggleLeft', 1.0); if (!success) { return 'Failed to Menu'; } // Short delay for button press await delay(100); // Release jump button const releaseSuccess = await this.wsClient.sendInput('QuickMenuToggleLeft', 0.0); if (!releaseSuccess) { return 'Menu initiated but failed to release button'; } return 'Menu'; } catch (error) { const errorMsg = `Error Menu: ${error instanceof Error ? error.message : String(error)}`; logger.error(errorMsg); return errorMsg; } }
- packages/mcp-server/src/server.ts:557-576 (registration)MCP tool registration for 'menu' tool, which creates a ToolContext and delegates execution to inputTools.menu().server.tool( 'menu', 'Toggle Menu.', {}, async (_, extra) => { try { const ctx = createToolContext(extra); const result = await inputTools.menu(ctx); return { content: [{ type: 'text', text: result }] }; } catch (error) { return { content: [{ type: 'text', text: `Error jumping: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } } );