A bidirectional MCP integration between ServiceNow and Claude. Includes an external MCP server for NVD CVE lookups and a native ServiceNow application with Claude agent capabilities.
Server has 13 tools with mixed quality. Naming is generally good (verb-noun pattern: lookup_cve, search_recent_cves, list_incidents, etc.). Descriptions are present but vary in completeness, some are detailed (list_incidents explains encoded query syntax), others are minimal (get_incident, get_configuration_item lack context on when to use vs list variants). Schemas are visible for all tools with proper JSON Schema structure, but parameter descriptions are sparse or missing in several tools (e.g., order_by/order_direction in list_* tools lack guidance on valid field names). Output schemas are not documented, LLMs cannot predict what fields to expect. Error handling is minimal; tools return generic error dicts without recovery guidance. Security is strong (shared_secret validation, input validation, activity logging), but this doesn't offset definition gaps. STDIO transport caps protocol score at 50, limiting overall assessment.
Create a new record on any table the user has access to. Requires explicit confirmation before creation.
Get the variables (questions) required for a specific catalog item before ordering.
Fetch a single configuration item by sys_id. Returns all fields.
Fetch a single incident by sys_id. Returns all fields.
Search configuration items using a ServiceNow encoded query. Returns up to 10 matching records.
Search incidents using a ServiceNow encoded query. Returns up to 10 matching records with number, short_description, state, priority, sys_created_on, sys_updated_on, and sys_id. Encoded query syntax: conditions are joined with a caret (^), never spaces or commas -- e.g. "short_descriptionLIKEvpn^active=true". To sort (e.g. "most recent"), use the separate order_by / order_direction parameters below rather than trying to embed ORDERBY in the query string yourself.
Output schemas not documented. LLMs cannot predict what fields get_incident, get_configuration_item, get_catalog_item_variables, and review_update_set return. This forces agents to guess field names for downstream tool calls.
Minimal descriptions on getter tools (get_incident, get_configuration_item, get_catalog_item_variables). Descriptions under 50 chars lack context on when to use vs list variants or what data is returned. LLMs cannot distinguish between similar tools.
Parameter descriptions missing or vague for order_by and order_direction across list_* tools. No guidance on valid field names (e.g., 'sys_created_on', 'sys_updated_on'). LLMs will guess invalid field names.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Search knowledge base articles using a ServiceNow encoded query. Returns up to 10 matching articles.
Look up a single CVE by ID (e.g. CVE-2021-44228) from the NVD. Requires the shared secret.
Place an order for a catalog item. Requires explicit confirmation before ordering.
Review the changes in an update set before promotion. Lists all changes with risk assessment.
Search the Service Catalog for items matching a keyword. Returns up to 10 matching items.
Search the NVD for recent CVEs matching a keyword (e.g. a product name). Requires the shared secret.
Search for update sets using a ServiceNow encoded query. Returns up to 10 matching update sets.
Error handling returns generic dicts ('error': 'Unauthorized.', 'error': 'Invalid request.') without recovery guidance. LLMs cannot determine if errors are retryable or what to do next.
No pagination documented for list_* tools. Descriptions state 'up to 10 matching records' but no limit/offset parameters visible. If results exceed 10, agents cannot fetch more.