Production-grade, read-only MCP server for ServiceNow
Four read-only tools with complete input schemas and descriptions. Tool names follow verb_noun pattern (query_, get_, search_, list_). Descriptions are detailed (150 - 250 chars) and explain ServiceNow-specific syntax. All parameters have types and descriptions. Output is formatted as plain text blocks, not raw JSON. Error handling catches SnowError and returns `.message` as result. Main gaps: no output schema documentation, no pagination metadata (total count returned but not in structured form), no tool annotations (readOnlyHint missing despite all tools being read-only), and descriptions could be more concise for LLM token efficiency.
Fetch one full record (all fields, display values) from a ServiceNow table by its sys_id, e.g. from a prior query_records result.
List the fields (element, column label, internal type) defined on a ServiceNow table — use this to discover what columns exist on a table before querying it with query_records or get_record.
Query records from any ServiceNow table (e.g. incident, problem, change_request, sys_user). `query` is a ServiceNow encoded query restricting which rows come back; `fields` is a comma-separated list of columns to return (default: all columns on the record). Encoded query syntax: `^` = AND, `^OR` = OR (e.g. 'active=true^priority=1^ORpriority=2'), `fieldLIKEvalue` for a partial match, `123TEXTQUERY321=text` for full-text search.
Full-text search across published ServiceNow knowledge base articles (kb_knowledge). Returns number, short_description, a snippet of the article body, and sys_id for each hit. `query` is plain search text (keywords/phrases), NOT an encoded query — for encoded-query filtering over kb_knowledge use query_records with table='kb_knowledge' instead. The published-only filter (`workflow_state=published`) is best-effort relevance filtering, not a security boundary — ServiceNow ACLs decide what the account can actually see, same as every other tool here.
No tool annotations (readOnlyHint) despite all tools being read-only. LLMs cannot distinguish safe tools from destructive ones without explicit hints.
Output schema not documented. Tools return formatted text blocks; LLMs cannot parse structure or extract fields for downstream calls without explicit schema.
query_records description includes ServiceNow syntax examples ('active=true^priority=1^ORpriority=2') that LLMs may reuse literally. Use parameter constraints or separate discovery tool instead.
search_knowledge description includes disclaimer about ACLs and 'best-effort filtering' that adds 150+ chars of legal/security boilerplate. Move to server docs; keep tool description focused on what it does.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Pagination metadata (total count) returned in text footer ('... up to X matches') rather than structured fields. Agents cannot reliably parse or act on pagination state.