← Back to directory
S

ServiceNow MCP Server

Community
Connect Claude to ServiceNow instances via MCP
GitHub source repository ↗
★ 294 Stars Category · Other Popular Source revision 06250607bdfc
49FMRS · D
Reliability
7/20
Security and permissions
4/20
Maintenance
9/20
Documentation
16/20
Setup experience
13/20

A broad, community-maintained MCP server for ServiceNow covering incident, change, catalog, knowledge base, agile, workflow, and user management use cases, with role-based tool packaging to limit exposed tools. Requires a live ServiceNow instance and credentials, defaults to broad write permissions, and should be scoped down via tool packages and credentials handled carefully.

Read the FMRS scoring method →

ServiceNow MCP Server is an open-source Model Context Protocol server implementation written in Python that lets Claude connect to ServiceNow instances, query records, and perform actions through the ServiceNow API. It supports Basic, OAuth, and API Key authentication, and ships with tools spanning incident management, the service catalog, change management, agile management (stories, epics, scrum tasks, projects), workflow management, script includes, changesets, knowledge base management, user/group management, and UI policies. A MCP_TOOL_PACKAGE environment variable lets you load role-based subsets of tools (e.g. service desk, catalog builder, change coordinator) to control how many tools are exposed to the model. It runs in both stdio mode and as an SSE-based web server.

Tools

create_incident
Create a new incident record in ServiceNow
update_incident
Update fields on an existing incident
add_comment
Add a comment to an incident
resolve_incident
Mark an incident as resolved
list_incidents
List incidents with optional filters
list_catalog_items
List items in the service catalog
get_catalog_item
Get details of a specific catalog item
list_catalog_categories
List service catalog categories
create_catalog_category
Create a new service catalog category
update_catalog_category
Update an existing service catalog category
move_catalog_items
Move catalog items between categories
create_catalog_item_variable
Create a form field (variable) for a catalog item
list_catalog_item_variables
List all variables for a catalog item
update_catalog_item_variable
Update an existing catalog item variable
list_catalogs
List service catalogs
get_optimization_recommendations
Get recommendations for optimizing the service catalog
update_catalog_item
Update a service catalog item
create_change_request
Create a new change request
update_change_request
Update an existing change request
list_change_requests
List change requests with filtering options
get_change_request_details
Get detailed information about a specific change request
add_change_task
Add a task to a change request
submit_change_for_approval
Submit a change request for approval
approve_change
Approve a change request
reject_change
Reject a change request
create_story
Create a new user story
update_story
Update an existing user story
list_stories
List user stories with filtering options
create_story_dependency
Create a dependency between two stories
delete_story_dependency
Delete a dependency between stories
create_epic
Create a new epic
update_epic
Update an existing epic
list_epics
List epics with filtering options
create_scrum_task
Create a new scrum task
update_scrum_task
Update an existing scrum task
list_scrum_tasks
List scrum tasks with filtering options
create_project
Create a new project
update_project
Update an existing project
list_projects
List projects with filtering options
list_workflows
List workflows
get_workflow
Get a specific workflow
create_workflow
Create a new workflow
update_workflow
Update an existing workflow
delete_workflow
Delete a workflow
list_script_includes
List script includes
get_script_include
Get a specific script include
create_script_include
Create a new script include
update_script_include
Update an existing script include
delete_script_include
Delete a script include
list_changesets
List changesets with filtering options
get_changeset_details
Get detailed information about a specific changeset
create_changeset
Create a new changeset
update_changeset
Update an existing changeset
commit_changeset
Commit a changeset
publish_changeset
Publish a changeset to production
add_file_to_changeset
Add a file to a changeset
create_knowledge_base
Create a new knowledge base
list_knowledge_bases
List knowledge bases with filtering options
create_category
Create a new category in a knowledge base
create_article
Create a new knowledge article
update_article
Update an existing knowledge article
publish_article
Publish a knowledge article
list_articles
List knowledge articles with filtering options
get_article
Get a specific knowledge article by ID
create_user
Create a new user
update_user
Update an existing user
get_user
Get a specific user by ID, username, or email
list_users
List users with filtering options
create_group
Create a new group
update_group
Update an existing group
add_group_members
Add members to a group
remove_group_members
Remove members from a group
list_groups
List groups with filtering options
create_ui_policy
Create a UI policy, typically for a catalog item
create_ui_policy_action
Create an action tied to a UI policy to control variable state (visibility, mandatory, etc.)
list_tool_packages
List available tool package names and show the currently loaded package

