ServiceNow-MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WRITE_ENABLED | No | Set to 'true' to enable write operations (create/update/delete) | false |
| MCP_TOOL_PACKAGE | No | Tool package to use (e.g., 'full', 'service_desk', etc.) | |
| SCRIPTING_ENABLED | No | Set to 'true' to enable script execution | false |
| CMDB_WRITE_ENABLED | No | Set to 'true' to enable CMDB write operations | false |
| NOW_ASSIST_ENABLED | No | Set to 'true' to enable Now Assist AI features | false |
| SN_INSTANCES_CONFIG | No | Path to instances JSON file for multi-instance support | |
| SERVICENOW_INSTANCE_URL | No | The URL of your ServiceNow instance (e.g., https://dev12345.service-now.com) | |
| SERVICENOW_OAUTH_PASSWORD | No | The password for Password Grant authentication (required if using password grant) | |
| SERVICENOW_OAUTH_USERNAME | No | The username for Password Grant authentication (required if using password grant) | |
| SERVICENOW_OAUTH_CLIENT_ID | No | The OAuth client ID from the Application Registry | |
| SERVICENOW_OAUTH_CLIENT_SECRET | No | The OAuth client secret from the Application Registry |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| query_recordsB | Query ServiceNow records with filtering, field selection, pagination, and sorting |
| get_table_schemaA | Get the structure and field information for a ServiceNow table |
| get_recordA | Retrieve complete details of a specific record by sys_id |
| get_userB | Look up user details by email or username |
| get_groupA | Find assignment group details by name or sys_id |
| search_cmdb_ciB | Search for configuration items (CIs) in the CMDB |
| get_cmdb_ciB | Get complete information about a specific configuration item |
| list_relationshipsA | Show parent and child relationships for a CI |
| list_discovery_schedulesA | List discovery schedules and their run status |
| list_mid_serversA | List MID servers and verify they are healthy |
| list_active_eventsC | Monitor critical infrastructure events |
| cmdb_health_dashboardA | Get CMDB data quality metrics (completeness of server and network CI data) |
| service_mapping_summaryA | View service dependencies and related CIs for impact analysis |
| natural_language_searchB | Search ServiceNow using plain English (experimental) |
| natural_language_updateA | Update a record using natural language (experimental, requires WRITE_ENABLED=true) |
| list_instancesA | List all configured ServiceNow instances (multi-instance / multi-customer support) |
| switch_instanceA | Switch the active ServiceNow instance for this session |
| get_current_instanceA | Get the currently active ServiceNow instance name and URL |
| create_ci_relationshipA | [Write] Create a relationship between two CMDB Configuration Items |
| cmdb_impact_analysisB | Analyze the downstream impact of a Configuration Item change or outage |
| run_discovery_scanB | [Write] Trigger a ServiceNow Discovery scan for network/infrastructure |
| create_incidentA | Create a new incident record (requires WRITE_ENABLED=true) |
| get_incidentA | Get full details of an incident by number (e.g. INC0012345) or sys_id |
| update_incidentA | Update fields on an existing incident (requires WRITE_ENABLED=true) |
| resolve_incidentA | Resolve an incident with resolution code and notes (requires WRITE_ENABLED=true) |
| close_incidentA | Close a resolved incident (requires WRITE_ENABLED=true) |
| add_work_noteA | Add an internal work note to any ITSM record (requires WRITE_ENABLED=true) |
| add_commentA | Add a customer-visible comment to any ITSM record (requires WRITE_ENABLED=true) |
| create_problemB | Create a new problem record (requires WRITE_ENABLED=true) |
| get_problemA | Get full details of a problem by number (PRB...) or sys_id |
| update_problemA | Update fields on an existing problem (requires WRITE_ENABLED=true) |
| resolve_problemA | Resolve a problem with root cause and resolution notes (requires WRITE_ENABLED=true) |
| create_change_requestB | Create a new change request (requires WRITE_ENABLED=true) |
| get_change_requestA | Get full details of a change request by number (CHG...) or sys_id |
| update_change_requestA | Update fields on a change request (requires WRITE_ENABLED=true) |
| list_change_requestsA | List change requests with optional filtering by state or query |
| submit_change_for_approvalA | Move a change request to "Requested" state for approval (requires WRITE_ENABLED=true) |
| close_change_requestA | Close a change request with close code and notes (requires WRITE_ENABLED=true) |
| schedule_cab_meetingC | [Write] Schedule a Change Advisory Board (CAB) meeting |
| get_taskA | Get details of any task record by number or sys_id |
| update_taskA | Update fields on a task record (requires WRITE_ENABLED=true) |
| list_my_tasksA | List tasks assigned to the currently configured user |
| complete_taskA | Mark a task as complete (requires WRITE_ENABLED=true) |
| list_knowledge_basesB | List all knowledge bases available in the instance |
| search_knowledgeA | Search knowledge base articles by keyword |
| get_knowledge_articleA | Get the full content of a knowledge article by number (KB...) or sys_id |
| create_knowledge_articleB | Create a new knowledge article (requires WRITE_ENABLED=true) |
| update_knowledge_articleA | Update a knowledge article (requires WRITE_ENABLED=true) |
| publish_knowledge_articleA | Publish a draft knowledge article (requires WRITE_ENABLED=true) |
| retire_knowledge_articleA | [Write] Retire a knowledge article (mark as outdated) |
| list_catalog_itemsC | List available service catalog items |
| search_catalogA | Search the service catalog for items matching a keyword |
| get_catalog_itemA | Get full details of a catalog item including its variables |
| create_catalog_itemA | Create a new service catalog item (requires WRITE_ENABLED=true) |
| update_catalog_itemA | Update an existing catalog item (requires WRITE_ENABLED=true) |
| order_catalog_itemA | Order a service catalog item (requires WRITE_ENABLED=true) |
| create_approval_ruleA | Create an approval rule that automatically generates approval requests when a record matches given conditions (requires WRITE_ENABLED=true). Uses the sysapproval_rule table. |
| get_my_approvalsA | List approvals pending for the currently configured user |
| list_approvalsA | List approval requests with optional filters |
| approve_requestA | Approve a pending approval request (requires WRITE_ENABLED=true) |
| reject_requestA | Reject a pending approval request (requires WRITE_ENABLED=true) |
| get_sla_detailsA | Get SLA breach status for a specific task or incident |
| list_active_slasA | List active SLA records with optional filters |
| create_catalog_variableA | [Write] Add a form variable to a service catalog item |
| create_catalog_ui_policyA | [Write] Create a UI policy for a catalog item form |
| list_requestsB | List service catalog requests (sc_request). Supports filtering by state and requested_for user. |
| get_requestA | Get a service catalog request (sc_request) by number or sys_id, including its requested items |
| list_request_itemsB | List requested items (sc_req_item) for a given request or catalog item |
| get_request_itemA | Get a requested item (sc_req_item) by number or sys_id, including its fulfillment tasks |
| cancel_requestA | Cancel an open service catalog request (requires WRITE_ENABLED=true) |
| update_request_itemA | Update a requested item — stage, assignment, or work notes (requires WRITE_ENABLED=true) |
| list_usersB | List users with optional search filter |
| create_userA | Create a new user account (requires WRITE_ENABLED=true) |
| update_userA | Update a user account (requires WRITE_ENABLED=true) |
| list_groupsA | List groups with optional search filter |
| create_groupA | Create a new assignment group (requires WRITE_ENABLED=true) |
| update_groupA | Update a group (requires WRITE_ENABLED=true) |
| add_user_to_groupA | Add a user to a group (requires WRITE_ENABLED=true) |
| remove_user_from_groupA | Remove a user from a group (requires WRITE_ENABLED=true) |
| list_reportsA | List saved reports in the instance (latest release: /api/now/reporting) |
| get_reportA | Get the definition and metadata of a saved report |
| run_aggregate_queryB | Run a grouped aggregate (COUNT, SUM, AVG) query on any table (latest release: /api/now/stats/{table}) |
| trend_queryA | Get time-bucketed trend data for a table (useful for monthly/weekly trend charts) |
| get_performance_analyticsB | Get Performance Analytics widget data (requires PA plugin; latest release: /api/now/pa/widget/{sys_id}) |
| export_report_dataB | Export raw table data as structured JSON for use in external reports |
| get_sys_logA | Retrieve system log entries for debugging or auditing |
| list_scheduled_jobsA | List scheduled jobs and their run schedules |
| get_scheduled_jobA | Get full details of a scheduled job by sys_id or name |
| create_scheduled_jobA | Create a new scheduled script execution job (requires WRITE_ENABLED=true) |
| update_scheduled_jobA | Update a scheduled job (requires WRITE_ENABLED=true) |
| trigger_scheduled_jobA | Immediately execute a scheduled job on-demand (requires WRITE_ENABLED=true) |
| create_reportA | Create a new saved report on any table (requires WRITE_ENABLED=true) |
| update_reportA | Update an existing saved report definition (requires WRITE_ENABLED=true) |
| list_job_run_historyA | List recent run history for scheduled jobs (success/failure log) |
| create_scheduled_reportB | [Write] Schedule a report for recurring email delivery |
| create_kpiC | [Write] Create a Key Performance Indicator from ServiceNow data |
| list_atf_suitesA | List ATF test suites in the instance |
| get_atf_suiteA | Get details of a test suite including test count |
| run_atf_suiteA | Execute an ATF test suite (requires ATF_ENABLED=true) |
| list_atf_testsA | List ATF test cases, optionally filtered by suite |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| morning-standup | Daily standup briefing — P1/P2 incidents, SLA breaches, changes due today |
| my-tickets | All open tasks, incidents, and requests assigned to me |
| p1-alerts | Active P1 incidents with time open and assignee |
| my-changes | My pending change requests and their approval status |
| knowledge-search | Search the knowledge base |
| create-incident | Guided incident creation — asks for details then creates the record |
| sla-breaches | Records currently breaching or about to breach SLA |
| ci-health | CMDB health check for a named CI |
| run-atf | Trigger an ATF test suite and report results |
| switch-instance | Switch to a different ServiceNow instance for this session |
| deploy-updateset | Preview and commit an update set |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| my-incidents | Open incidents currently assigned to me |
| open-changes | Change requests pending approval or scheduled this week |
| sla-breaches | Records currently breaching or about to breach SLA |
| instance:info | Current active ServiceNow instance metadata |
| ci:<name> | CMDB Configuration Item by name (e.g. @ci:web-prod-01) |
| kb:<title> | Knowledge Base article by title (e.g. @kb:VPN-setup) |
TDQS
Scored across 376 tools
Many tools are clearly scoped, but there are direct overlaps: list_changesets/list_update_sets, get_virtual_agent_topics/list_va_topics_full, natural_language_search/nlq_query/ai_search, and check_table_completeness/analyze_data_quality. With 376 tools, an agent will frequently struggle to pick the intended one.
The list/get/create/update convention is visible, but naming is inconsistent within the same domain: list_changesets vs list_update_sets, get_virtual_agent_topics (a list despite the get prefix), and mixed verbs like trigger_flow, run_transform_map, and execute_background_script. The use of changeset vs update_set and uib vs ux for similar concepts makes tool-name prediction unreliable.
376 tools is an extreme scope for a single MCP server and flattens nearly the entire ServiceNow platform into one namespace. This overwhelms tool-selection and context budgets; the server should be split into focused domain servers like ITSM, CMDB, Portal, or Flow.
Coverage is broad across ITSM, HR, CSM, CMDB, flows, portals, and admin functions, but there are notable lifecycle gaps: create_flow exists without update_flow, create_subflow without update_subflow, and there is no dedicated list_incidents or list_problems beyond generic query_records. Update-set tooling is also split confusingly across changeset and update_set tools.