A Model Context Protocol (MCP) server implementation for ServiceNow
Project description
ServiceNow MCP Server
ServiceNow MCP server with browser-based authentication for MFA/SSO environments. It is designed for direct use from MCP clients such as Claude Desktop, OpenCode, Gemini Code Assist, and similar local MCP hosts.
Quick Start
Most users do not need to clone this repository. If you have uv, you can register the server directly in your MCP client.
Claude Desktop
Add this to claude_desktop_config.json:
{
"mcpServers": {
"servicenow": {
"command": "uvx",
"args": [
"mfa-servicenow-mcp",
"--instance-url",
"https://your-instance.service-now.com",
"--auth-type",
"browser",
"--browser-headless",
"false"
]
}
}
}
OpenCode / Gemini / Vertex AI
{
"mcp": {
"servicenow": {
"type": "local",
"command": [
"uvx",
"mfa-servicenow-mcp",
"--instance-url",
"https://your-instance.service-now.com",
"--auth-type",
"browser",
"--browser-headless",
"false"
],
"enabled": true
}
}
}
Run Directly From a Terminal
uvx mfa-servicenow-mcp --instance-url "https://your-instance.service-now.com" --auth-type "browser"
Notes:
- The first run may install browser dependencies automatically.
- Browser auth may open a login window.
- Use
--browser-headless falseif you want an interactive MFA/SSO flow.
Install as a Local Command
uv tool install mfa-servicenow-mcp
servicenow-mcp --instance-url "https://your-instance.service-now.com" --auth-type "browser"
Windows users can also use WINDOWS_INSTALL.md.
Features
- Browser authentication for MFA/SSO environments
- Safe write confirmation with
confirm='approve' - Payload safety limits and truncation for large records
- Tool packages for standard users, service desk, portal developers, and platform developers
- Developer-focused tools for logs, source lookup, workflow inspection, and update set operations
Authentication
Choose the auth mode based on your ServiceNow environment.
Browser Auth
Use this for Okta, Entra ID, SAML, MFA, or any interactive SSO flow.
uvx mfa-servicenow-mcp \
--instance-url "https://your-instance.service-now.com" \
--auth-type "browser" \
--browser-headless "false"
Optional browser-related flags:
--browser-username--browser-password--browser-user-data-dir--browser-timeout--browser-probe-path
Environment variables:
SERVICENOW_INSTANCE_URL=https://your-instance.service-now.com
SERVICENOW_AUTH_TYPE=browser
SERVICENOW_BROWSER_HEADLESS=false
Basic Auth
Use this for PDIs or instances without MFA.
uvx mfa-servicenow-mcp \
--instance-url "https://your-instance.service-now.com" \
--auth-type "basic" \
--username "your_id" \
--password "your_password"
OAuth
Current CLI support expects OAuth password grant inputs.
uvx mfa-servicenow-mcp \
--instance-url "https://your-instance.service-now.com" \
--auth-type "oauth" \
--client-id "your_client_id" \
--client-secret "your_client_secret" \
--username "your_id" \
--password "your_password"
If --token-url is omitted, the server defaults to https://<instance>/oauth_token.do.
API Key
uvx mfa-servicenow-mcp \
--instance-url "https://your-instance.service-now.com" \
--auth-type "api_key" \
--api-key "your_api_key"
Default header: X-ServiceNow-API-Key
Tool Packages
Set MCP_TOOL_PACKAGE to choose a smaller tool set. Default: standard
| Package | Intended Use | Highlights |
|---|---|---|
standard |
General users | Incidents, catalog, knowledge, core queries |
portal_developer |
Portal developers | Portal code, script includes, safe logs, source lookup, workflow read, update set commit/publish |
platform_developer |
Platform developers | Script includes, safe logs, source lookup, workflows, UI policy, change set management |
service_desk |
Operations | Incident handling, comments, user lookup, article lookup |
full |
Admin / unrestricted read surface | Broad access across all implemented tool domains |
Safety Policy
All mutating tools are protected by explicit confirmation.
Rules:
- Tools such as
create_,update_,delete_,execute_,add_,commit_, andpublish_require confirmation. - You must pass
confirm='approve'. - Without that parameter, the server rejects the request before execution.
This policy applies regardless of the selected tool package.
Developer Setup
If you want to modify the source locally:
git clone https://github.com/jshsakura/mfa-servicenow-mcp.git
cd mfa-servicenow-mcp
uv venv
uv pip install -e .
uv run playwright install chromium
For Windows-specific setup, see WINDOWS_INSTALL.md.
Documentation
Related Projects and Acknowledgements
- This repository includes tools that were consolidated and refactored from earlier internal / legacy ServiceNow MCP implementations. You can still see that lineage in modules such as core_plus.py and tool_utils.py.
- Some developer productivity workflows, especially server-side source lookup, were designed with ideas inspired by SN Utils. This project does not bundle or redistribute SN Utils code. It implements MCP-oriented server tools separately.
- This project is focused on MCP server use cases rather than browser-extension UX. If you want in-browser productivity features directly inside ServiceNow, SN Utils remains a strong companion tool.
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mfa_servicenow_mcp-1.0.3.tar.gz.
File metadata
- Download URL: mfa_servicenow_mcp-1.0.3.tar.gz
- Upload date:
- Size: 205.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96ad3216d2e3760bc27e2a47801544b3bce8991480cf1dcba4b2e5f198ca1252
|
|
| MD5 |
0c2829e297a99ef43d69924ee72165da
|
|
| BLAKE2b-256 |
5441b47fe32b42a7136893ba0c5049508732a5b02bd30f1859144b3540a52c19
|
Provenance
The following attestation bundles were made for mfa_servicenow_mcp-1.0.3.tar.gz:
Publisher:
ci.yml on jshsakura/mfa-servicenow-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mfa_servicenow_mcp-1.0.3.tar.gz -
Subject digest:
96ad3216d2e3760bc27e2a47801544b3bce8991480cf1dcba4b2e5f198ca1252 - Sigstore transparency entry: 1185284092
- Sigstore integration time:
-
Permalink:
jshsakura/mfa-servicenow-mcp@e415fad572337cc2780eb646a6ea399270b3f9a4 -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/jshsakura
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@e415fad572337cc2780eb646a6ea399270b3f9a4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mfa_servicenow_mcp-1.0.3-py3-none-any.whl.
File metadata
- Download URL: mfa_servicenow_mcp-1.0.3-py3-none-any.whl
- Upload date:
- Size: 115.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70ddf57e6d2fa6b4ee2a321f8c43e2cdaa7f82c994b4a2068fafdd932b05855c
|
|
| MD5 |
4c2f4674477211735b5d35318f9e8640
|
|
| BLAKE2b-256 |
92eaad392fc84682c27230f20a74e0d0aea58ea41568f0ef781d07306aac575e
|
Provenance
The following attestation bundles were made for mfa_servicenow_mcp-1.0.3-py3-none-any.whl:
Publisher:
ci.yml on jshsakura/mfa-servicenow-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mfa_servicenow_mcp-1.0.3-py3-none-any.whl -
Subject digest:
70ddf57e6d2fa6b4ee2a321f8c43e2cdaa7f82c994b4a2068fafdd932b05855c - Sigstore transparency entry: 1185284096
- Sigstore integration time:
-
Permalink:
jshsakura/mfa-servicenow-mcp@e415fad572337cc2780eb646a6ea399270b3f9a4 -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/jshsakura
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@e415fad572337cc2780eb646a6ea399270b3f9a4 -
Trigger Event:
push
-
Statement type: