MCP server.
Expose all of Sentinel's browser automation capabilities directly to your AI assistant — no code required. Works with Cursor, Windsurf, and Claude Desktop.
What is MCP?
The Model Context Protocol (MCP) is an open standard that lets AI assistants call external tools. Sentinel implements an MCP server — once configured, your AI assistant can navigate pages, fill forms, extract data, and run autonomous agents, all from a natural language prompt.
Ask your AI to scrape a page or automate a flow — no scripts to write.
Add 5 lines to your MCP config. The browser session persists across tool calls.
All 8 Sentinel tools are exposed — goto, act, extract, observe, run, screenshot, and more.
Cursor
Add the following to your Cursor MCP configuration, then restart Cursor. The Sentinel tools will appear in the tool picker automatically.
// .cursor/mcp.json (or Settings → MCP → Add server)
{
"mcpServers": {
"sentinel": {
"command": "npx",
"args": ["@isoldex/sentinel/mcp"],
"env": {
"GEMINI_API_KEY": "your-key-here",
"SENTINEL_HEADLESS": "true"
}
}
}
}Alternatively: Settings → Features → MCP Servers → Add server and enter the command and args manually.
Windsurf
Edit the Windsurf MCP config file and restart the app.
// ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"sentinel": {
"command": "npx",
"args": ["@isoldex/sentinel/mcp"],
"env": {
"GEMINI_API_KEY": "your-key-here",
"SENTINEL_HEADLESS": "true"
}
}
}
}Claude Desktop
Edit the Claude Desktop config file, then restart the app. Set SENTINEL_HEADLESS to false to watch the browser while Claude controls it.
// macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
// Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"sentinel": {
"command": "npx",
"args": ["@isoldex/sentinel/mcp"],
"env": {
"GEMINI_API_KEY": "your-key-here",
"SENTINEL_HEADLESS": "false"
}
}
}
}macOS
~/Library/Application Support/Claude/
Windows
%APPDATA%\Claude\
HTTP server mode
Run Sentinel as a standalone Streamable HTTP MCP server instead of a stdio subprocess. Useful when multiple editors / CI jobs should share one browser session, for Docker and Kubernetes deployments, or for local iteration where you want to rebuild Sentinel without restarting the MCP client — the client reconnects on its own.
Rebuild Sentinel and the client reconnects via exponential backoff — no IDE restart.
One Sentinel process, one browser — used by multiple MCP clients.
Drop the server into a container or a remote VM. Any MCP client reaches it by URL.
1. Start the server
Two environment variables control the server: SENTINEL_MCP_HTTP=1 switches the transport to HTTP, SENTINEL_MCP_PORT sets the port (default 3333). The server listens on 127.0.0.1 by default; override with SENTINEL_MCP_HOST.
# Start Sentinel as a standalone HTTP MCP server
GEMINI_API_KEY=your-key-here \
SENTINEL_MCP_HTTP=1 \
SENTINEL_MCP_PORT=3333 \
npx @isoldex/sentinel/mcp
# Or via the built-in dev script (from a cloned repo) — auto-restarts on rebuild:
# npm run build:watch # terminal 1
# npm run mcp:dev # terminal 22. Point the client at the URL
Replace the command/args block with a url entry. Works identically in Cursor, Windsurf, Claude Desktop, and any other MCP-compatible client.
// .cursor/mcp.json (or any MCP client config)
{
"mcpServers": {
"sentinel": {
"url": "http://127.0.0.1:3333/mcp"
}
}
}Security note
The HTTP transport has no built-in authentication — bind it to 127.0.0.1 for local use, or put it behind a reverse proxy (nginx, Caddy, Traefik) with auth + TLS when exposing over a network.
Available tools
The browser session persists across tool calls within the same MCP server process. Errors are returned as structured isError: true responses — the server never crashes on a tool failure.
| Tool | Parameters | Description |
|---|---|---|
| sentinel_goto | url: string | Navigate to a URL and wait for the page to settle. |
| sentinel_act | instruction: string | Perform a natural language action on the current page (click, fill, scroll, etc.). |
| sentinel_extract | instruction: string, schema: object | Extract structured data from the current page using a natural language instruction and JSON schema. |
| sentinel_observe | instruction?: string | List interactive elements on the page, optionally filtered by a natural language hint. |
| sentinel_run | goal: string, maxSteps?: number | Run the autonomous agent loop to achieve a high-level goal. |
| sentinel_screenshot | — | Take a screenshot of the current page. Returns a base64-encoded PNG. |
| sentinel_close | — | Close the browser session and release all resources. |
| sentinel_token_usage | — | Get accumulated token usage and estimated cost for the current session. |
Development tips
Environment variables are passed via the env block in your MCP config file.
# Show the browser window while Cursor / Claude controls it
SENTINEL_HEADLESS=false
# Use a different model
GEMINI_VERSION=gemini-3-flash-preview
# Use OpenAI instead of Gemini (set in the env block of your MCP config)
# OPENAI_API_KEY=sk-...
# Then change the provider in the MCP server config — or use the default Gemini.Pro tip
Set SENTINEL_HEADLESS=false while building prompts so you can watch exactly what the browser is doing. Switch to true for production use.