Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To integrate the Model Context Protocol (MCP) with Windsurf, open File > Preferences > Windsurf Settings > Manage MCPs, choose View raw config, edit ~/.codeium/windsurf/mcp_config.json, add a server under the top-level mcpServers object, save, and click Refresh in the MCP controls. Cascade can then discover and call the tools that server exposes.

The exact command, arguments, credentials, and authentication flow come from each server’s current documentation. The examples below show the configuration shape and current GitHub and Azure procedures without treating them as interchangeable.

What MCP integration does in Windsurf

Model Context Protocol (MCP) gives Windsurf’s Cascade client a standard way to connect to external servers that expose tools and data. Windsurf launches or connects to the server described in its MCP configuration, discovers the available tools, and makes those tools available to Cascade.

An MCP entry is not an API definition by itself. It tells Windsurf how to start or reach a particular server. The server’s own documentation remains authoritative for package names, command-line arguments, transport settings, required environment variables, and sign-in steps.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Before you configure a server

  • Install Windsurf and confirm that Cascade works normally.
  • Read the provider’s current MCP installation guide. Package names and Windsurf labels can change between releases.
  • Install any runtime the server requires, such as Node.js, Docker, or a cloud CLI.
  • Prepare credentials through environment variables, an operating-system credential store, or the provider’s sign-in flow. Do not commit tokens to a project repository.
  • Know whether the server is local (usually a standard-input/standard-output process) or hosted and requires a remote endpoint and a different transport configuration.

Open Windsurf’s MCP configuration

  1. In Windsurf, select File > Preferences > Windsurf Settings > Manage MCPs.
  2. Select View raw config. This opens the JSON file Windsurf uses for MCP definitions.
  3. Confirm that the file is ~/.codeium/windsurf/mcp_config.json in your home directory. On Windows, use the equivalent user-home path shown by Windsurf rather than creating a second file in the project.
  4. Keep mcpServers as the top-level JSON key. Add each server as a uniquely named property beneath it.

A minimal local-server entry has this form:

{
  "mcpServers": {
    "example": {
      "command": "npx",
      "args": ["-y", "PACKAGE_NAME"],
      "env": {
        "EXAMPLE_API_KEY": "YOUR_KEY"
      }
    }
  }
}

Replace PACKAGE_NAME, the command, and the environment-variable names with values from the server’s documentation. JSON requires double quotes, commas between properties, and no trailing comma after the final property.

Add a local MCP server step by step

  1. Copy the server’s documented command and arguments into a new named entry. For an npx-based server, the command is commonly npx and the arguments include -y followed by the package name.
  2. Add only the environment variables the server requires. Keep secret values out of source-controlled files; use a shell environment, an operating-system secret manager, or the provider’s login flow where supported.
  3. Save mcp_config.json and validate that it is syntactically valid JSON. A missing comma or an extra comma can prevent every server from loading.
  4. Return to Manage MCPs and click the Refresh control in the MCP panel or toolbar. Saving the file alone does not guarantee that Cascade has reloaded it.
  5. Check that the server is listed and that its expected tools appear. Send a small, read-only prompt that invokes one known operation before attempting changes or bulk actions.

Connect the GitHub MCP Server

GitHub’s official Windsurf guidance offers two supported routes:

Install from the Windsurf plugin store

Open Manage MCPs, find GitHub MCP Server in the plugin store, and follow its installation and authentication prompts. This route lets the provider maintain the launch details as they change.

Configure GitHub’s Docker image manually

The manual route uses the official image ghcr.io/github/github-mcp-server. The exact Docker arguments can change, so copy the current command from GitHub’s guide and place the required token in an environment variable. The configuration pattern is:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
{
  "mcpServers": {
    "GitHub": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_TOKEN"
      }
    }
  }
}

Use the current GitHub documentation to confirm the image arguments and token permissions for the operations you intend to perform. Save, click Refresh (🔄) in the MCP toolbar, and verify that the GitHub tools are listed.

Do not present @modelcontextprotocol/server-github as the current installation route: GitHub’s guide marks that npm package deprecated as of April 2025.

Connect the Azure MCP Server

Microsoft Learn documents this Windsurf entry for the Azure MCP Server:

{
  "mcpServers": {
    "Azure MCP Server": {
      "command": "npx",
      "args": [
        "-y",
        "@azure/mcp@latest",
        "server",
        "start"
      ]
    }
  }
}

The Azure MCP Server uses MCP to standardize connections between AI applications and external tools and data sources, allowing AI systems to perform operations that are context-aware of Azure resources. Before asking Cascade to use it, authenticate with one of the methods Microsoft supports: Azure CLI, Azure Developer CLI, Visual Studio, or Visual Studio Code. The JSON entry starts the server; it does not replace Azure authentication.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Install or update the Azure tooling required by Microsoft’s current guide.
  2. Sign in with the supported toolchain you selected.
  3. Add the entry above to mcp_config.json.
  4. Save and refresh the MCP controls.
  5. Ask Cascade for a harmless operation that reads a resource you can safely inspect, then confirm the result in Azure.

