ServiceNow MCP Server for Claude Code — query, update, and manipulate any ServiceNow instance with built-in safety guards.
ServiceNow MCP has well-structured schemas and clear naming conventions (verb_noun pattern: sn_query, sn_get_record, sn_update_record, sn_create_record, sn_get_widget). All 5 tools have descriptions and input schemas with typed parameters. However, descriptions are minimal (10-50 chars), lacking context on WHEN to use each tool or dependencies between them. Parameter descriptions are sparse, 'table' and 'sys_id' lack guidance on format or discovery. Output schemas are not documented, forcing LLMs to infer response structure. Error handling is absent from visible code. The setup.py skill provides workflow guidance but is not integrated into tool definitions themselves.
Create a new record in any ServiceNow table.
Get a single ServiceNow record by sys_id.
Read a Service Portal widget's template, client script, server script, and CSS by widget sys_id or id.
Query any ServiceNow table using an encoded query. Returns up to `limit` records with the specified fields.
Update any field(s) on a ServiceNow record by sys_id.
Output schemas not documented. LLMs cannot infer what fields sn_query, sn_get_record, or sn_get_widget return, forcing them to guess downstream field names and risk failed chaining.
Parameter descriptions are minimal or missing. 'table' parameter lacks guidance on valid table names or how to discover them. 'sys_id' format is unexplained. 'fields' parameter lacks examples of comma-separated syntax.
Tool descriptions are too brief (10-50 chars). They state WHAT but not WHEN to use each tool or how they differ. sn_query vs sn_get_record distinction is unclear, when should an LLM choose one over the other?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
No error handling guidance in tool definitions. If sn_query returns 0 results or sn_update_record fails due to permission, the LLM has no recovery path documented.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). sn_update_record and sn_create_record are destructive but unmarked, preventing agents from reasoning about side effects.