{"_id":"@autopilot715/servicenow-mcp-server","_rev":"5-27e6c572bef7efd6c6bce51e3735b10f","name":"@autopilot715/servicenow-mcp-server","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@autopilot715/servicenow-mcp-server","version":"1.0.0","keywords":["mcp","model-context-protocol","servicenow","itsm","claude","ai","incidents","cmdb","itil"],"author":{"name":"Kyle Burns"},"license":"MIT","_id":"@autopilot715/servicenow-mcp-server@1.0.0","maintainers":[{"name":"autopilot715","email":"kylburns89@gmail.com"}],"homepage":"https://github.com/kylburns89/servicenow-mcp-server#readme","bugs":{"url":"https://github.com/kylburns89/servicenow-mcp-server/issues"},"bin":{"servicenow-mcp-server":"dist/index.js"},"dist":{"shasum":"db4d114a0ac8ecb12bcc1541bb71f3459516a112","tarball":"https://registry.npmjs.org/@autopilot715/servicenow-mcp-server/-/servicenow-mcp-server-1.0.0.tgz","fileCount":51,"integrity":"sha512-1QBtdw9OPeC0wWw8EC/PZw9RBMU4wJqSVCvFugtoqDomoBHYUE6bTm/ZIUTYzff+E/QHeZoB1mMxDTSzA4vBzQ==","signatures":[{"sig":"MEYCIQDY9UVgcc5WBIkPC+TcKQsOvkAm9niyykNPG/k8n2h64AIhANudJ9bXRnjnSo7sZh5VHU7dLhVxoC8YMwuiNgyHQEez","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224436},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"182d7f32149b31777efb855160b60ff9bee5aa4c","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","prepare":"npm run build"},"_npmUser":{"name":"autopilot715","email":"kylburns89@gmail.com"},"repository":{"url":"git+https://github.com/kylburns89/servicenow-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for ServiceNow — incidents, changes, CMDB, service catalog, users, and knowledge base","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.23.8","axios":"^1.7.7","@modelcontextprotocol/sdk":"^1.10.1"},"_hasShrinkwrap":false,"devDependencies":{"express":"^5.0.0","typescript":"^5.6.3","@types/node":"^22.7.5","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/servicenow-mcp-server_1.0.0_1776476219973_0.21707081641709736","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@autopilot715/servicenow-mcp-server","version":"1.0.1","keywords":["mcp","model-context-protocol","servicenow","itsm","claude","ai","incidents","cmdb","itil"],"author":{"name":"Kyle Burns"},"license":"MIT","_id":"@autopilot715/servicenow-mcp-server@1.0.1","maintainers":[{"name":"autopilot715","email":"kylburns89@gmail.com"}],"homepage":"https://github.com/kylburns89/servicenow-mcp-server#readme","bugs":{"url":"https://github.com/kylburns89/servicenow-mcp-server/issues"},"bin":{"servicenow-mcp-server":"dist/index.js"},"dist":{"shasum":"d4c5a265ec5b6f1483b61016d26c68a0d51b65c5","tarball":"https://registry.npmjs.org/@autopilot715/servicenow-mcp-server/-/servicenow-mcp-server-1.0.1.tgz","fileCount":51,"integrity":"sha512-HBNpyavYsdPeFShEvZXxuwEeBUvveqD72a//Il4n3PxPSDfDvV6kzn7bwwChwV0ID8PvqXSOIbxwqtC4K2HYGg==","signatures":[{"sig":"MEUCIQCRnRixzYYQ5UFWuEgzaxwVhmZQ8JeVp86vLVw1bueWNAIgR3HYsB5IgVmJh1tPmxlZsp41QCt4iOoIWqiOpOOiOaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224543},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6731a5f8bd476ec63dcb455c6ceb0bcf5062a1e5","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","prepare":"npm run build","postbuild":"chmod +x dist/index.js"},"_npmUser":{"name":"autopilot715","email":"kylburns89@gmail.com"},"repository":{"url":"git+https://github.com/kylburns89/servicenow-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for ServiceNow — incidents, changes, CMDB, service catalog, users, and knowledge base","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.23.8","axios":"^1.7.7","@modelcontextprotocol/sdk":"^1.10.1"},"_hasShrinkwrap":false,"devDependencies":{"express":"^5.0.0","typescript":"^5.6.3","@types/node":"^22.7.5","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/servicenow-mcp-server_1.0.1_1776696381327_0.0747610746345504","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@autopilot715/servicenow-mcp-server","version":"1.0.2","keywords":["mcp","model-context-protocol","servicenow","itsm","claude","ai","incidents","cmdb","itil"],"author":{"name":"Kyle Burns"},"license":"MIT","_id":"@autopilot715/servicenow-mcp-server@1.0.2","maintainers":[{"name":"autopilot715","email":"kylburns89@gmail.com"}],"homepage":"https://github.com/kylburns89/servicenow-mcp-server#readme","bugs":{"url":"https://github.com/kylburns89/servicenow-mcp-server/issues"},"bin":{"servicenow-mcp-server":"dist/index.js"},"dist":{"shasum":"e623fdf758452f100184227e39aeb5f34f4ede31","tarball":"https://registry.npmjs.org/@autopilot715/servicenow-mcp-server/-/servicenow-mcp-server-1.0.2.tgz","fileCount":51,"integrity":"sha512-aDBwBrBS4DgV74SjLHmuJWtL1YgojyBSyI3mXfyFX210cf80DSDkr2urdiNGIsRulnkwl+d6ZM/hlp7L91Ulsg==","signatures":[{"sig":"MEUCIC4lZFCWLTsR3ZR/Q3VmYBRl7keSQnWBcWZfVuh+ndP+AiEAzTu1nR3CgXV8Tc5UDS6qgzvb1cORGVfc4w5n3Ue1D8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224747},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c1e81ef07099c2e119c8b3504f1898eb684f52ec","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","prepare":"npm run build","postbuild":"node -e \"const fs=require('fs');const f='dist/index.js';let c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c);}\" && chmod +x dist/index.js"},"_npmUser":{"name":"autopilot715","email":"kylburns89@gmail.com"},"repository":{"url":"git+https://github.com/kylburns89/servicenow-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for ServiceNow — incidents, changes, CMDB, service catalog, users, and knowledge base","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.23.8","axios":"^1.7.7","@modelcontextprotocol/sdk":"^1.10.1"},"_hasShrinkwrap":false,"devDependencies":{"express":"^5.0.0","typescript":"^5.6.3","@types/node":"^22.7.5","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/servicenow-mcp-server_1.0.2_1776730495149_0.39660495975958265","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@autopilot715/servicenow-mcp-server","version":"1.0.3","keywords":["mcp","model-context-protocol","servicenow","itsm","claude","ai","incidents","cmdb","itil"],"author":{"name":"Kyle Burns"},"license":"MIT","_id":"@autopilot715/servicenow-mcp-server@1.0.3","maintainers":[{"name":"autopilot715","email":"kylburns89@gmail.com"}],"homepage":"https://github.com/kylburns89/servicenow-mcp-server#readme","bugs":{"url":"https://github.com/kylburns89/servicenow-mcp-server/issues"},"bin":{"servicenow-mcp-server":"dist/index.js"},"dist":{"shasum":"3062641378858bb8b40a98be53dc5ed538d90af6","tarball":"https://registry.npmjs.org/@autopilot715/servicenow-mcp-server/-/servicenow-mcp-server-1.0.3.tgz","fileCount":55,"integrity":"sha512-AihIHj9ATprzdmDfDhciGI+oENyMnmPp2aTQw27k2BYAWjL47zwfI7KtllVOV2UG4hFpJXcVCgDNC16ttYmOCg==","signatures":[{"sig":"MEQCIGp28UtSYRGrcowQAX6zZwOCavSWCr4KqrSO8dXch0++AiBGPqtMk3z7EDXWf3i26M4LA3o6rjSuOwDi+ZEDi6GUkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244327},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2d35a0c88aa445fdbd52892965cffcfc7983671b","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","prepare":"npm run build","postbuild":"node -e \"const fs=require('fs');const f='dist/index.js';let c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c);}\" && chmod +x dist/index.js"},"_npmUser":{"name":"autopilot715","email":"kylburns89@gmail.com"},"repository":{"url":"git+https://github.com/kylburns89/servicenow-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for ServiceNow — incidents, changes, CMDB, service catalog, users, and knowledge base","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.23.8","axios":"^1.7.7","@modelcontextprotocol/sdk":"^1.10.1"},"_hasShrinkwrap":false,"devDependencies":{"express":"^5.0.0","typescript":"^5.6.3","@types/node":"^22.7.5","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/servicenow-mcp-server_1.0.3_1776740296306_0.6413922110368677","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@autopilot715/servicenow-mcp-server","version":"1.0.4","description":"MCP server for ServiceNow — incidents, changes, CMDB, service catalog, users, and knowledge base","keywords":["mcp","model-context-protocol","servicenow","itsm","claude","ai","incidents","cmdb","itil"],"homepage":"https://github.com/kylburns89/servicenow-mcp-server#readme","bugs":{"url":"https://github.com/kylburns89/servicenow-mcp-server/issues"},"repository":{"type":"git","url":"git+https://github.com/kylburns89/servicenow-mcp-server.git"},"license":"MIT","author":{"name":"Kyle Burns"},"type":"module","main":"dist/index.js","types":"./dist/index.d.ts","bin":{"servicenow-mcp-server":"dist/index.js"},"scripts":{"build":"tsc","postbuild":"node -e \"const fs=require('fs');const f='dist/index.js';let c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c);}\" && chmod +x dist/index.js","prepare":"npm run build","start":"node dist/index.js","dev":"tsc --watch"},"dependencies":{"@modelcontextprotocol/sdk":"^1.10.1","axios":"^1.7.7","zod":"^3.23.8"},"devDependencies":{"@types/express":"^5.0.0","@types/node":"^22.7.5","express":"^5.0.0","typescript":"^5.6.3"},"engines":{"node":">=18.0.0"},"gitHead":"152da1f8736ee3fa3385d7f2ef4202bff243bbcc","_id":"@autopilot715/servicenow-mcp-server@1.0.4","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-4eHd8ijioyNnbwsIeAInivL/p3Uo2F9lh46MScGA0jWEWBX1N0GPJ80+cmRg7CzzF13SURAttMrXWVGtVvh8Gg==","shasum":"f1de228b97e744fa6c5b67ec630c59dc92f6e287","tarball":"https://registry.npmjs.org/@autopilot715/servicenow-mcp-server/-/servicenow-mcp-server-1.0.4.tgz","fileCount":67,"unpackedSize":381851,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBFUXAQv1D1mgbkffVsrinXjIjkMf3DY7LL/QieixdQuAiEA4PotfEDdLhvyLM2l+MJoPK0yBjvmn12f6o3uV82nbS0="}]},"_npmUser":{"name":"autopilot715","email":"kylburns89@gmail.com"},"directories":{},"maintainers":[{"name":"autopilot715","email":"kylburns89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/servicenow-mcp-server_1.0.4_1776816399481_0.4834953671432216"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-18T01:36:59.897Z","modified":"2026-04-22T00:06:39.743Z","1.0.0":"2026-04-18T01:37:00.109Z","1.0.1":"2026-04-20T14:46:21.494Z","1.0.2":"2026-04-21T00:14:55.309Z","1.0.3":"2026-04-21T02:58:16.464Z","1.0.4":"2026-04-22T00:06:39.632Z"},"bugs":{"url":"https://github.com/kylburns89/servicenow-mcp-server/issues"},"author":{"name":"Kyle Burns"},"license":"MIT","homepage":"https://github.com/kylburns89/servicenow-mcp-server#readme","keywords":["mcp","model-context-protocol","servicenow","itsm","claude","ai","incidents","cmdb","itil"],"repository":{"type":"git","url":"git+https://github.com/kylburns89/servicenow-mcp-server.git"},"description":"MCP server for ServiceNow — incidents, changes, CMDB, service catalog, users, and knowledge base","maintainers":[{"name":"autopilot715","email":"kylburns89@gmail.com"}],"readme":"# servicenow-mcp-server\n\nA complete [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for ServiceNow. Connect Claude (or any MCP client) to your ServiceNow instance and interact with incidents, changes, CMDB, service catalog, users, groups, and the knowledge base using natural language.\n\n---\n\n## Authentication\n\nThree auth methods are supported. Set the env vars for exactly one — the server detects which to use automatically.\n\n| Method | Env vars required | Best for |\n|--------|------------------|----------|\n| [OAuth 2.0 PKCE](#option-a--oauth-20-pkce-recommended) | `SERVICENOW_CLIENT_ID` + `SERVICENOW_CLIENT_SECRET` | SSO / per-user permissions |\n| [Basic auth](#option-b--basic-auth) | `SERVICENOW_USERNAME` + `SERVICENOW_PASSWORD` | Dev / service accounts |\n| [Static token](#option-c--static-bearer-token) | `SERVICENOW_ACCESS_TOKEN` | Quick testing |\n\n**Priority (if multiple are set):** static token → basic → OAuth PKCE\n\n---\n\n## Option A — OAuth 2.0 PKCE (recommended)\n\nThe PKCE flow authenticates as the real user. Each person who runs the server logs in via your SSO identity provider and gets access only to what their ServiceNow roles permit — admins can do admin things, itil users are limited to itil operations, and so on.\n\n### 1. Create an OAuth application in ServiceNow\n\n> **System OAuth → Application Registry → New → \"Create an OAuth API endpoint for external clients\"**\n\n- Set **Redirect URL** to `http://localhost:54321/callback`\n- Copy the **Client ID** and **Client Secret**\n\nIf you need a different callback port, set `SERVICENOW_OAUTH_CALLBACK_PORT` (default: `54321`) and update the redirect URL in ServiceNow to match.\n\n### 2. Configure your env vars\n\n```bash\nSERVICENOW_INSTANCE_URL=https://yourcompany.service-now.com\nSERVICENOW_CLIENT_ID=your_client_id\nSERVICENOW_CLIENT_SECRET=your_client_secret\n\n# Optional — only needed if port 54321 is taken\n# SERVICENOW_OAUTH_CALLBACK_PORT=54321\n```\n\n### 3. First-time login\n\n**Before adding to Claude Desktop**, run the server once in a terminal to complete the browser login:\n\n```bash\nnpx @autopilot715/servicenow-mcp-server\n```\n\nYour browser will open to your ServiceNow login (which will trigger SSO if configured). After authenticating, tokens are cached at `~/.config/servicenow-mcp-server/tokens.json`. The server starts and you can Ctrl+C once you see it's running.\n\nSubsequent starts (including from Claude Desktop) are silent — the cached token is used and refreshed automatically. A full re-login only happens if the refresh token expires or is revoked.\n\n### 4. Add to Claude Desktop config\n\n**Mac:** `~/Library/Application Support/Claude/claude_desktop_config.json`\n**Windows:** `%APPDATA%\\Claude\\claude_desktop_config.json`\n**Linux:** `~/.config/Claude/claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"servicenow\": {\n      \"command\": \"npx\",\n      \"args\": [\"@autopilot715/servicenow-mcp-server\"],\n      \"env\": {\n        \"SERVICENOW_INSTANCE_URL\": \"https://yourcompany.service-now.com\",\n        \"SERVICENOW_CLIENT_ID\": \"your_client_id\",\n        \"SERVICENOW_CLIENT_SECRET\": \"your_client_secret\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop after editing the config.\n\n---\n\n## Option B — Basic auth\n\nSimplest to set up. Use a dedicated service account in production rather than a personal login.\n\n```json\n{\n  \"mcpServers\": {\n    \"servicenow\": {\n      \"command\": \"npx\",\n      \"args\": [\"@autopilot715/servicenow-mcp-server\"],\n      \"env\": {\n        \"SERVICENOW_INSTANCE_URL\": \"https://yourcompany.service-now.com\",\n        \"SERVICENOW_USERNAME\": \"your_username\",\n        \"SERVICENOW_PASSWORD\": \"your_password\"\n      }\n    }\n  }\n}\n```\n\n---\n\n## Option C — Static bearer token\n\nUse an existing OAuth token. Tokens expire and require manual renewal.\n\n```json\n{\n  \"mcpServers\": {\n    \"servicenow\": {\n      \"command\": \"npx\",\n      \"args\": [\"@autopilot715/servicenow-mcp-server\"],\n      \"env\": {\n        \"SERVICENOW_INSTANCE_URL\": \"https://yourcompany.service-now.com\",\n        \"SERVICENOW_ACCESS_TOKEN\": \"your_oauth_token\"\n      }\n    }\n  }\n}\n```\n\n> Tokens can be found or generated at **System OAuth → Manage Tokens** in ServiceNow.\n\n---\n\n## Running Locally (from source)\n\n```bash\ngit clone https://github.com/kylburns89/servicenow-mcp-server.git\ncd servicenow-mcp-server\nnpm install\nnpm run build\n```\n\nCopy `.env.example` to `.env` and fill in your credentials:\n\n```bash\ncp .env.example .env\n```\n\nThen start with:\n\n```bash\n# Node 20+ (recommended)\nnode --env-file=.env dist/index.js\n\n# Node 18\nexport $(grep -v '^#' .env | xargs) && node dist/index.js\n```\n\nFor active development, run the TypeScript compiler in watch mode in one terminal and restart the server after each save:\n\n```bash\nnpm run dev   # tsc --watch\n```\n\n---\n\n## Example Prompts\n\nOnce connected, you can use natural language:\n\n- *\"Show me all P1 and P2 incidents assigned to the Network Operations group\"*\n- *\"Create an incident for a login issue reported by jdoe@company.com, category software, high priority\"*\n- *\"List all emergency change requests scheduled this week\"*\n- *\"Find all servers in the Data Center that are in maintenance status\"*\n- *\"Search the knowledge base for articles about VPN setup\"*\n- *\"Get the full details for change request CHG0012345\"*\n- *\"Add a work note to INC0001234 saying the server has been rebooted and is under monitoring\"*\n- *\"Who are the members of the Service Desk group?\"*\n\n---\n\n## Tools (41 total)\n\n### Generic Table API\n| Tool | Description |\n|------|-------------|\n| `servicenow_query_records` | Query any table with encoded filters and pagination |\n| `servicenow_get_record` | Get a single record by sys_id |\n| `servicenow_create_record` | Create a record in any table |\n| `servicenow_update_record` | Update a record by sys_id (PATCH) |\n| `servicenow_delete_record` | Delete a record by sys_id ⚠️ |\n\n### Incidents\n| Tool | Description |\n|------|-------------|\n| `servicenow_list_incidents` | List/search incidents with filters |\n| `servicenow_get_incident` | Get incident by number (INC...) or sys_id |\n| `servicenow_create_incident` | Create a new incident |\n| `servicenow_update_incident` | Update state, assignment, priority, etc. |\n| `servicenow_add_work_note` | Add a work note or comment to any record |\n\n### Change Management\n| Tool | Description |\n|------|-------------|\n| `servicenow_list_changes` | List/search change requests |\n| `servicenow_get_change` | Get change by number (CHG...) or sys_id |\n| `servicenow_create_change` | Create a change request |\n| `servicenow_update_change` | Update state, plans, assignment |\n\n### Users & Groups\n| Tool | Description |\n|------|-------------|\n| `servicenow_list_users` | Search users |\n| `servicenow_get_user` | Get user by username, email, or sys_id |\n| `servicenow_list_groups` | List user groups |\n| `servicenow_get_group_members` | Get all members of a group |\n\n### CMDB\n| Tool | Description |\n|------|-------------|\n| `servicenow_search_ci` | Search CIs by name, class, or location |\n| `servicenow_get_ci` | Get full CI details |\n| `servicenow_get_ci_relationships` | Traverse upstream/downstream CI relationships (configurable depth) |\n\n### Service Catalog\n| Tool | Description |\n|------|-------------|\n| `servicenow_list_catalog_items` | Browse catalog items |\n| `servicenow_get_catalog_item` | Get item details and required variables |\n| `servicenow_submit_catalog_request` | Submit a catalog request |\n| `servicenow_list_sc_requests` | List catalog requests (REQ...) |\n\n### Knowledge Base\n| Tool | Description |\n|------|-------------|\n| `servicenow_search_knowledge` | Search KB articles |\n| `servicenow_get_kb_article` | Get full article content |\n\n### Bulk Operations\n| Tool | Description |\n|------|-------------|\n| `servicenow_bulk_update` | Update multiple records matching a query (dry-run by default) ⚠️ |\n| `servicenow_bulk_delete` | Delete multiple records matching a query (dry-run by default) ⚠️ |\n\n### Attachments\n| Tool | Description |\n|------|-------------|\n| `servicenow_list_attachments` | List file attachments for a record |\n| `servicenow_get_attachment_content` | Download attachment content (text inline, binary via URL) |\n| `servicenow_upload_attachment` | Upload a file attachment to any record |\n\n### Developer & Admin\n| Tool | Description |\n|------|-------------|\n| `servicenow_aggregate` | COUNT/SUM/AVG/MIN/MAX on any table, with optional grouping |\n| `servicenow_get_table_schema` | Introspect field definitions from sys_dictionary |\n| `servicenow_get_instance_info` | Instance version, cluster nodes, and upgrade history |\n| `servicenow_query_logs` | Query syslog for errors, warnings, and debug messages |\n| `servicenow_search_artifacts` | Search code across business rules, script includes, client scripts, UI actions, and scripted REST ops |\n| `servicenow_list_applications` | List installed scoped applications |\n| `servicenow_discover_tables` | Search and browse the table catalog (sys_db_object) |\n| `servicenow_list_atf_tests` | List ATF tests and test suites |\n| `servicenow_run_atf_test` | Execute an ATF test or suite via the ATF REST API |\n\n---\n\n## Query Syntax Reference\n\nServiceNow encoded query syntax for the `query` parameters:\n\n| Operator | Example | Meaning |\n|----------|---------|---------|\n| `=` | `state=1` | Equals |\n| `!=` | `state!=7` | Not equals |\n| `>=` | `priority>=2` | Greater than or equal |\n| `LIKE` | `nameLIKEjohn` | Contains |\n| `^` | `state=1^priority=1` | AND |\n| `^OR` | `state=1^ORstate=2` | OR |\n| `javascript:` | `assigned_to=javascript:gs.getUserID()` | Script expression |\n| `STARTSWITH` | `numberSTARTSWITHINC` | Starts with |\n\n---\n\n## Project Structure\n\n```\nsrc/\n├── index.ts                       # Entry point, server init, transport selection\n├── types.ts                       # TypeScript interfaces and field resolvers\n├── constants.ts                   # Table names, state labels, limits\n├── schemas/common.ts              # Shared Zod schemas\n├── services/\n│   ├── auth.ts                    # Auth mode detection, OAuth PKCE flow, token cache\n│   └── servicenow-client.ts       # Axios client, Table API helpers\n└── tools/\n    ├── table.ts       # Generic CRUD tools\n    ├── incidents.ts   # Incident tools\n    ├── changes.ts     # Change management tools\n    ├── users.ts       # User & group tools\n    ├── cmdb.ts        # CMDB + CI relationship traversal tools\n    ├── catalog.ts     # Service catalog tools\n    ├── knowledge.ts   # Knowledge base tools\n    ├── bulk.ts        # Bulk update/delete with dry-run\n    ├── attachments.ts # Attachment list/upload/download\n    └── developer.ts   # Aggregations, schema, logs, artifact search, ATF, app/table discovery\n```\n\n---\n\n## Contributing\n\nIssues and PRs welcome on [GitHub](https://github.com/kylburns89/servicenow-mcp-server).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}