Vibe Annotations
Hands visual notes left on localhost pages in Chrome to a coding agent so it can apply them
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
Opens the app, which asks before it adds the server.
claude mcp add --transport http tidewave http://localhost:5173/tidewave/mcp{
"mcpServers": {
"tidewave": {
"url": "http://localhost:5173/tidewave/mcp"
}
}
}{
"servers": {
"tidewave": {
"type": "http",
"url": "http://localhost:5173/tidewave/mcp"
}
}
}[mcp_servers.tidewave]
url = "http://localhost:5173/tidewave/mcp"gemini mcp add --scope user --transport http tidewave http://localhost:5173/tidewave/mcpTidewave 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.
| Runtime | Node.js 22.12+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Also |
|
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.
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.
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.
3 only read, 3 change things. A ? marks an optional parameter.
get_docsreference: stringget_source_locationreference: stringproject_eval changescode: stringarguments?: arrayjson?: booleanget_logstail: numbergrep?: stringlevel?: enumsince?: stringbrowser_eval changesaction: stringsid?: stringaction_inputs?: objectcreate_design_canvas changespath: string