servicenow-mcp
by mady22070
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
```bash
pip install -r requirements.txt
```
For RAG-based knowledge search (optional):
```bash
pip install chromadb sentence-transformers
```
## Configuration
Set the following environment variables (or copy `.env.example` to `.env`):
```bash
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`:
```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:
```bash
MCP_TRANSPORT=http python -m servicenow_mcp
```
The MCP endpoint is at `http://localhost:8000/mcp`.
To require an API key on all requests:
```bash
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
```json
{
"mcpServers": {
"servicenow": {
"url": "http://localhost:8000/mcp",
"headers": {
"Authorization": "Bearer your-secret-key"
}
}
}
}
```
### Docker + HTTP mode
```bash
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](https://www.docker.com/products/docker-desktop/) installed and running.
2. Copy `.env.example` to `.env` and fill in your ServiceNow credentials:
```bash
cp .env.example .env
# then open .env and set SERVICENOW_INSTANCE_URL, SERVICENOW_USERNAME, SERVICENOW_PASSWORD
```
3. Build and start the container:
```bash
docker-compose up --build
```
The first run will take a minute to download and build everything. After that it's fast.
4. To stop it:
```bash
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
```bash
pytest
```
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md).
## License
MIT — see [LICENSE](LICENSE).
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues