Tidewave

Runtime tools for coding agents working on Vite and TanStack Start apps in development

By Tidewave TypeScript Local · Streamable HTTP Developer toolsBrowser automation

55 popularity score ★ 38 ↓ 22k/wk

Connect your client

Local (once it is running)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add --transport http tidewave http://localhost:5173/tidewave/mcp
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "tidewave": {
      "url": "http://localhost:5173/tidewave/mcp"
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "tidewave": {
      "type": "http",
      "url": "http://localhost:5173/tidewave/mcp"
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.tidewave]
url = "http://localhost:5173/tidewave/mcp"
Gemini CLITerminal
gemini mcp add --scope user --transport http tidewave http://localhost:5173/tidewave/mcp

What it does

Tidewave JS is the JavaScript member of the Tidewave family from Dashbit. You add it to a Vite or TanStack Start project as a dev server plugin, and it gives a coding agent a view into the running app. The agent can run JavaScript or TypeScript inside the app's runtime, read the console output the server writes, look up docs and types for a symbol at the exact version the project has installed, and get the file where a module or function is defined so it can open that file instead of searching for it.

The MCP endpoint lives at /tidewave/mcp on the dev server's own port and speaks streamable HTTP. As of 0.10.0 there is no stdio mode any more. The tidewave command on npm only installs the plugin and prints docs or source paths in a terminal (src/cli/index.ts has install, docs and source, nothing else).

The source registers more tools than the README lists. Besides the four documented ones, src/mcp.ts adds browser_eval, which acts in a browser tab connected to the Tidewave control page, and create_design_canvas, which writes a new HTML design file. A client can hide those two by adding ?include_browser_tools=false to the address. get_logs only appears once the plugin has patched the console. The endpoint is stateless, accepts only POST, and turns away any request that carries an Origin header with a 403 (src/http/handlers/mcp.ts), so a client running inside a web page cannot call it.

What it needs

RuntimeNode.js 22.12+
Runs onmacOS, Windows, Linux
Also
  • The project's Vite or TanStack Start dev server running with the tidewave plugin added

Run `npx tidewave install` in the project (or add the tidewave dev dependency and the tidewave/vite-plugin to vite.config by hand; TanStack Start also needs @tanstack/devtools-vite). Then start the dev server and point the client at http://localhost:<port>/tidewave/mcp as an http (streamable) server. The address shown uses 5173, Vite's usual port, so change it if your app runs elsewhere. browser_eval also needs a browser open on the app's Tidewave control page.

Limits

  • Not covered Supports Vite with React or Vue and TanStack Start with React, during development only
  • Not covered No stdio mode since the CLI dropped `tidewave mcp`: the server is only reachable over HTTP from a running dev server
  • Limit Answers only localhost requests unless the plugin option allowRemoteAccess is set
  • Limit The /tidewave/mcp endpoint accepts POST only and refuses any request with an Origin header (403)
  • Limit project_eval takes imports only as dynamic `await import(...)`, and long synchronous code blocks the app server
  • Limit In workerd setups, or before the app has served a request, project_eval runs in the Vite process without the app's in-memory data
  • Limit create_design_canvas refuses a path that is not absolute, does not end in .html, or already exists
  • Limit create_design_canvas fetches its template from https://tidewave.ai unless another client URL is configured

Works only with Vite (React or Vue) and TanStack Start with React, and only in development. The stdio command gives three tools: no logs, no browser control and no design canvas. The HTTP endpoint answers only requests from localhost unless allowRemoteAccess is set, and checks the Origin header against allowedOrigins (by default Vite's configured host and port). project_eval accepts imports only as dynamic `await import(...)` and times out after 30 seconds unless a different `timeout` is passed. create_design_canvas refuses a path that is not absolute, does not end in .html, or already exists, and fetches its template from https://tidewave.ai unless another client URL is configured.

Who it suits

Suits JavaScript developers on Vite or TanStack Start who want their coding agent to try code against the live app, read its logs and look up dependency docs at the pinned version rather than guessing. It needs the dev server running, so it is no help for a project you only want to browse. Since 0.10.0 there is no stdio way to run it, so clients that can only start a local command and cannot connect to an HTTP address will not work with it. Projects on other JavaScript stacks (Next.js, plain Node servers without Vite) are not covered by this package.

Tools 6

3 only read, 3 change things. A ? marks an optional parameter.

get_docs
Returns docs and types for a module or symbol at the version the project usesreference: string
get_source_location
Gives the file path where a module, class, function or method is definedreference: string
project_eval changes
Runs JavaScript or TypeScript inside the app runtime and returns the result and stdoutcode: stringarguments?: arrayjson?: boolean
get_logs
Returns recent console entries from the dev server, filterable by level, time and regextail: numbergrep?: stringlevel?: enumsince?: string
browser_eval changes
Runs actions in a browser tab connected to the Tidewave control pageaction: stringsid?: stringaction_inputs?: object
create_design_canvas changes
Creates a new HTML file at an absolute path for design explorationspath: string

Similar servers