servicenow-mcp

mady22070/servicenow-mcp
0 starsMITCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

MCP server to interact with ServiceNow instances, enabling ITSM, CMDB, workflow, and knowledge search operations.

README.md

servicenow-mcp

An MCP (Model Context Protocol) server that lets Claude interact with a ServiceNow instance. Exposes ServiceNow functionality as tools Claude can call directly from Claude Desktop or any MCP-compatible client.

Requirements

  • Python 3.10+
  • A ServiceNow instance (developer instance works fine)
  • Claude Desktop or another MCP client

Installation

pip install -r requirements.txt

For RAG-based knowledge search (optional):

pip install chromadb sentence-transformers

Configuration

Set the following environment variables (or copy .env.example to .env):

SERVICENOW_INSTANCE_URL=https://your-instance.service-now.com
SERVICENOW_USERNAME=your-username
SERVICENOW_PASSWORD=your-password

# Optional — enables semantic knowledge search
OPENAI_API_KEY=your-openai-key

Choosing a transport

The server supports two transports:

| Transport | When to use | |---|---| | stdio (default) | Claude Desktop — the standard local setup | | http | Cursor, Cline, LangChain, OpenAI Agents SDK, any web client |

Claude Desktop setup

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "servicenow": {
      "command": "python",
      "args": ["-m", "servicenow_mcp"],
      "env": {
        "SERVICENOW_INSTANCE_URL": "https://your-instance.service-now.com",
        "SERVICENOW_USERNAME": "your-username",
        "SERVICENOW_PASSWORD": "your-password"
      }
    }
  }
}

HTTP transport (Cursor, Cline, LangChain, OpenAI Agents SDK)

Start the server in HTTP mode:

MCP_TRANSPORT=http python -m servicenow_mcp

The MCP endpoint is at http://localhost:8000/mcp.

To require an API key on all requests:

MCP_TRANSPORT=http MCP_API_KEY=your-secret-key python -m servicenow_mcp

Clients must then include Authorization: Bearer your-secret-key in every request.

Cursor / Cline config

{
  "mcpServers": {
    "servicenow": {
      "url": "http://localhost:8000/mcp",
      "headers": {
        "Authorization": "Bearer your-secret-key"
      }
    }
  }
}

Docker + HTTP mode

docker run -p 8000:8000 \
  -e MCP_TRANSPORT=http \
  -e MCP_API_KEY=your-secret-key \
  -e SERVICENOW_INSTANCE_URL=https://your-instance.service-now.com \
  -e SERVICENOW_USERNAME=your-username \
  -e SERVICENOW_PASSWORD=your-password \
  servicenow-mcp

What's included

Tools are grouped into packs by domain:

| Category | Packs | |---|---| | Core development | scripts, dev, background scripts, senior dev | | Data / config | tables, data import/export, update sets, attachments | | ITSM | incidents, changes, problems, requests, approvals | | CMDB / discovery | CMDB, CSDM, discovery, ITAM, ITOM, SAM/HAM | | Workflow | Flow Designer, pipelines, planner | | Integrations | Scripted REST APIs, integration hub | | UI | UI Builder, service catalog, UX | | App development | scoped apps, best practices, naming conventions | | Testing | ATF, troubleshooting | | Knowledge | docs search, knowledge base, RAG search | | Security | governance, impersonation, events |

Running with Docker

If you don't want to deal with Python environments, you can run the server inside Docker instead.

  1. Make sure you have Docker Desktop installed and running.
  1. Copy .env.example to .env and fill in your ServiceNow credentials:
   cp .env.example .env
   # then open .env and set SERVICENOW_INSTANCE_URL, SERVICENOW_USERNAME, SERVICENOW_PASSWORD
  1. Build and start the container:
   docker-compose up --build

The first run will take a minute to download and build everything. After that it's fast.

  1. To stop it:
   docker-compose down

That's it. Logs are saved to a logs/ folder in the project directory.

If you want to use it with Claude Desktop, you still need to run it via python -m servicenow_mcp (the Claude Desktop integration talks over stdin/stdout, not HTTP). Docker is more useful if you're running this as a standalone service or testing it independently.

Running tests

pytest

Contributing

See CONTRIBUTING.md.

License

MIT — see LICENSE.

Related MCP servers

Browse all →