mp_navigate
Navigate between pages in WeChat Mini Programs using methods like navigateTo, redirectTo, reLaunch, switchTab, and navigateBack to control page flow during development.
Instructions
在小程序内导航,支持 navigateTo、redirectTo、reLaunch、switchTab 和 navigateBack。
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| connection | No | ||
| path | No | ||
| query | No | ||
| transition | No | navigateTo | |
| waitMs | No |
Implementation Reference
- src/tools/application.ts:115-172 (handler)The async execute function implementing the core logic of mp_navigate: parses args, performs navigation (navigateTo, redirectTo, etc., or back) using miniProgram methods, optionally waits, and returns active page info.execute: async (rawArgs, context: ToolContext) => { const args = navigateParameters.parse(rawArgs ?? {}); const transition = args.transition ?? "navigateTo"; const overrides = args.connection; const waitMs = args.waitMs; const providedPath = args.path; return manager.withMiniProgram<ContentResult>( context.log, { overrides }, async (miniProgram) => { let url: string | undefined; let page; if (transition === "navigateBack") { page = await miniProgram.navigateBack(); } else { if (!providedPath) { throw new UserError( "参数 path 是必需的,除非 transition 是 navigateBack。" ); } url = buildUrl(providedPath, args.query); switch (transition) { case "navigateTo": page = await miniProgram.navigateTo(url); break; case "redirectTo": page = await miniProgram.redirectTo(url); break; case "reLaunch": page = await miniProgram.reLaunch(url); break; case "switchTab": page = await miniProgram.switchTab(url); break; default: throw new UserError(`不支持的 transition: ${transition}`); } } if (waitMs && page) { await page.waitFor(waitMs); } const activePage = page ?? (await miniProgram.currentPage()); return toTextResult( formatJson({ transition, url, activePage: activePage ? { path: activePage.path, query: activePage.query } : null, }) ); } );
- src/tools/application.ts:24-38 (schema)Zod schema for mp_navigate input parameters: connection, path (optional), query, transition (default navigateTo), waitMs (optional).const navigateParameters = connectionContainerSchema .extend({ path: z.string().trim().min(1).optional(), query: querySchema, transition: z .enum([ "navigateTo", "redirectTo", "reLaunch", "switchTab", "navigateBack", ]) .default("navigateTo"), waitMs: z.coerce.number().int().nonnegative().optional(), });
- src/tools/application.ts:53-63 (registration)Factory function creating array of application tools, including createNavigateTool(manager) which defines mp_navigate.export function createApplicationTools( manager: WeappAutomatorManager ): AnyTool[] { return [ createEnsureConnectionTool(manager), createNavigateTool(manager), createScreenshotTool(manager), createCallWxMethodTool(manager), createGetConsoleLogsTool(manager), ]; }
- src/tools.ts:7-13 (registration)Main tools factory that includes application tools (with mp_navigate) along with page and element tools.export function createTools(manager: WeappAutomatorManager): AnyTool[] { return [ ...createApplicationTools(manager), ...createPageTools(manager), ...createElementTools(manager), ]; }
- src/index.ts:17-17 (registration)Adds all tools (including mp_navigate) to the FastMCP server instance.server.addTools(createTools(manager));