Skip to main content
Glama
yfmeii

WeChat Mini Program Dev MCP

by yfmeii

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
NameRequiredDescriptionDefault
connectionNo
pathNo
queryNo
transitionNonavigateTo
waitMsNo

Implementation Reference

  • 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,
            })
          );
        }
      );
  • 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(),
      });
  • 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));

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/yfmeii/weapp-dev-mcp'

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