servicenow-platform-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SERVICENOW_ENV | No | Set to 'prod' or 'production' to block write operations | |
| MCP_TOOL_PACKAGE | No | Tool package preset: full, readonly, core_readonly, none, or a comma-separated list of group names | full |
| SERVICENOW_PASSWORD | Yes | Your ServiceNow password | |
| SERVICENOW_USERNAME | Yes | Your ServiceNow username | |
| SERVICENOW_INSTANCE_URL | Yes | Your ServiceNow instance URL, e.g. https://dev12345.service-now.com |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_tool_packagesA | List all available tool packages and their tool groups. |
| queryA | Read records, aggregates, or a single record from any ServiceNow table. Args:
table: ServiceNow table name (e.g. 'incident').
sys_id: When set, fetch a single record by sys_id (other filter args ignored
except |
| describeA | Return slim field metadata for a table, or list script-bearing fields. Args:
table: ServiceNow table name. Required unless |
| record_writeA | Create, update, or delete a record. Defaults to preview mode. Script-bearing tables (Business Rules, Script Includes, widgets, etc.)
are not special-cased - script-field discovery happens at runtime via
Args:
action: 'create' | 'update' | 'delete'.
table: Target table. Required.
sys_id: Required for 'update' and 'delete'.
data: JSON string of field values. Required for 'create' and
'update'.
script_path: Optional absolute path to a local script file. Content
is read (UTF-8, max 1 MB) and stored under the resolved
target script field. Path resolved with strict=True;
constrained to |
| record_applyA | Commit a previously previewed write. Single-use token. Args:
preview_token: The token returned by |
| record_readA | Fetch a record by sys_id or name from any table. Exactly one of Args:
table: ServiceNow table name (e.g. |
| attachmentA | Read attachments. action: 'list' | 'get' | 'download' | 'download_by_name'. Args: action: One of: list, get, download, download_by_name. sys_id: Attachment sys_id (for get, download). table: Parent table (for list, download_by_name). table_sys_id: Parent record sys_id (for list, download_by_name). file_name: File name (for download_by_name). |
| attachment_writeA | Write attachments. action: 'upload' | 'delete'. Args: action: 'upload' or 'delete'. table: Parent table (upload). table_sys_id: Parent record sys_id (upload). file_name: Attachment file name (upload). content_base64: Base64-encoded file bytes (upload). content_type: MIME type (upload, default 'application/octet-stream'). sys_id: Attachment sys_id (delete). |
| investigateA | Run an investigation or explain a finding. Args: action: 'run' | 'explain' | 'describe'. name: Investigation name (required for 'run', optional for 'describe'). Available: stale_automations, deprecated_apis, table_health, acl_conflicts, error_analysis, slow_transactions, performance_bottlenecks. params: JSON string of run parameters (run only). element_id: 'table:sys_id' identifier of a finding (explain only). |
| resolve_choiceA | Resolve a choice label to its underlying value via ChoiceRegistry. Args: table: ServiceNow table name. field: Field name on that table. label: Choice label to resolve. When empty, returns the full {label: value} mapping for the field. |
| service_catalogB | Service Catalog operations. Dispatch on Args: action: One of: catalogs_list, catalog_get, categories_list, category_get, items_list, item_get, item_variables, order_now, add_to_cart, cart_get, cart_submit, cart_checkout. sys_id: Record sys_id (catalog_get, category_get, item_get, item_variables). item_sys_id: Catalog item sys_id (order_now, add_to_cart). catalog_sys_id: Catalog sys_id (categories_list). catalog: Filter by catalog sys_id (items_list). category: Filter by category sys_id (items_list). text: Search text (catalogs_list, items_list). variables: JSON object of variable name/value pairs (order_now, add_to_cart). limit: Max results (catalogs_list, categories_list, items_list). Default 20. offset: Pagination offset (categories_list, items_list). Default 0. top_level_only: Return only top-level categories (categories_list). |
| build_queryA | Build a ServiceNow encoded query string from a JSON array of conditions. Each condition is an object with:
Operator groups:
Comparison: equals, not_equals, greater_than, greater_or_equal,
less_than, less_or_equal
String: contains, starts_with, like, ends_with, not_like,
does_not_contain
Null / special: is_empty, is_not_empty, anything, empty_string
Time: hours_ago, minutes_ago, days_ago, older_than_days
Date: on, not_on, relative_gt, relative_lt, more_than
Date part: datepart (requires Args: conditions: JSON array of condition objects. Returns the encoded query string in |
| auditA | Inspect ServiceNow audit posture (table/field config) and audit trail. IMPORTANT: Args: action: 'check_field' | 'check_fields' | 'check_table' | 'history' | 'describe'. table: ServiceNow table name (required for all actions except 'describe'). field: Field name (required for 'check_field'). fields_csv: Comma-separated field names (required for 'check_fields', 1..50). sys_id: 32-char record sys_id (required for 'history'). since: YYYY-MM-DD cutoff (history only; overrides window_days). window_days: Audit-trail/positive-control window (defaults to 90). limit: Row cap for 'history' (defaults to settings.max_row_limit). |
| flowA | Inspect Flow Designer flows, triggers, and value blobs (read-only). Args: action: 'inspect' | 'find_by_table' | 'decode_values' | 'list_triggers' | 'describe'. sys_id: Flow sys_id (inspect; mutually exclusive with name). name: Flow name (inspect; mutually exclusive with sys_id). value: gzip+base64+JSON blob to decode (decode_values). table: Target table (find_by_table; optional filter for list_triggers). trigger_type: Trigger type filter (list_triggers, e.g. 'record_update'). active: 'true' | 'false' filter (list_triggers). limit: Row cap for list_triggers (default 100). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Xerrion/servicenow-platform-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server