Skip to main content
Glama

sn-mcp

MCP server that gives AI coding assistants read access to a ServiceNow instance — useful when building or debugging ServiceNow apps.

Prerequisites

  • uv — Python package manager

  • A ServiceNow instance with a user that has read access to sys_dictionary and any tables you want to query

Related MCP server: Secureframe MCP Server

Setup

git clone <this-repo>
cd sn-mcp
cp .env.example .env

Edit .env with your instance details:

SN_INSTANCE=https://yourinstance.service-now.com
SN_USERNAME=your_username
SN_PASSWORD=your_password

Adding to Claude

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "sn-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/sn-mcp", "sn-mcp"],
      "env": {
        "SN_INSTANCE": "https://yourinstance.service-now.com",
        "SN_USERNAME": "your_username",
        "SN_PASSWORD": "your_password"
      }
    }
  }
}

You can use either the env block above or a .env file in the repo directory — whichever you prefer.

Claude Code (CLI)

claude mcp add sn-mcp -- uv run --directory /absolute/path/to/sn-mcp sn-mcp

Then set credentials in .env or pass them via the env block in .mcp.json.

Tools

Tool

Description

get_table_schema(table, filter_keyword?)

Field definitions for any table from sys_dictionary — type, label, mandatory, max_length, reference

query_table(table, query?, fields?, limit?)

Query any table with an encoded query string (e.g. state=1^category=network)

get_record(table, sys_id)

Fetch a single record by sys_id from any table

Verify it's working

uv run python server.py

Or test the MCP handshake directly:

python3 -c "
import subprocess, json, select
proc = subprocess.Popen(['uv','run','python','server.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
def send(msg):
    proc.stdin.write((json.dumps(msg)+'\n').encode()); proc.stdin.flush()
    ready,_,_ = select.select([proc.stdout],[],[],5)
    return json.loads(proc.stdout.readline()) if ready else None
r = send({'jsonrpc':'2.0','id':1,'method':'initialize','params':{'protocolVersion':'2024-11-05','capabilities':{},'clientInfo':{'name':'test','version':'0'}}})
print('server:', r['result']['serverInfo'])
proc.terminate()
"

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to interact with ServiceNow through MCP, providing schema inspection, record CRUD, attachments, audit, Flow Designer, and platform investigations with policy-guarded access.
    15
    305 PyPI
    4
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides AI assistants with read-only access to Secureframe's compliance data, enabling querying of security controls, tests, users, vendors, and more across frameworks like SOC 2 and ISO 27001.
    8
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants and development tools to interact with ServiceNow instances through a standardized interface, supporting comprehensive API coverage for incident, change, CMDB, and more.
    MIT