Back to Discover

mcp-server-servicenow

connector

jschuller

19 tools + 5 resources for ServiceNow: CMDB, update sets, tables. OAuth 2.1. Tokyo+, PKCE SanDiego+

View on GitHub
0 starsSynced Aug 13, 2026

Install to Claude Code

/plugin marketplace add jschuller/mcp-server-servicenow

README

ServiceNow MCP Server

ServiceNow MCP Server

PyPI Python FastMCP Tools Resources MCP Protocol License CI Downloads

Connect Claude AI to ServiceNow. 19 tools + 5 resources for incidents, CMDB, update sets, and more —
accessible from Claude Desktop, Claude Code, or any MCP client over stdio or Streamable HTTP.


Table API · CMDB · Update Sets · Aggregation · Resources · OAuth 2.1+PKCE · Streamable HTTP · Claude Code Plugin · 4 Skills

What This Does

This MCP server lets AI assistants interact directly with a ServiceNow instance. Instead of copy-pasting between ServiceNow and your AI tool, Claude can query incidents, create records, explore CMDB relationships, and manage update sets through natural conversation.

Built with FastMCP 4.0 — speaks both the stateless MCP 2026-07-28 protocol and the legacy handshake, negotiated per connection.

Native vs Community

ServiceNow shipped a native MCP Server in Zurich (2025). Here's when to use each:

Native (Zurich+)This project
SN versionZurich+ onlyAny version (Tokyo+)
EntitlementRequires Now Assist SKUNone (MIT, free)
Auth modelOAuth 2.1 + PKCE via AI Control TowerOAuth 2.1 + PKCE via FastMCP proxy
GovernanceAI Control Tower policiesSelf-managed
Table accessGoverned by CT configFull table API access
AI modelsNow Assist models + approvedAny MCP client (Claude, GPT, etc.)
Custom toolsRequires SN developmentPython — add tools in minutes

Use native if you're on Zurich+ with Now Assist and need AI Control Tower governance. Use this if you're on an older version, don't have the entitlement, need custom table access, or want to use any AI model.

Getting Started

1. Get a ServiceNow Instance

Sign up for a free Personal Developer Instance (PDI) — it comes pre-loaded with demo data. Wake it from the developer portal if it's hibernating.

Note: Instances with ServiceNow's basic-auth restriction enforced (the default on new PDIs since mid-2026) reject REST basic auth with 401 "Required to provide Auth information" unless the integration user has the snc_basic_auth_api_access role. Grant it via User Administration → Users → your user → Roles.

2. Install

# From PyPI (recommended)
pip install mcp-server-servicenow

# Or run directly with uvx (no install needed)
uvx --prerelease allow mcp-server-servicenow --help

Why --prerelease allow? v0.6.x pins FastMCP 4.0 (currently in beta) for MCP 2026-07-28 protocol support. uv requires the flag to resolve it; pip needs nothing special. The flag goes away when FastMCP 4.0 is stable.

3. Configure Your MCP Client

Copy .mcp.json.example to .mcp.json and fill in your credentials, or use the Claude Code CLI:

claude mcp add servicenow -- uvx --prerelease allow mcp-server-servicenow \
  --instance-url https://your-instance.service-now.com \
  --auth-type basic --username admin --password your-password

4. Verify

Ask Claude: "List the 5 most recent incidents" — if it returns data, you're connected.

From Source

git clone https://github.com/jschuller/mcp-server-servicenow.git
cd mcp-server-servicenow
pip install -e .

# Run with stdio (Claude Desktop / Claude Code)
mcp-server-servicenow \
  --instance-url https://your-instance.service-now.com \
  --auth-type basic \
  --username admin \
  --password your-password

# Or run with HTTP (remote access / Cloud Run)
mcp-server-servicenow \
  --transport streamable-http \
  --port 8080 \
  --instance-url https://your-instance.service-now.com \
  --auth-type basic \
  --username admin \
  --password your-password

Available Tools

Table API (6 tools)

ToolDescription
list_recordsList records from any table with filtering, field selection, and pagination
get_recordGet a single record by sys_id
create_recordCreate a new record in any table
update_recordUpdate an existing record
delete_recordDelete a record by sys_id
aggregate_recordsCOUNT, AVG, MIN, MAX, SUM with GROUP BY + HAVING via Stats API