Setup

  1. Clone the repository: git clone https://github.com/echelon-ai-labs/servicenow-mcp.git and cd into it. 2. Create a virtual environment and install: python -m venv .venv, activate it, then pip install -e . (requires Python 3.11+). 3. Create a .env file with SERVICENOW_INSTANCE_URL, SERVICENOW_USERNAME, SERVICENOW_PASSWORD, and SERVICENOW_AUTH_TYPE (basic/oauth/api_key — OAuth needs CLIENT_ID/CLIENT_SECRET/TOKEN_URL, API Key needs SERVICENOW_API_KEY). 4. Run in stdio mode with python -m servicenow_mcp.cli, or start the SSE web server with servicenow-mcp-sse (default 0.0.0.0:8080). 5. For Claude Desktop, add a server entry to claude_desktop_config.json with the command, args, and env fields as shown, then restart Claude Desktop. 6. Optionally set MCP_TOOL_PACKAGE and edit config/tool_packages.yaml to limit which tools load for a given role.
claude_desktop_config.json
{"mcpServers":{"ServiceNow":{"command":"/Users/yourusername/dev/servicenow-mcp/.venv/bin/python","args":["-m","servicenow_mcp.cli"],"env":{"SERVICENOW_INSTANCE_URL":"https://your-instance.service-now.com","SERVICENOW_USERNAME":"your-username","SERVICENOW_PASSWORD":"your-password","SERVICENOW_AUTH_TYPE":"basic"}}}}

Fit and risk

Best for

  • IT service desk staff and administrators with access to a ServiceNow instance
  • ServiceNow admins/developers who want conversational control over change management, catalog building, or knowledge base work
  • Teams wanting to automate agile project tracking (stories/epics/tasks) inside ServiceNow via Claude

Not for

  • Users without a ServiceNow instance or valid credentials
  • Scenarios requiring strictly read-only access — the default 'full' tool package grants full create/update/delete permissions
  • Enterprises needing official ServiceNow vendor support or SLAs (this is a third-party community project, not an official ServiceNow product)

Required permissions

  • ServiceNow instance URL and an account with read/write access to relevant tables (incident, change_request, sc_cat_item, kb_knowledge, sys_user, sys_user_group, sys_script_include, workflow, sys_update_set, etc.)
  • Basic auth username/password, OR OAuth client ID/secret, OR an API key (one authentication method)
  • Local filesystem access to read the .env file storing credentials

Risks and side effects

  • The default 'full' tool package grants create, update, and even delete access across incidents, changes, catalog, knowledge base, and users/groups — misuse could modify or destroy production data
  • Credentials are stored in plaintext in the .env file or Claude Desktop config, creating exposure risk
  • Tools like approve_change, reject_change, publish_changeset, and publish_article directly affect live ServiceNow processes and visibility, and should be granted carefully
  • The SSE server listens on 0.0.0.0 by default, which could allow unauthorized access without proper network isolation

Troubleshooting

  1. 'argument after ** must be a mapping, not CreateChangeRequestParams': pass a dictionary, not a Pydantic model object, to create_change_request
  2. 'Missing required parameter type': include both short_description and type when creating a change request
  3. 'Invalid value for parameter type': type must be one of normal, standard, or emergency
  4. 'Cannot find get_headers method in either auth_manager or server_config': verify auth_manager and server_config are passed in the correct order
  5. Confirm SERVICENOW_INSTANCE_URL and the credential fields in .env match the selected SERVICENOW_AUTH_TYPE
  6. If expected tools are missing, check whether MCP_TOOL_PACKAGE is set to a valid package name defined in config/tool_packages.yaml

Use cases

Have Claude create, update, comment on, and resolve ServiceNow incidents
Query and manage service catalog items, categories, and form variables through natural language
Create and progress change requests through the approval workflow
Manage agile artifacts — user stories, epics, scrum tasks, and projects
Create, publish, and maintain knowledge base articles
Manage ServiceNow users, groups, and group membership
View, create, and publish changesets and script includes for platform development

Supported clients

Claude DesktopFull support