Aero WebMCP for Visual Studio Code
Share live workspace and editor context with browser agents through WebMCP. Aero WebMCP is a browser extension for vscode.dev and VS Code for the Web.
Choose a workspace folder and explicitly permit open documents to share their metadata, dirty/version state, cursors, and selections. Access starts disabled and is read-only.
Build and test
Use Node 24 and authenticated GitHub CLI access to the pinned Aero shared tooling:
npm run tooling:setup
npm ci --ignore-scripts
npm run check
npx playwright install chromium
npm run test:web
npm run package:vsix
npm run check:vsix
test:web follows AeroPy's @vscode/test-web setup against a pinned real VS Code browser extension host. It runs both default Chromium and native WebMCP feature configurations, retains normal browser security, and reports native registration separately from external discovery. Its disposable workspace includes a virtual filesystem and unsaved edits. Direct internal calls and local registration never count as an external-agent pass.
The GitHub workflows use the same pinned Aero shared CI, preview patch versioning, release policy and stable promotion route as AeroPy. Add VSCE_TOKEN to this repository's Actions secrets for Marketplace publishing after validated releases. CI artifacts and GitHub release assets contain vscode-webmcp.vsix; there is no Cloudflare or public tunnel dependency.
Architecture
The extension registers webmcp_get_editor_context from an extension-owned webview and forwards requests through supported VS Code messaging to the worker extension host. src/webview/registry.ts owns native registration and lifetime signals; transport.ts owns correlated requests, cancellation and deadlines; host.ts enforces session and access state; editor.ts reads supported live VS Code APIs. Scope is the selected workspace folder plus explicitly permitted open documents. Closing a document revokes its grant. Logs contain only bounded operation names and outcomes.
The current WebMCP draft uses document.modelContext.registerTool(tool, {signal}). The UI reports absent support and exact registration errors. It never installs a registry shim. Webview hide, reload and disposal disable access; re-enabling requires a human action. Explicit document grants end when their last editor tab closes, even when VS Code retains the text model; pending permission choices cannot revive an ended lifetime.