Local command versus hosted MCP servers

Use these questions when deciding how to configure another provider:

Question Local command Hosted endpoint
How does Windsurf connect? Starts a process such as npx or Docker and communicates over its documented local transport. Connects to a provider URL using the transport and endpoint fields documented by that provider.
Where is authentication handled? Often an environment token or an already-authenticated CLI. Often OAuth, an API token, or provider-managed credentials.
Who maintains launch details? You must update the command, image, or package when the vendor changes it. The provider generally controls the service, but you still manage access and endpoint settings.
What should you verify? Command availability, arguments, runtime, environment, and logs. Endpoint, transport, network access, TLS, authentication, and allowed tools.

Never invent a transport field or URL. If a provider’s guide does not show a setting, do not add one simply because another MCP server uses it.

Why a server shows no tools

The server is not listed

Reopen Manage MCPs and View raw config. Confirm that Windsurf is reading ~/.codeium/windsurf/mcp_config.json, that mcpServers is at the top level, and that the JSON parses. A malformed entry can stop the configuration from loading.

The server is listed but exposes no tools

Check the provider’s current command, arguments, credentials, and required transport. Then save the file and refresh the MCP toolbar. A process that starts but cannot authenticate may appear differently from one that never starts, so inspect the server’s own logs or diagnostic output when available.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Authentication fails

Verify that the token is valid, has the required permissions, and is actually available to the process Windsurf starts. For Azure, complete the supported Azure CLI, Azure Developer CLI, Visual Studio, or Visual Studio Code sign-in. For GitHub, confirm the personal access token environment variable and the permissions required by the requested operation.

The command cannot be found

Run the command outside Windsurf in the same user account, check that Node.js or Docker is installed, and confirm that the executable is on the PATH visible to Windsurf. A terminal that has a custom shell profile may have a different PATH from the graphical application.

Changes appear to do nothing

Click Refresh after every edit. If the old server remains, close and reopen the MCP management view or restart Windsurf, then verify that only one entry with the intended name exists.

A package instruction is obsolete

Prefer the vendor’s current official image or package. GitHub’s explicit deprecation of @modelcontextprotocol/server-github illustrates why copied tutorials can fail even when their JSON is valid.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Security and operational practices

  • Keep tokens in environment variables or provider sign-in flows, not in a checked-in configuration file.
  • Grant the least privilege needed for the tools you plan to call.
  • Start with read-only prompts and inspect the tool name and arguments before approving a write operation.
  • Use separate credentials for development and production resources.
  • Record which provider documentation and package version you used so future updates are deliberate rather than accidental.

Or skip the browser setup

If your workflow needs screenshots for documentation, testing, or an AI agent, ScreenshotNeo provides an MCP server and a one-request screenshot API at ScreenshotNeo. It accepts cookie and consent banners like a visitor, then removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be disabled. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and whether the request was billed.

Use the API documentation at https://screenshotneo.com/docs/ for the full option list and MCP setup. A basic cURL call is:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

ScreenshotNeo also supports full-page captures with lazy images loaded, CSS-selector elements, dark mode, device presets and custom viewports, retina scale, PDF paper and page-range controls, custom CSS and JavaScript, clicks before capture, selector waits, delays, network-idle waits, blocking ads or resource types, custom headers and cookies, user agents, Authorization, timezone and geolocation, transparent backgrounds, resizing, selectable cache TTLs, signed image links, asynchronous jobs with signed webhooks, bulk capture for up to 100 URLs per call, a usage API, and an OpenAPI specification. Its parameter names are compatible with those used by other screenshot APIs, which can simplify migration.

An MCP server lets Claude, Cursor, or another MCP client call take_screenshot, get_page_info, and capture_pdf. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots. Sign up free for ScreenshotNeo.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Final verification checklist

  • The file is ~/.codeium/windsurf/mcp_config.json.
  • mcpServers is the top-level key and the JSON parses.
  • The server command, arguments, package or image, and transport match the vendor’s current guide.
  • Credentials are supplied safely and the required cloud or provider login is complete.
  • You saved the file and clicked Refresh in Windsurf’s MCP controls.
  • The expected tools appear and a low-risk test succeeds.

Frequently Asked Questions

Can I put Windsurf MCP settings in a project file?

Windsurf’s documented user configuration is ~/.codeium/windsurf/mcp_config.json. Keep credentials out of any project file that could be committed or shared.

Does adding an MCP entry authenticate me automatically?

No. The entry starts or locates the server; GitHub tokens and Azure’s supported CLI or IDE sign-in must be configured separately.

Why should I refresh after saving mcp_config.json?

Cascade reloads the MCP definitions through the MCP controls. Saving the file without clicking Refresh can leave the previous server state active.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.