{"_id":"@dwiesendanger/servicenow-mcp","_rev":"2-7be5454f14a5b7bef67b31c8a1272921","name":"@dwiesendanger/servicenow-mcp","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@dwiesendanger/servicenow-mcp","version":"1.0.0","keywords":["mcp","model-context-protocol","servicenow","incident-management","itsm","ai-tools","cline"],"author":{"name":"Dominik Wiesendanger"},"license":"MIT","_id":"@dwiesendanger/servicenow-mcp@1.0.0","maintainers":[{"name":"dwiesendanger","email":"dominik@wiesendanger.info"}],"homepage":"https://github.com/dwiesendanger/servicenow-mcp#readme","bugs":{"url":"https://github.com/dwiesendanger/servicenow-mcp/issues"},"bin":{"servicenow-mcp":"dist/index.js"},"dist":{"shasum":"0d37fa26ce1b46460825b2d2731eb5a09fb783d5","tarball":"https://registry.npmjs.org/@dwiesendanger/servicenow-mcp/-/servicenow-mcp-1.0.0.tgz","fileCount":48,"integrity":"sha512-v45/7frUGzFj++1fzn1oycanCRPv9DWtM/DjieSk+UDn843YaiMhPWPTRDazo/zGZLB8OW3ukCloC7TxoZRZFw==","signatures":[{"sig":"MEUCIFgpeKYlCqrkk5YAzS2/L3OtTh5Ma2T4mDw5u5MQ04V0AiEA91hWP1M+J8+smA5b1zFQfb6lQUPkeRHvbRxAGOZId0k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86640},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"878c9996af8174aca9afd03b97b8996a74b08234","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"dwiesendanger","email":"dominik@wiesendanger.info"},"repository":{"url":"git+https://github.com/dwiesendanger/servicenow-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for ServiceNow incident management","directories":{},"_nodeVersion":"24.14.0","dependencies":{"axios":"^1.13.6","dotenv":"^17.3.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.4.0"},"_npmOperationalInternal":{"tmp":"tmp/servicenow-mcp_1.0.0_1773311492734_0.26472761142001966","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@dwiesendanger/servicenow-mcp","version":"1.1.0","description":"MCP server for ServiceNow incident management","type":"module","main":"dist/index.js","bin":{"servicenow-mcp":"dist/index.js"},"scripts":{"build":"tsc","start":"node dist/index.js","dev":"tsx src/index.ts","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build"},"keywords":["mcp","model-context-protocol","servicenow","incident-management","itsm","ai-tools","cline"],"author":{"name":"Dominik Wiesendanger"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/dwiesendanger/servicenow-mcp.git"},"engines":{"node":">=18.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","axios":"^1.13.6","dotenv":"^17.3.1","zod":"^4.3.6"},"devDependencies":{"@types/node":"^25.4.0","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^3.2.3"},"gitHead":"878c9996af8174aca9afd03b97b8996a74b08234","types":"./dist/index.d.ts","_id":"@dwiesendanger/servicenow-mcp@1.1.0","bugs":{"url":"https://github.com/dwiesendanger/servicenow-mcp/issues"},"homepage":"https://github.com/dwiesendanger/servicenow-mcp#readme","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-njXlqeTDuKtfmAQYClaQTTKOR1qLzVkvcRY0z/so2HwlxXlTsNCp+ET1LhnxH1nR+MeVz98YhwIqkN7NZvUYDQ==","shasum":"5d4de1d69c870b77819131ad23a3eaab511eeccb","tarball":"https://registry.npmjs.org/@dwiesendanger/servicenow-mcp/-/servicenow-mcp-1.1.0.tgz","fileCount":48,"unpackedSize":86408,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCDJvEbJxa7HVjkCNO89L8bCw8GfTpha6La8T4g9xAnsAIhAKoeGIt3XjCmmh9yU4oeR3pCp8/Ammf6QEi5vr8BCLbI"}]},"_npmUser":{"name":"dwiesendanger","email":"dominik@wiesendanger.info"},"directories":{},"maintainers":[{"name":"dwiesendanger","email":"dominik@wiesendanger.info"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/servicenow-mcp_1.1.0_1773317975297_0.7241023732808229"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-12T10:31:32.605Z","modified":"2026-03-12T12:19:35.549Z","1.0.0":"2026-03-12T10:31:32.868Z","1.1.0":"2026-03-12T12:19:35.448Z"},"bugs":{"url":"https://github.com/dwiesendanger/servicenow-mcp/issues"},"author":{"name":"Dominik Wiesendanger"},"license":"MIT","homepage":"https://github.com/dwiesendanger/servicenow-mcp#readme","keywords":["mcp","model-context-protocol","servicenow","incident-management","itsm","ai-tools","cline"],"repository":{"type":"git","url":"git+https://github.com/dwiesendanger/servicenow-mcp.git"},"description":"MCP server for ServiceNow incident management","maintainers":[{"name":"dwiesendanger","email":"dominik@wiesendanger.info"}],"readme":"# ServiceNow MCP Server\n\nA [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server for ServiceNow incident management. It lets AI assistants like [Cline](https://github.com/cline/cline) create, read, update, and resolve incidents through a standardized tool interface.\n\n## Features\n\n- **get_incident** — Retrieve incident details by number\n- **search_incidents** — Search with filters (state, priority, assignment group, assigned user)\n- **create_incident** — Create new incidents\n- **update_incident** — Update fields on existing incidents\n- **add_comment** — Add work notes or customer-visible comments\n- **resolve_incident** — Resolve incidents with resolution notes and codes\n\n### Security & Safety\n\n- **PII redaction** enabled by default — emails, phone numbers, IPs, and SSNs are masked before reaching the LLM\n- **Read-only mode** via `SERVICENOW_ALLOW_WRITE=false` — disables all write operations\n- **Input validation** on all ticket numbers and required fields\n\n## Prerequisites\n\n- **Node.js** ≥ 18\n- A **ServiceNow** instance with REST API access (a [free developer instance](https://developer.servicenow.com/) works)\n- Basic-auth credentials for the ServiceNow API\n\n## Quick Start\n\n### Install from npm\n\n```bash\nnpx @dwiesendanger/servicenow-mcp\n```\n\n### Or clone & build from source\n\n```bash\ngit clone https://github.com/dwiesendanger/servicenow-mcp.git\ncd servicenow-mcp\nnpm install\nnpm run build\n```\n\n## Configuration\n\n### Environment Variables\n\nCopy `.env.example` to `.env` and fill in your values:\n\n```bash\ncp .env.example .env\n```\n\n| Variable | Required | Default | Description |\n|---|---|---|---|\n| `SERVICENOW_INSTANCE_URL` | ✅ | — | Your instance URL, e.g. `https://dev12345.service-now.com` |\n| `SERVICENOW_USERNAME` | ✅ | — | ServiceNow user name |\n| `SERVICENOW_PASSWORD` | ✅ | — | ServiceNow password |\n| `SERVICENOW_ALLOW_WRITE` | — | `true` | Set to `false` to disable write operations |\n| `SERVICENOW_DISABLE_REDACTION` | — | `false` | Set to `true` to disable PII redaction |\n\n> **⚠️ Never put credentials in MCP config files.** Always use `.env` or OS-level environment variables. See [SECURITY.md](SECURITY.md) for details.\n\n### Cline / VS Code Setup\n\nCreate a `.env` file in the project directory (see [Configuration → Environment Variables](#environment-variables) above), then add the server to your MCP settings file (`cline_mcp_settings.json`).\n\n**Using npx (recommended):**\n\n```jsonc\n{\n  \"mcpServers\": {\n    \"servicenow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dwiesendanger/servicenow-mcp\"]\n    }\n  }\n}\n```\n\n**Or if you built from source:**\n\n```jsonc\n{\n  \"mcpServers\": {\n    \"servicenow\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/servicenow-mcp/dist/index.js\"]\n    }\n  }\n}\n```\n\n> **Note:** The server uses [dotenv](https://github.com/motdotla/dotenv) to load `.env` from its working directory. If your `.env` file is in a different location, you can set the variables as OS-level environment variables or pass the `cwd` option in your MCP config.\n\n### Claude Desktop Setup\n\nAdd to your `claude_desktop_config.json`:\n\n```jsonc\n{\n  \"mcpServers\": {\n    \"servicenow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dwiesendanger/servicenow-mcp\"]\n    }\n  }\n}\n```\n\n## Development\n\n```bash\nnpm run dev          # Run with tsx (hot-reload)\nnpm test             # Run tests (vitest)\nnpm run test:watch   # Watch mode\nnpm run build        # Compile TypeScript → dist/\n```\n\n## Project Structure\n\n```\nsrc/\n├── index.ts               # Entry point, tool registration, MCP server setup\n├── servicenow-client.ts   # Axios-based ServiceNow REST API client\n├── redaction.ts            # PII redaction utilities\n├── validation.ts           # Input validation helpers\n├── types.ts                # Shared TypeScript types\n├── tools/\n│   ├── get-incident.ts     # get_incident handler\n│   ├── search-incidents.ts # search_incidents handler\n│   ├── create-incident.ts  # create_incident handler\n│   ├── update-incident.ts  # update_incident handler\n│   ├── add-comment.ts      # add_comment handler\n│   └── resolve-incident.ts # resolve_incident handler\n└── __tests__/\n    ├── validation.test.ts  # Validation unit tests\n    └── redaction.test.ts   # Redaction unit tests\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/my-feature`)\n3. Make your changes with tests\n4. Run `npm test` to ensure tests pass\n5. Commit and push\n6. Open a Pull Request\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}