Skip to main content

ServiceNow MCP Server

ServiceNow MCP Server

PyPI Downloads CI License

Connect Claude Code, GitHub Copilot, Codex, opencode, Antigravity or any MCP client to ServiceNow:
query any table, read schema and CMDB, review update sets. Free, MIT, works on a free developer instance.


uvx mcp-server-servicenow gives an AI assistant the ServiceNow developer data plane: the Table API, the data dictionary, Stats API aggregates, the CMDB and update sets, on any release from Tokyo up. It runs alongside ServiceNow's own MCP servers (how they differ).

What you can ask

  • "List the 5 most recent P1 incidents and who they're assigned to."
  • "How many open incidents does each assignment group have?"
  • "Which fields does cmdb_ci_server have, including inherited ones?"
  • "Which server CIs are missing an IP address or an owner?"
  • "Review update set 'Q3 fixes' before I promote it."

Quick start

About ten minutes on a free developer instance. On a company instance, ask your ServiceNow admin for the user in step 2.

1. Get a ServiceNow instance

Sign up for a free Personal Developer Instance (PDI) — it comes with demo incidents, changes and CIs. PDIs hibernate after a few hours idle: wake yours from the developer portal before you start.

2. Create an integration user

Don't connect as admin: new instances refuse REST basic auth for it (why), and the server needs far less.

  1. Sign in as admin and go to All › User Administration › Users › New.
  2. User ID mcp.integration, Identity type Machine (this ticks Web service access only), and tick Internal Integration User. If your form has no Identity type, tick Web service access only yourself. Submit, then open the user again.
  3. Set Password, and keep the password for step 3.
  4. Roles › Edit: add itil and snc_read_only, save.

That user can read incidents, changes, problems, CMDB and aggregates, and can't change anything. Schema, update sets and writes need more: see roles.

3. Add the server to your client

You need uv (uvx runs the server without installing it). In Claude Code:

read -rs SERVICENOW_PASSWORD     # paste the password; it is not shown or kept in your history
claude mcp add servicenow \
  -e SERVICENOW_INSTANCE_URL=https://devNNNNNN.service-now.com \
  -e SERVICENOW_USERNAME=mcp.integration \
  -e SERVICENOW_PASSWORD="$SERVICENOW_PASSWORD" \
  -- uvx mcp-server-servicenow
Windows (PowerShell)

Install uv with winget install astral-sh.uv, then:

$s = Read-Host 'Password' -AsSecureString
$p = [Runtime.InteropServices.Marshal]::PtrToStringBSTR([Runtime.InteropServices.Marshal]::SecureStringToBSTR($s))
claude mcp add servicenow -e SERVICENOW_INSTANCE_URL=https://devNNNNNN.service-now.com -e SERVICENOW_USERNAME=mcp.integration -e "SERVICENOW_PASSWORD=$p" -- uvx mcp-server-servicenow
VS Code (GitHub Copilot)

Install in VS Code

The button adds the server to your VS Code user profile and asks for the instance URL, user and password on first start, storing the password securely. Or add this to .vscode/mcp.json. Use Copilot Chat in Agent mode.

{
  "inputs": [
    { "type": "promptString", "id": "servicenow-url", "description": "ServiceNow instance URL, e.g. https://devNNNNNN.service-now.com" },
    { "type": "promptString", "id": "servicenow-password", "description": "Password for mcp.integration", "password": true }
  ],
  "servers": {
    "servicenow": {
      "type": "stdio",
      "command": "uvx",
      "args": ["mcp-server-servicenow"],
      "env": {
        "SERVICENOW_INSTANCE_URL": "${input:servicenow-url}",
        "SERVICENOW_USERNAME": "mcp.integration",
        "SERVICENOW_PASSWORD": "${input:servicenow-password}"
      }
    }
  }
}
Claude Desktop

Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

{
  "mcpServers": {
    "servicenow": {
      "command": "uvx",
      "args": ["mcp-server-servicenow"],
      "env": {
        "SERVICENOW_INSTANCE_URL": "https://devNNNNNN.service-now.com",
        "SERVICENOW_USERNAME": "mcp.integration",
        "SERVICENOW_PASSWORD": "your-password"
      }
    }
  }
}

Codex, opencode, Antigravity, Cursor, pi, the Claude Code plugin and keeping the password out of config files: client setup.

4. Check it works

Ask: "List the 5 most recent incidents." The start-here user holds snc_read_only, so the server lists only the 12 read-only tools. Give the user write roles (and remove snc_read_only) and the 7 write tools appear; your client asks before each write.

No answer? Run the same configuration with --check. It makes read-only requests, prints one line per check (instance reachable, identity, roles, table read, schema, aggregates) and never prints a secret:

SERVICENOW_INSTANCE_URL=https://devNNNNNN.service-now.com SERVICENOW_USERNAME=mcp.integration \
  SERVICENOW_PASSWORD="$SERVICENOW_PASSWORD" uvx mcp-server-servicenow --check

Got an answer back? Say which client and ServiceNow release in Show and tell — it tells us what works. Questions go to Q&A.

If it doesn't work

You see Fix
Got HTML instead of JSON The PDI is asleep: wake it and retry
401 The user isn't Web service access only, or the password is wrong (401)
403 The user lacks a role for that table or tool (roles)

Everything else: run --check (above), then TROUBLESHOOTING.

Tools

19 tools, 5 resources and 4 skills. Full reference: tools, resources and skills.

Group Tools
Table API list_records get_record create_record update_record delete_record aggregate_records
CMDB list_ci get_ci create_ci update_ci get_ci_relationships
System get_table_schema get_current_user get_system_properties
Update sets list_update_sets get_update_set create_update_set set_current_update_set list_update_set_changes

Resources: table schemas, instance info, the current update set, the CMDB class hierarchy and an encoded-query reference — read without a tool call.

Skills: four guided workflows served over MCP as skill:// resources, so every client gets them with no plugin — triaging-incidents, servicenow-cmdb, reviewing-update-sets (risk categories and a pre-promotion checklist) and exploring-tables.

Roles

ServiceNow's ACLs decide what the user can do; the server adds nothing on top.

You want Roles Run with
Read ITSM and CMDB data (the start-here user) itil + snc_read_only no flag: write tools are hidden for snc_read_only
…and create or update incidents and CIs itil (no snc_read_only) no flag; the client asks before writes (--read-only on clients that don't ask)
…and delete incidents, problems, changes add itil_admin
Table schemas add personalize_dictionary
Update sets, system properties admin — on a PDI only

Per-tool detail: roles per tool. Setting up a company instance: recommended integration identity.

Safety and governance

  • Read-only mode — --read-only hides the 7 write tools and refuses any non-GET request.
  • Read-only identities see read-only tools — when the user holds snc_read_only the write tools are hidden without a flag. A convenience, not a control: ServiceNow refuses those writes anyway.
  • Table scope lives in ServiceNow — ACLs and REST API access policies on the integration user decide which tables and fields it can read, dot-walks included.
  • Audit log — one JSON line per tool call or resource read: who, which table, outcome; field names only, never values.
  • Your client approves writes — every tool is annotated read-only or destructive, so Claude Code, Copilot and Codex ask before a write. Clients that don't ask (opencode by default, pi) need a read-only identity, or --read-only when the identity can write.

Flags and environment variables: configuration.

Works with

Verified on 2026-10-11 against ServiceNow Brazil: Claude Code 2.1.296, VS Code 1.140 with GitHub Copilot, Codex CLI 0.162.1, opencode 1.19.0, Antigravity CLI 1.1.20 and pi 1.1.0. Claude Desktop, Cursor and any other client that speaks MCP over stdio or Streamable HTTP should work too; behaviour per client: client setup.

More

Next: a skill for access and role hygiene, then a foundation for extending the server with your own skill packs, and MCP prompts.

Related: sn-app-template — a ServiceNow scoped app template for Claude Code + now-sdk that pairs with this server.

License

MIT

Metadata

Release files for mcp-server-servicenow 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-server-servicenow 0.8.0
File Size Uploaded
mcp_server_servicenow-0.8.0.tar.gz 79.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-server-servicenow 0.8.0
File Interpreter ABI Platform
mcp_server_servicenow-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 148.5 kB

Release files / mcp_server_servicenow-0.8.0.tar.gz

Download URL mcp_server_servicenow-0.8.0.tar.gz
Size 79.3 kB
Tags Source
SHA-256 checksum
How to use checksums
19a104f5c593254bbdff384779e602a8a6352195117ae5f1a59273e61b5b9e88
BLAKE2b-256 checksum
How to use checksums
e6284471922d9ee9855faf5ceb6ab811f4b1204825f62897d79369156cf1570e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / mcp_server_servicenow-0.8.0-py3-none-any.whl

Download URL mcp_server_servicenow-0.8.0-py3-none-any.whl
Size 69.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3ae2daef91a1e0fdadb6d3a742c4c59bbea880d3060661b72565200eb4c8cfd9
BLAKE2b-256 checksum
How to use checksums
870023337c31acc3ea95fbf40a970dd30a7c0d6634129b3090fa4bfe7200d6a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

0.9.1

2 release files

0.9.0

2 release files

This release

0.8.0 This release

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page