CMDB (5 tools)

ToolDescription
list_ciList configuration items with class and query filtering
get_ciGet a single CI by sys_id
create_ciCreate a new configuration item
update_ciUpdate a configuration item
get_ci_relationshipsGet parent/child relationships for a CI

System (3 tools)

ToolDescription
get_system_propertiesQuery system properties
get_current_userGet authenticated user info
get_table_schemaGet table data dictionary (field definitions)

Update Sets (5 tools)

ToolDescription
list_update_setsList update sets with state filtering
get_update_setGet update set details
create_update_setCreate a new update set
set_current_update_setSet the active update set
list_update_set_changesList changes within an update set

Resources

MCP Resources provide read-only context that LLM clients can fetch without tool calls — reducing latency and token overhead.

Resource URIDescription
servicenow://schema/{table_name}Field definitions (name, type, label, mandatory, reference) for any table
servicenow://instanceInstance URL, platform version, logged-in user, timezone
servicenow://update-set/currentCurrently active update set name, sys_id, state
servicenow://cmdb/classesCMDB CI class hierarchy (names, labels, parent classes)
servicenow://help/query-syntaxEncoded query operators reference (prevents hallucinated syntax)

Architecture

graph TD
    CC["MCP Client"]
    subgraph SERVER["FastMCP 4.0"]
        TT["table_tools (6)"]
        CT["cmdb_tools (5)"]
        ST["system_tools (3)"]
        UT["update_set_tools (5)"]
        RS["resources (5)"]
        SNR["make_sn_request"]
    end
    subgraph AUTH["Auth + HTTP"]
        AM["auth_manager"]
        AR["api_request"]
    end
    SN["ServiceNow Instance"]

    CC -->|"stdio / Streamable HTTP"| SERVER
    TT --> SNR
    CT --> SNR
    ST --> SNR
    UT --> SNR
    RS --> SNR
    SNR --> AR
    AM -.->|"credentials"| AR
    AR -->|"REST API"| SN

Configuration

Add to your MCP client config — copy the snippet for your tool:

Claude Code
claude mcp add servicenow -- uvx --prerelease allow mcp-server-servicenow \
  --instance-url https://your-instance.service-now.com \
  --auth-type basic --username admin --password your-password
Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "servicenow": {
      "command": "uvx",
      "args": ["--prerelease", "allow", "mcp-server-servicenow"],
      "env": {
        "SERVICENOW_INSTANCE_URL": "https://your-instance.service-now.com",
        "SERVICENOW_AUTH_TYPE": "basic",
        "SERVICENOW_USERNAME": "admin",
        "SERVICENOW_PASSWORD": "your-password"
      }
    }
  }
}
Cursor / VS Code

Add to .cursor/mcp.json or .vscode/mcp.json:

{
  "mcpServers": {
    "servicenow": {
      "command": "uvx",
      "args": ["--prerelease", "allow", "mcp-server-servicenow"],
      "env": {
        "SERVICENOW_INSTANCE_URL": "https://your-instance.service-now.com",
        "SERVICENOW_AUTH_TYPE": "basic",
        "SERVICENOW_USERNAME": "admin",
        "SERVICENOW_PASSWORD": "your-password"
      }
    }
  }
}

See Configuration Guide for OAuth, multi-instance, and the full environment variable reference.

Deployment

See Deployment Guide — Docker, Cloud Run, HTTP transport verification, and the security model.

Troubleshooting

See TROUBLESHOOTING.md for common issues (hibernating instances, 401 errors, OAuth).

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run unit tests
python -m pytest tests/ -v --ignore=tests/integration

# Run integration tests (requires PDI credentials)
# Option 1: Create .env.test (gitignored, auto-loaded)
cp .env.example .env.test  # then fill in your credentials
python -m pytest tests/integration/ -v

# Option 2: Inline env vars
SERVICENOW_INSTANCE_URL=https://your-pdi.service-now.com \
SERVICENOW_USERNAME=admin SERVICENOW_PASSWORD=your-password \
python -m pytest tests/integration/ -v

# Lint
ruff check src/ tests/

