Windsurf supports MCP servers. browser.city runs a hosted MCP endpoint, so you can give Windsurf real browser tools without running a local server.
1) Set your API key
Set BROWSERCITY_API_KEY in your environment.
2) Add browser.city to Windsurf MCP config
Edit:
~/.codeium/windsurf/mcp_config.json
Add a remote server entry:
{
"mcpServers": {
"browsercity": {
"serverUrl": "https://mcp.browser.city/mcp",
"headers": {
"Authorization": "Bearer $BROWSERCITY_API_KEY"
}
}
}
}
Notes:
- Keep secrets out of the file by using env vars (
$BROWSERCITY_API_KEY). - After changing the config, restart Windsurf so it reloads MCP servers.
3) Try it
Ask Windsurf:
Open a browser with browsercity, navigate to a page, and return its markdown.
4) Practical tip: use REST for pure extraction
If you just need markdown and don’t need interaction, the Request API is cheaper and simpler than tool-driving:
request.ts
const res = await fetch("https://api.browser.city/v1/requests", { method: "POST", headers: { Authorization: `Bearer ${process.env.BROWSERCITY_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ url: "https://example.com", markdown: true }),}).then((r) => r.json());console.log(res.content);import osimport requestsapi_key = os.environ["BROWSERCITY_API_KEY"]res = requests.post( "https://api.browser.city/v1/requests", headers={"Authorization": f"Bearer {api_key}"}, json={"url": "https://example.com", "markdown": True},).json()print(res["content"])using System.Net.Http.Headers;using System.Net.Http.Json;var apiKey = Environment.GetEnvironmentVariable("BROWSERCITY_API_KEY")!;var http = new HttpClient();http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);var res = await http.PostAsJsonAsync( "https://api.browser.city/v1/requests", new { url = "https://example.com", markdown = true });Console.WriteLine(await res.Content.ReadAsStringAsync());import java.net.URI;import java.net.http.*;public class Request { public static void main(String[] args) throws Exception { var apiKey = System.getenv("BROWSERCITY_API_KEY"); var http = HttpClient.newHttpClient(); var req = HttpRequest.newBuilder() .uri(URI.create("https://api.browser.city/v1/requests")) .header("Authorization", "Bearer %s".formatted(apiKey)) .POST(HttpRequest.BodyPublishers.ofString( "{\"url\":\"https://example.com\",\"markdown\":true}")) .build(); var res = http.send(req, HttpResponse.BodyHandlers.ofString()); System.out.println(res.body()); }}