MCP Integration

Let Claude Code, Codex, Gemini, Copilot and pi control Highwind through its MCP server.

Highwind includes an MCP server, highwind-mcp. Agents use it to list and control services, read logs, manage links, quick commands, views and tasks, and drive the browser panes. highwind-mcp calls Highwind's local REST API on 127.0.0.1 (port 9847 by default), which only accepts requests from your own Mac.

Turn on MCP

MCP is off until you turn it on. Nothing is written to an agent's config before that.

1

Open "Connect agents to Highwind"

Click Set Up on "Connect your agents" in the Getting Started checklist. The same sheet opens the first time you pick an agent from a service header.

2

Click Set Up

Highwind installs highwind-mcp to ~/.highwind/bin, installs the highwind skill to ~/.claude/skills and ~/.agents/skills, registers Highwind with the installed agents and starts the server.

3

Restart running agents

Agents load MCP servers when they start. Restart agents that were already running so they see the Highwind tools.

The server can also be switched on and off in Settings → Advanced → MCP Integration ("MCP API server"), which shows the port and status. Turning it on there starts only the server. The install and registration steps run at the next launch.

Which agents are registered

  • Claude Code: claude mcp add -s user highwind -- <highwind-mcp>
  • Codex: codex mcp add highwind -- <highwind-mcp>
  • Gemini: gemini mcp add -s user highwind <highwind-mcp>
  • Copilot: copilot mcp add highwind -- <highwind-mcp>
  • pi: pi mcp add highwind -- <highwind-mcp>
  • OpenCode is not registered automatically, because opencode mcp add is interactive. You can add ~/.highwind/bin/highwind-mcp to OpenCode yourself.

With MCP on, Highwind checks these registrations and updates the highwind skill at each launch. The skill files are replaced when the bundled version is newer, so put your own additions in a separate skill.

Highwind tools (34)

In tool names, "project" means a service. Tools that target a service accept its name, ID, "project/service" or working directory, plus an optional workspace when names repeat across workspaces.

  • Read: list_workspaces, list_projects, list_layouts, get_layout_projects, get_project_logs, check_errors (scans running services for error logs and browser console errors), help.
  • Control: start_project, stop_project, restart_project, restart_layout (restarts every service in a view).
  • Links: get_project_links, add_project_link, update_project_link, delete_project_link.
  • Quick commands: get_quick_commands, run_quick_command, add_quick_command, update_quick_command, delete_quick_command.
  • Create and edit: update_project (name, command, working directory, port, environment), create_workspace, create_project, create_layout, add_project_to_layout.
  • Tasks: list_tasks, add_task, add_tasks, update_task, move_task, delete_task, archive_task.
  • Sessions: report_session, and report_claude_session as an older alias.

Browser tools (21)

  • browser_tabs: list, open, switch or close tabs.
  • browser_navigate: load a URL, or go back, forward or reload.
  • browser_read_page: the page as a tree of elements with refs (e1, e2, ...).
  • browser_find: find elements by CSS selector, text or ARIA role.
  • browser_get_text: readable text of the page or one element.
  • browser_screenshot: the visible area, one element, or the full page.
  • browser_inspect: box model, computed styles, matching CSS rules and HTML of an element.
  • browser_click: click an element or a point.
  • browser_hover: move the cursor over an element and fire mouse-over events.
  • browser_type: type into an input, textarea or contenteditable element.
  • browser_press_key: press keys or shortcuts such as Enter or cmd+a.
  • browser_form_input: set selects, checkboxes, radios, ranges, dates and other inputs.
  • browser_scroll: scroll the page or an element.
  • browser_upload: attach local files to a file input.
  • browser_wait_for: wait for text, an element state, the DOM to settle, or a fixed time (up to 30 seconds).
  • browser_evaluate: run JavaScript in the page.
  • browser_console: read console messages since the page loaded.
  • browser_network: list fetch/XHR requests, or one request with its bodies.
  • browser_dialog: list alert/confirm/prompt dialogs, or set how the next one is answered.
  • browser_resize: emulate a phone or tablet viewport.
  • browser_storage: read or change localStorage, sessionStorage or cookies.

Opening other sites, clicking and typing, and running JavaScript follow the approval policy in Settings → Browser Agents. See Browser Panes.

Example prompts

"Add this project to Highwind"
"Restart the API and show me its errors"
"Check all services for errors"
"Open localhost:3000, click Sign in and take a screenshot"
"Read the browser console and fix the error"
"Create a view with the frontend, the API and a browser"
"Add a task to fix the login redirect"

Skip approval prompts in Claude Code

To let Claude Code use every Highwind tool without asking, add this allow rule to ~/.claude/settings.json:

{
  "permissions": {
    "allow": ["mcp__highwind__*"]
  }
}

REST API

The same actions are available as a JSON REST API on http://127.0.0.1:9847 while MCP is on, for your own scripts. For example, GET /projects lists services, POST /projects/<name>/restart restarts one, and GET /projects/<name>/logs?errors_only=true reads its errors. The port can be changed in Settings → Advanced.