servicenow-mcp
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.txtFor RAG-based knowledge search (optional):
pip install chromadb sentence-transformersConfiguration
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-keyChoosing a transport
The server supports two transports:
Transport | When to use |
| Claude Desktop — the standard local setup |
| 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_mcpThe 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_mcpClients 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-mcpWhat'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.
Make sure you have Docker Desktop installed and running.
Copy
.env.exampleto.envand fill in your ServiceNow credentials:cp .env.example .env # then open .env and set SERVICENOW_INSTANCE_URL, SERVICENOW_USERNAME, SERVICENOW_PASSWORDBuild and start the container:
docker-compose up --buildThe first run will take a minute to download and build everything. After that it's fast.
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
pytestContributing
See CONTRIBUTING.md.
License
MIT — see LICENSE.