The read half is the reason to wire it up: any table, encoded queries, server-side aggregates, and column definitions straight out of `sys_dictionary` — plus the ability to ask which restricted tables the connected user can actually reach before an agent plans around them. Writes are there too, and since 2.0 they answer with a preview until a call explicitly passes `apply: true`.
An MCP server over a ServiceNow instance's REST APIs: Table, Aggregate, Attachment, Import Set, Batch and CMDB, plus the Service Catalog, Change Management and Knowledge plugin APIs. Since 2.0 the record-write tools return a non-mutating preview unless the call passes `apply: true`.
- Any table, read properly: `servicenow_query_table` with encoded queries, field selection and pagination, and `servicenow_get_record` by sys_id
- Writes with the preview default — `servicenow_create_record`, `servicenow_update_record`, `servicenow_delete_record`
- Schema without opening the platform UI: `servicenow_list_tables` from `sys_db_object`, `servicenow_describe_table` from `sys_dictionary` with type, mandatory and reference per column
- Aggregates computed server-side rather than paged back — `servicenow_aggregate` does count, avg, min, max and sum with optional grouping
- Attachments listed, read, uploaded as base64 and deleted: `servicenow_list_attachments`, `servicenow_download_attachment`, `servicenow_upload_attachment`, `servicenow_delete_attachment`
- Several instances side by side — `servicenow_list_instances`, `servicenow_use_instance`, and `servicenow_set_credentials` to change the connection at runtime
- A preflight pair worth running first: `servicenow_test_connection` reads one `sys_user` record and reports status and latency, `servicenow_check_capabilities` reports which admin-restricted `sys_*` tables your user can actually read
- More packages behind `SN_TOOL_PACKAGES` — script intelligence, `servicenow_where_used` for every script and ACL touching a field, `servicenow_trace_table_event` for what runs on save, code checking and ATF. The default profile is `core`; `all` enables everything
A ServiceNow instance and credentials for it. `SN_INSTANCE` is the host — `dev12345.service-now.com` — and the quickest path is Basic auth with `SN_USER` and `SN_PASSWORD`. For anything long-lived, `npx servicenow-mcp-ai login` runs the one-time OAuth 2.1 flow with PKCE and stores a refresh token instead of the password; API key via `SN_API_KEY` and a pre-obtained bearer token are also supported. Node.js 20 or newer. Run it as `npx -y servicenow-mcp-ai` over stdio; credentials resolve from `SN_ENV_FILE`, then `~/.config/servicenow-mcp-ai/.env`, then the project `.env`, with real environment variables taking precedence.
One command plus a key — npx servicenow-mcp-ai, then supply credentials
