MCP Directory

How to add MCP AOAI Web Browsing (browser-navigator) to Windsurf

Minimal MCP server that drives a web browser via Playwright, with an Azure OpenAI / OpenAI client bridge. Paste the config into ~/.codeium/windsurf/mcp_config.json and restart Windsurf.

Last updated June 14, 2026 · 33 · stdio · apikey

Windsurf config for MCP AOAI Web Browsing (browser-navigator)

pip install uv && uv sync
{
  "mcpServers": {
    "mcp-aoai-web-browsing-browser-navigator": {
      "command": "uv",
      "args": [
        "run",
        "fastmcp",
        "run",
        "./server/browser_navigator_server.py:app"
      ],
      "env": {
        "AZURE_OPEN_AI_ENDPOINT": "...",
        "AZURE_OPEN_AI_API_KEY": "...",
        "AZURE_OPEN_AI_DEPLOYMENT_MODEL": "...",
        "AZURE_OPEN_AI_API_VERSION": "..."
      }
    }
  }
}

Setup steps

  1. 1Open Windsurf → Cascade → the hammer/MCP icon → Configure (or edit ~/.codeium/windsurf/mcp_config.json).
  2. 2Paste the MCP AOAI Web Browsing (browser-navigator) config below.
  3. 3Fill in placeholder secrets, then save.
  4. 4Click Refresh in the MCP panel.
  5. 5MCP AOAI Web Browsing (browser-navigator)'s tools become available to Cascade.

Before you start

  • Python with uv (pip install uv, then uv sync)
  • Playwright browser(s) installed
  • Azure OpenAI credentials (AZURE_OPEN_AI_ENDPOINT, AZURE_OPEN_AI_API_KEY, AZURE_OPEN_AI_DEPLOYMENT_MODEL, AZURE_OPEN_AI_API_VERSION) — or standard OpenAI (OPENAI_API_KEY, OPENAI_MODEL)

What MCP AOAI Web Browsing (browser-navigator) can do in Windsurf

playwright_navigate

Navigate to a URL (supports timeout and wait_until options).

playwright_screenshot

Take a screenshot of the current page or a specific element.

playwright_click

Click an element on the page by CSS selector.

playwright_fill

Fill out an input field identified by a CSS selector.

playwright_select

Select an option in a <select> element by CSS selector and value.

playwright_hover

Hover over an element on the page by CSS selector.

playwright_evaluate

Execute arbitrary JavaScript in the browser console.

extract_selector_by_page_content

Use the LLM to infer a CSS selector that best matches a user request from the current page's HTML content.

Security

Requires Azure OpenAI (or OpenAI) credentials supplied via environment variables (e.g. AZURE_OPEN_AI_API_KEY / OPENAI_API_KEY). Keep these out of source control — rename .env.template to .env or inject them via the client's env block. The playwright_evaluate tool executes arbitrary JavaScript in the controlled browser, so only point it at trusted pages.

MCP AOAI Web Browsing (browser-navigator) + Windsurf FAQ

Where is the Windsurf config file?

Windsurf reads MCP servers from ~/.codeium/windsurf/mcp_config.json. Paste the MCP AOAI Web Browsing (browser-navigator) config there under the "mcpServers" key and restart the client.

Is MCP AOAI Web Browsing (browser-navigator) safe to use with Windsurf?

Requires Azure OpenAI (or OpenAI) credentials supplied via environment variables (e.g. AZURE_OPEN_AI_API_KEY / OPENAI_API_KEY). Keep these out of source control — rename .env.template to .env or inject them via the client's env block. The playwright_evaluate tool executes arbitrary JavaScript in the controlled browser, so only point it at trusted pages.

Does it work with standard OpenAI, or only Azure OpenAI?

Both. The default config targets Azure OpenAI, but the client bridge also supports standard OpenAI via get_openai_llm_config() and OPENAI_API_KEY / OPENAI_MODEL environment variables.

Can I use it with Claude Desktop or Claude Code instead of the bundled client?

Yes. The README provides mcpServers config for Claude Desktop (claude_desktop_config.json) and Claude Code (.claude/mcp.json), plus a VS Code (.vscode/mcp.json) variant, all launching the server over stdio with uv run fastmcp.

Why does it require uv specifically?

The author notes that during the December 2024 development phase the MCP CLI did not yet fully support pip or poetry, so the project is initialized and run with uv.

View repo Full MCP AOAI Web Browsing (browser-navigator) page