Skills (Claude Code)

This project ships 4 Claude Code skills in .claude/skills/ — guided workflows that chain MCP tools for common ServiceNow tasks. Skills auto-trigger from natural conversation or can be invoked directly.

SkillWhat It DoesTry Saying
servicenow-cmdbCI classes, dependencies, CMDB health, data quality, CSDM compliance"show me CMDB health" / "what depends on this server"
exploring-tablesSchema discovery, field types, data profiling, table comparison"what fields does incident have" / "find tables matching cmdb"
reviewing-update-setsUpdate set review, risk flagging, conflict detection, pre-promotion checks"review my update sets" / "is this safe to promote"
triaging-incidentsIncident triage, priority assessment, CI correlation, bulk analysis"what's on fire" / "open P1 incidents"

The update set reviewer is a unique differentiator — no other open-source ServiceNow MCP server provides guided update set review workflows with risk categorization and pre-promotion checklists.

Claude Code Plugin

Install as a Claude Code plugin for zero-config setup — the MCP server, skills, slash commands, and admin agent are bundled together.

Prerequisites

Set these environment variables (or add them to your shell profile):

export SERVICENOW_INSTANCE_URL="https://your-instance.service-now.com"
export SERVICENOW_AUTH_TYPE="basic"  # or "oauth"
export SERVICENOW_USERNAME="admin"
export SERVICENOW_PASSWORD="your-password"
# For OAuth only:
export SERVICENOW_CLIENT_ID="your-client-id"
export SERVICENOW_CLIENT_SECRET="your-client-secret"

Install from Git

claude plugin add --from https://github.com/jschuller/mcp-server-servicenow

Install Locally (development)

claude --plugin-dir /path/to/mcp-server-servicenow

Slash Commands

CommandDescription
/servicenow:triageTriage incidents — list, investigate, assess priority, analyze trends
/servicenow:cmdbExplore CMDB — CI hierarchy, dependencies, health, CSDM taxonomy
/servicenow:review-update-setReview update sets — deep review, compare, pre-promotion checks
/servicenow:explore-tableExplore tables — schema, fields, data profiling, table search

Agent

The servicenow-admin agent handles complex multi-step tasks autonomously (CMDB audits, incident trend reports, batch update set reviews). Claude can spawn it as a background worker for long-running analysis.

Note: The plugin auto-configures the MCP server — no manual .mcp.json setup required.

Roadmap

  • Phase 1 ✅ Foundation — 18 tools, OAuth retry, structured error handling
  • Phase 2 ✅ Remote access — FastMCP 3.0, Streamable HTTP, Cloud Run deployment
  • Phase 3 ✅ Security — OAuth 2.1 + PKCE proxy, per-user SN auth, matches native Zurich model
  • Phase 4 ✅ Skills & workflows — 4 Claude Code skills (CMDB, table explorer, update set reviewer, incident triage)
  • Phase 4.5 ✅ Plugin packaging — Claude Code plugin with slash commands, admin agent, zero-config install
  • Phase 5 ✅ Distribution — PyPI package, MCP Registry, automated publish workflows
  • Sprint 2 ✅ FastMCP 3.1.1 — MultiAuth, token caching, connection pooling, response limiting, tool tags
  • Sprint 3 ✅ Resources + Aggregation — 5 MCP resources, aggregate_records Stats API tool
  • v0.6.0 ✅ FastMCP 4.0 — MCP 2026-07-28 stateless protocol support, fail-closed HTTP hardening, community fixes
  • v0.6.1 ✅ OAuth ROPC timeout + refresh-token grant, mypy in CI, dependency refresh
  • Next — Enhancement backlog under active consideration (background scripts, system logs, health checks)

Related Projects

  • sn-app-template — ServiceNow scoped app template for Claude Code + now-sdk. Pairs with this MCP server for AI-assisted development.

License

MIT

Rendered live from jschuller/mcp-server-servicenow's GitHub README — not stored, always reflects the source repo.

1 Install Method

NameDescriptionCategorySource
pypi packageInstall via pypi (stdio transport)mcp-servermcp-server-servicenow

0 Comments

Login required
Log in to post a comment or update on this repo.

No comments yet — be the first to share an update.