servicenow-browser-mcp-local
ServiceNow Browser MCP Local
A local, read-only MCP launcher for ServiceNow instances that require an interactive enterprise SSO or MFA login.
The launcher prefers an existing Google Chrome installation, then Microsoft Edge, and only uses Playwright Chromium when the user explicitly installs that fallback. Browser cookies and session state remain on the current user's computer in a private, instance-scoped profile.
Security model
- The MCP exposes only health, query, aggregate, schema, discovery and URL resolution tools. It does not expose create, update, delete or script tools.
- No password, OAuth client secret, API key, cookie, browser profile or registry token is bundled in this package or sent through npm.
- The initial ServiceNow URL must use HTTPS.
- MCP transport is local stdio. This launcher does not open a listening port.
- The npm package has no runtime npm dependencies and no install, prepare or publish lifecycle hooks. Its published files are controlled by an exact allowlist and scanned before release.
- The runtime uses exact, hash-locked Python dependencies. Setup ignores ambient uv configuration, uses the operating system certificate store, and accepts only the pinned uv version.
- Automatic setup is an explicit client choice via
--auto-setup; npm install lifecycle hooks remain forbidden. Without that flag, a normal MCP session never downloads software. After setup, the content-addressed runtime is reused without downloading it again. - Ambient
.envloading and the upstream online update check are disabled. Routine upstream authentication diagnostics are filtered below Warning so cookie and token prefixes are not retained in normal MCP client logs. - The browser uses a dedicated profile. Do not point it at a normal Chrome or Edge user profile.
The ServiceNow permissions of the signed-in person still apply. “Read-only” means this launcher does not expose mutation tools; query results can still contain data that the signed-in person is allowed to read. Protect the local browser profile as you would protect an authenticated browser session.
Quick start
Node.js 20 or newer and system Chrome or Edge are recommended. Put
--auto-setup in the MCP client configuration so a separate setup command is
not required:
{
"mcpServers": {
"servicenow": {
"command": "npx",
"args": [
"--yes",
"--registry=https://registry.npmjs.org/",
"servicenow-browser-mcp-local@0.1.4",
"--auto-setup"
],
"env": {
"SERVICENOW_INSTANCE_URL": "https://your-instance.service-now.com",
"SERVICENOW_BROWSER_LOGIN_URL": "https://your-instance.service-now.com/login.do",
"SERVICENOW_BROWSER_PROVIDER": "auto"
}
}
}
}
Replace the two example URLs with your ServiceNow instance and its login entry
point. The login URL is optional, but when supplied it must use the same HTTPS
origin as the instance URL. Pin the exact package version rather than latest.
The first start downloads the pinned runtime and can take several minutes. Later starts reuse it. The first MCP call that needs ServiceNow may then open the isolated browser profile for interactive SSO/MFA. Complete login in that window; the session remains local to that user and is reused until it expires.
Some clients, including Qoder Work, support a startup timeout extension. A five-minute timeout is useful for the first start:
{
"timeout": 300,
"enabled": true
}
These two fields are client-specific and should be placed next to command,
args and env only when the client supports them.
Managed setup and diagnostics
Administrators can pre-provision or diagnose the runtime explicitly:
SERVICENOW_INSTANCE_URL=https://your-instance.service-now.com \
npx --yes --registry=https://registry.npmjs.org/ \
servicenow-browser-mcp-local@0.1.4 setup
SERVICENOW_INSTANCE_URL=https://your-instance.service-now.com \
npx --yes --registry=https://registry.npmjs.org/ \
servicenow-browser-mcp-local@0.1.4 doctor
Both setup and --auto-setup obtain the pinned runtime and verify its lock.
Neither installs a browser when system Chrome or Edge is available. Use
setup --with-chromium only when neither browser is available or enterprise
browser policy prevents automation. First-time setup needs network access to
retrieve the pinned uv, Python and Python packages when they are not already
cached. npx itself also contacts the selected npm registry to obtain the
exact package version.
The managed uv bootstrap uses a 30-second connection/transfer-stall timeout, a five-minute safety limit per attempt and at most three attempts for transient network or server failures. Every successful download is restricted to HTTPS, capped at 50 MiB and checked against the pinned SHA-256 before it can be installed. Partial downloads are removed before a retry. Linux currently requires glibc; Alpine/musl is not supported by this package version.
If an enterprise network requires an explicit proxy that the local Node.js
runtime cannot use, install the exact uv 0.11.29 through an approved company
channel and set SERVICENOW_MCP_UV_PATH to that absolute executable path.
Setup rejects every other uv version.
Supported browser providers are auto, chrome, msedge and chromium;
an advanced deployment may also set an absolute
SERVICENOW_BROWSER_EXECUTABLE_PATH.
Commands
--auto-setupprepares the runtime when needed, then starts stdio.setupprepares the pinned Python runtime.setup --with-chromiumalso installs the matching Playwright Chromium.doctorperforms local, read-only checks without contacting ServiceNow.stdio, or no command, starts the stdio MCP server.
This is an independent compatibility launcher, not an official ServiceNow MCP and not affiliated with ServiceNow, Microsoft or Google.