Skip to content

Ecosystem

MCP server

Give Claude, Cursor, VS Code and other agents the whole web through the Model Context Protocol, hosted or over stdio.

Vermin ships a Model Context Protocol server, so agents can scrape, crawl, map, search, extract and sniff out brands by themselves. They use your credits and get the same results as the API. There are two ways to run it, and both expose the same tools:

WhereAuth
Hosted (recommended)https://mcp.vermin.dev/mcp (Streamable HTTP)Sign in with OAuth, or send an API key as a bearer token
Legacy SSEhttps://mcp.vermin.dev/sseSame, for older clients that only speak HTTP+SSE
Localnpx -y vermin-mcp (stdio)VERMIN_API_KEY environment variable

Hosted#

Add https://mcp.vermin.dev/mcp as a remote server. There's nothing to install and nothing to keep updated.

Sign in with OAuth#

Clients that support MCP OAuth (Claude, Claude Code, Cursor, VS Code and others) open a browser the first time they connect:

  1. Vermin's MCP server asks you to confirm the client connecting to it.
  2. You sign in to Vermin, pick an organization and click Approve. Only owners and admins can approve, because this creates an API key.
  3. Vermin creates a key named MCP: <client name> in that organization and hands it straight to the MCP server. The key never passes through your browser or the client.
  4. The client gets an access token (valid 1 hour, refreshed automatically for up to 90 days).

To disconnect a client, revoke its MCP: … key on the API keys page. Its next refresh fails and it has to sign in again. The key is billed and rate-limited like any other key in the org and counts toward the org's 50 active keys.

Or use an API key#

To skip the browser, send a key as a header: Authorization: Bearer vmn_live_…. This is handy for CI, headless agents or clients without OAuth support. Create a key just for the agent so you can revoke it on its own.

Local (stdio)#

Want to run it yourself? The same server runs over stdio:

bash
VERMIN_API_KEY=vmn_live_… npx -y vermin-mcp
Variable / flagDefault
VERMIN_API_KEY / --api-keynoneRequired.
VERMIN_API_URL / --api-urlhttps://api.vermin.devPoint at another API, e.g. a local worker on http://localhost:8787.

Logs go to stderr, because stdout is the MCP channel.

Client setup#

Replace vmn_live_… with your key. The hosted examples below use OAuth unless they show a header.

Claude Code#

claude mcp add --transport http vermin https://mcp.vermin.dev/mcp

Claude Desktop#

For hosted, go to Settings → Connectors → Add custom connector, enter https://mcp.vermin.dev/mcp and sign in when prompted. To run it locally, edit claude_desktop_config.json (Settings → Developer → Edit Config):

claude_desktop_config.json
{
  "mcpServers": {
    "vermin": {
      "command": "npx",
      "args": ["-y", "vermin-mcp"],
      "env": { "VERMIN_API_KEY": "vmn_live_…" }
    }
  }
}

Cursor#

Edit ~/.cursor/mcp.json, or .cursor/mcp.json in a project:

{
  "mcpServers": {
    "vermin": { "url": "https://mcp.vermin.dev/mcp" }
  }
}

VS Code (GitHub Copilot agent mode)#

Edit .vscode/mcp.json. The local version asks for the key once and stores it securely:

{
  "servers": {
    "vermin": { "type": "http", "url": "https://mcp.vermin.dev/mcp" }
  }
}

Windsurf#

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "vermin": { "serverUrl": "https://mcp.vermin.dev/mcp" }
  }
}

OpenAI Codex CLI#

Edit ~/.codex/config.toml, or run codex mcp add vermin --env VERMIN_API_KEY=vmn_live_… -- npx -y vermin-mcp:

config.toml
[mcp_servers.vermin]
command = "npx"
args = ["-y", "vermin-mcp"]
env = { VERMIN_API_KEY = "vmn_live_…" }

GitHub Copilot CLI#

Run /mcp add inside copilot, or edit ~/.copilot/mcp-config.json:

{
  "mcpServers": {
    "vermin": {
      "type": "http",
      "url": "https://mcp.vermin.dev/mcp",
      "headers": { "Authorization": "Bearer vmn_live_…" },
      "tools": ["*"]
    }
  }
}

Anything else#

Any client that supports remote MCP servers can use https://mcp.vermin.dev/mcp. Clients that only know the 2024-11-05 HTTP+SSE transport can use https://mcp.vermin.dev/sse. Clients limited to stdio can run npx -y vermin-mcp.

Tools#

ToolDoesCosts
vermin_scrapeOne URL to markdown (or html, links, screenshot, brand). Escalates to a headless browser when needed. Long pages are paged with startIndex/maxChars.Same as Scrape
vermin_mapEvery URL on a site (sitemaps + links), with an optional search filter. Paged with offset.Same as Map
vermin_crawlStarts a crawl and returns its IDSame as Crawl
vermin_crawl_statusProgress and pages of a crawl, paged with cursorFree
vermin_searchWeb search, optionally scraping each resultSame as Search
vermin_extractStructured JSON from pages, by prompt and/or JSON schemaSame as Extract
vermin_brandLogo, icon, colours (with contrast), fonts and socials for a domainSame as Brand

Tool arguments mirror the API, so everything else in these docs applies. Every result ends with the credits it used and its request ID. Failed calls are free, and they come back as tool errors telling the model what to do next: top up, wait N seconds, drop the premium tier, and so on.