ServiceNow MCP Server — Claude Code MCP server: tables, CMDB, schema
Hooks your assistant up to ServiceNow: query any table, read schemas and CMDB, inspect update sets. Runs against a free developer instance.
claude mcp add --env SERVICENOW_INSTANCE_URL=<SERVICENOW_INSTANCE_URL> --env SERVICENOW_AUTH_TYPE=<SERVICENOW_AUTH_TYPE> --env SERVICENOW_USERNAME=<SERVICENOW_USERNAME> --env SERVICENOW_PASSWORD=<SERVICENOW_PASSWORD> --env SERVICENOW_CLIENT_ID=<SERVICENOW_CLIENT_ID> --transport stdio servicenow-mcp-server -- uvx mcp-server-servicenowWhat ServiceNow MCP Server does
The server opens ServiceNow's developer data plane to an AI client: Table API, data dictionary, aggregates through Stats API, CMDB and update sets. uvx mcp-server-servicenow launches it without a prior install. Both stdio and streamable-http transports are available, and auth can be basic, OAuth or api_key. ServiceNow releases from Tokyo onward are listed as supported.
You connect with a dedicated integration user rather than admin. New instances reject REST basic auth for admin, and the server needs far less anyway. The setup described in the repo: create a user with Identity type Machine, mark it Internal Integration User, assign itil and snc_read_only. That covers incidents, changes, problems, CMDB and aggregates but keeps the user read-only. Schema, update sets and writes ask for extra roles.
You also need uv on the machine, since uvx pulls the server through it. For Claude a plugin variant bundles four skills as slash commands and reuses the SERVICENOW_* variables from the shell you launched it in. With a wrong SERVICENOW_INSTANCE_URL or password, nothing reaches the instance.
What it helps with
- list the fields of
cmdb_ci_server, inherited ones included - find admin holders and roles granted directly instead of via a group
- review an update set before promoting it
- spot server CIs with no IP address or no owner
- count open incidents per assignment group
Example prompts for the agent
- List the fields of
cmdb_ci_server, inherited ones included. - Review the 'Q3 fixes' update set before I promote it.
How to install ServiceNow MCP Server
Platform CLI
claude mcp add --env SERVICENOW_INSTANCE_URL=<SERVICENOW_INSTANCE_URL> --env SERVICENOW_AUTH_TYPE=<SERVICENOW_AUTH_TYPE> --env SERVICENOW_USERNAME=<SERVICENOW_USERNAME> --env SERVICENOW_PASSWORD=<SERVICENOW_PASSWORD> --env SERVICENOW_CLIENT_ID=<SERVICENOW_CLIENT_ID> --transport stdio servicenow-mcp-server -- uvx mcp-server-servicenowReplace <…> with your own values. 9 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from mcp-server-servicenow <command>
Platform CLI
codex mcp add servicenow-mcp-server --env SERVICENOW_INSTANCE_URL=<SERVICENOW_INSTANCE_URL> --env SERVICENOW_AUTH_TYPE=<SERVICENOW_AUTH_TYPE> --env SERVICENOW_USERNAME=<SERVICENOW_USERNAME> --env SERVICENOW_PASSWORD=<SERVICENOW_PASSWORD> --env SERVICENOW_CLIENT_ID=<SERVICENOW_CLIENT_ID> -- uvx mcp-server-servicenowReplace <…> with your own values. 9 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from mcp-server-servicenow <command>
Config file
{
"mcpServers": {
"servicenow-mcp-server": {
"command": "uvx",
"args": [
"mcp-server-servicenow"
],
"env": {
"SERVICENOW_INSTANCE_URL": "<SERVICENOW_INSTANCE_URL>",
"SERVICENOW_AUTH_TYPE": "<SERVICENOW_AUTH_TYPE>",
"SERVICENOW_USERNAME": "<SERVICENOW_USERNAME>",
"SERVICENOW_PASSWORD": "<SERVICENOW_PASSWORD>",
"SERVICENOW_CLIENT_ID": "<SERVICENOW_CLIENT_ID>"
}
}
}
}Replace <…> with your own values. 9 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from mcp-server-servicenow <command>
Config file
{
"servers": {
"servicenow-mcp-server": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-server-servicenow"
],
"env": {
"SERVICENOW_INSTANCE_URL": "<SERVICENOW_INSTANCE_URL>",
"SERVICENOW_AUTH_TYPE": "<SERVICENOW_AUTH_TYPE>",
"SERVICENOW_USERNAME": "<SERVICENOW_USERNAME>",
"SERVICENOW_PASSWORD": "<SERVICENOW_PASSWORD>",
"SERVICENOW_CLIENT_ID": "<SERVICENOW_CLIENT_ID>"
}
}
}
}Replace <…> with your own values. 9 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from mcp-server-servicenow <command>
Platform CLI
gemini mcp add -e SERVICENOW_INSTANCE_URL=<SERVICENOW_INSTANCE_URL> -e SERVICENOW_AUTH_TYPE=<SERVICENOW_AUTH_TYPE> -e SERVICENOW_USERNAME=<SERVICENOW_USERNAME> -e SERVICENOW_PASSWORD=<SERVICENOW_PASSWORD> -e SERVICENOW_CLIENT_ID=<SERVICENOW_CLIENT_ID> servicenow-mcp-server uvx mcp-server-servicenowReplace <…> with your own values. 9 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from mcp-server-servicenow <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about ServiceNow MCP Server
How do I install ServiceNow MCP Server in Claude Code?
Install uv, then run `claude mcp add mcp-server-servicenow -e SERVICENOW_INSTANCE_URL=<SERVICENOW_INSTANCE_URL> -e SERVICENOW_PASSWORD=<SERVICENOW_PASSWORD> -e SERVICENOW_CLIENT_SECRET=<SERVICENOW_CLIENT_SECRET> -e SERVICENOW_API_KEY=<SERVICENOW_API_KEY> -- uvx mcp-server-servicenow`.
What does ServiceNow MCP Server do?
It lets an assistant read ServiceNow data: any table, the data dictionary, CMDB, aggregates and update sets. The assistant has no view of that data otherwise.
Which account should the server use?
Not admin — new instances refuse REST basic auth for it. Make a separate integration user with itil and snc_read_only, enough for reading.