关于 Servicenow Mcp Server
Servicenow Mcp Server 是基于 Bun 和 TypeScript 的 ServiceNow MCP 服务,面向服务台、管理员及平台开发人员。它提供覆盖多个 ServiceNow 领域的工具、只读资源,并支持多实例配置和按角色筛选工具集。
主要功能
- 01提供涵盖 ITSM 与平台开发的工具
- 02支持多个实例及逐次调用指定实例
- 03提供只读 `servicenow://` 资源
- 04按角色选择工具包
- 05支持 Basic 和 OAuth 2.0 身份验证
- 06提供 stdio 与 Streamable HTTP 传输
适用场景
- 01跨开发、测试和生产实例处理记录
- 02服务台人员管理事件与服务请求
- 03平台开发人员编辑脚本和工作流
- 04按团队角色限制可用工具
MCP 相关
该 MCP 服务向客户端公开 ServiceNow 工具和只读 `servicenow://` 资源。支持 stdio 与 Streamable HTTP 传输,并可按实例和工具包配置访问。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
⚙️ ServiceNow MCP 服务
这是一个适用于 ServiceNow 的综合 Model Context Protocol(MCP)服务,基于 Bun 和 TypeScript 构建。提供涵盖 28 个 ServiceNow 领域的 176 个工具、7 个只读资源,以及 10 个基于角色的工具包。支持多实例配置,可针对每次调用指定实例。
✨ 功能
- 176 个 MCP 工具,涵盖 ITSM、平台开发、服务目录、CMDB、知识、敏捷等领域
- 多实例支持 — 配置开发、测试和生产环境,并为每个实例单独设置身份验证;可针对每次调用指定任意实例
- 7 个 MCP 资源 — 用于事件、用户、知识、表和架构的只读
servicenow://URI - 10 个工具包 — 基于角色的工具子集(服务台、平台开发人员、门户开发人员、集成开发人员等)
- 智能解析 — 工具接受易读名称(“Beth Anglin”)、记录编号(“INC0010045”)或 sys_id
- 两种传输方式 — stdio(Claude Desktop / Claude Code)和 Streamable HTTP(Web 集成)
- Basic 和 OAuth 2.0 身份验证,支持自动刷新令牌,并按实例配置
- 进度报告 — 长时间运行的操作(批处理、克隆、移动)会向 MCP 客户端报告进度
- 后台脚本执行 — 通过
sys_trigger运行服务器端 JavaScript - 完整的平台开发支持 — 业务规则、客户端脚本、UI 策略、UI 操作、UI 脚本、脚本包含项、脚本化 REST API、微件、UI 页面、工作流、Flow Designer
- 脚本同步 / 本地开发 — 将脚本下载到本地文件,在 IDE 中编辑,并在保存时自动同步
- 应用程序作用域管理 — 以编程方式切换限定范围的应用程序上下文
- 静态表元数据 — 预缓存 100 个表定义,以便快速查询架构
- 零运行时依赖,除
@modelcontextprotocol/sdk和zod外 — Bun 原生提供 fetch、测试运行器和 TypeScript - 单个 JSON 配置文件 — 无需环境变量,以一个来源为准
🚀 快速开始
前置条件
- Bun v1.0+
- 可访问 REST API 的 ServiceNow 实例
安装和配置
git clone [email protected]:seemsindie/servicenow-mcp-server.git
cd servicenow-mcp-server
bun install
# Create your config file
cp config/servicenow-config.example.json config/servicenow-config.json
# Edit with your instance details and credentials
运行(stdio 传输)
bun run start
# or with explicit config path:
bun run start -- --config /path/to/config.json
运行(HTTP 传输)
bun run start:http
# or:
bun run start:http -- --config /path/to/config.json
# Server starts at http://127.0.0.1:3000
# Health check: GET /health
# MCP endpoint: /mcp
🔧 配置
所有配置都保存在一个 JSON 文件中。服务会按以下顺序查找该文件:
config/servicenow-config.json(相对于 cwd)servicenow-config.json(相对于 cwd)
也可以使用 --config 指定明确的路径:
bun run src/index.ts --config /etc/servicenow/config.json
配置文件格式
{
"instances": [
{
"name": "dev",
"url": "https://dev-instance.service-now.com",
"auth": {
"type": "basic",
"username": "admin",
"password": "dev-password"
},
"default": true,
"description": "Development instance"
},
{
"name": "prod",
"url": "https://prod-instance.service-now.com",
"auth": {
"type": "oauth",
"clientId": "your-client-id",
"clientSecret": "your-client-secret",
"username": "admin",
"password": "prod-password"
},
"description": "Production instance"
}
],
"toolPackage": "full",
"debug": false,
"http": {
"port": 3000,
"host": "127.0.0.1"
}
}
配置参考
| 字段 | 必填 | 默认值 | 描述 |
|---|---|---|---|
instances | 是 | — | ServiceNow 实例配置数组 |
instances[].name | 是 | — | 唯一标识符(用于 instance 参数) |
instances[].url | 是 | — | ServiceNow 实例 URL |
instances[].auth | 是 | — | 身份验证配置(basic 或 oauth) |
instances[].default | 否 | false | 设为默认实例(最多一个) |
instances[].description | 否 | — | 易读的描述 |
toolPackage | 否 | "full" | 工具包筛选器(见下文) |
debug | 否 | false | 启用调试日志 |
http.port | 否 | 3000 | HTTP 传输端口 |
http.host | 否 | "127.0.0.1" | HTTP 传输绑定地址 |
身份验证类型
Basic 身份验证:
{ "type": "basic", "username": "admin", "password": "secret" }
OAuth 2.0:
{
"type": "oauth",
"clientId": "your-client-id",
"clientSecret": "your-client-secret",
"username": "admin",
"password": "secret"
}
每个实例都单独指定自己的身份验证类型和凭据。
🌐 使用多个实例
每个工具都接受可选的 instance 参数。省略该参数时,将使用默认实例。
# Query incidents on the default instance
sn_query_table(table: "incident", query: "active=true")
# Query incidents on a specific instance
sn_query_table(table: "incident", query: "active=true", instance: "prod")
# List all configured instances
sn_list_instances()
# Get info about a specific instance
sn_instance_info(instance: "dev")
MCP 资源(servicenow:// URI)始终使用默认实例。
🖥️ 客户端集成
所有集成都使用同一个 MCP 服务。将 /path/to/servicenow-mcp-server 替换为克隆仓库的实际路径。将 config/servicenow-config.json 放在项目目录中,或使用 --config 指定其他位置。
Claude Desktop
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"servicenow": {
"command": "bun",
"args": [
"run", "/path/to/servicenow-mcp-server/src/index.ts",
"--config", "/path/to/servicenow-config.json"
]
}
}
}
保存后重启 Claude Desktop。
Claude Code(CLI)
通过 CLI 添加:
claude mcp add servicenow -- bun run /path/to/servicenow-mcp-server/src/index.ts --config /path/to/servicenow-config.json
或者添加到 .claude/settings.json(项目级)或 ~/.claude/settings.json(全局):
{
"mcpServers": {
"servicenow": {
"command": "bun",
"args": [
"run", "/path/to/servicenow-mcp-server/src/index.ts",
"--config", "/path/to/servicenow-config.json"
]
}
}
}
VS Code(Copilot)
添加到工作区中的 .vscode/mcp.json(如果文件不存在,请创建):
{
"servers": {
"servicenow": {
"command": "bun",
"args": [
"run", "/path/to/servicenow-mcp-server/src/index.ts",
"--config", "/path/to/servicenow-config.json"
]
}
}
}
或者添加到用户的 settings.json(Cmd+Shift+P > “Preferences: Open User Settings (JSON)”):
{
"mcp": {
"servers": {
"servicenow": {
"command": "bun",
"args": [
"run", "/path/to/servicenow-mcp-server/src/index.ts",
"--config", "/path/to/servicenow-config.json"
]
}
}
}
}
需要 VS Code 1.99+ 和 GitHub Copilot 扩展。如果系统提示,请在设置中启用 MCP 支持:"chat.mcp.enabled": true。
Cursor
添加到项目根目录中的 .cursor/mcp.json(如果文件不存在,请创建):
{
"mcpServers": {
"servicenow": {
"command": "bun",
"args": [
"run", "/path/to/servicenow-mcp-server/src/index.ts",
"--config", "/path/to/servicenow-config.json"
]
}
}
}
若要全局应用(所有项目),请改为添加到 ~/.cursor/mcp.json。保存后重启 Cursor。该服务将显示在 Cursor Settings > MCP 中。
Windsurf
添加到 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"servicenow": {
"command": "bun",
"args": [
"run", "/path/to/servicenow-mcp-server/src/index.ts",
"--config", "/path/to/servicenow-config.json"
]
}
}
}
保存后重启 Windsurf。
Amazon Q CLI
添加到 ~/.aws/amazonq/mcp.json:
{
"mcpServers": {
"servicenow": {
"command": "bun",
"args": [
"run", "/path/to/servicenow-mcp-server/src/index.ts",
"--config", "/path/to/servicenow-config.json"
]
}
}
}
Streamable HTTP(任意客户端)
适用于支持基于 HTTP 的 MCP 传输而非 stdio 的客户端:
bun run start:http -- --config /path/to/servicenow-config.json
# Server starts at http://127.0.0.1:3000
# MCP endpoint: /mcp
# Health check: GET /health
将客户端指向 http://127.0.0.1:3000/mcp,作为 MCP 服务 URL。
📦 工具包
按角色限制公开的工具。在配置文件中设置 toolPackage:
| 工具包 | 模块 | 使用场景 |
|---|---|---|
full | 全部 27 个模块(176 个工具)+ 实例工具 | 完整访问权限(默认) |
service_desk | tables、incidents、users、knowledge、search、problems、requests | 服务台 Agent |
change_coordinator | tables、changes、users、search | 变更管理 |
catalog_builder | tables、catalog、search | 目录管理 |
knowledge_author | tables、knowledge、search | 知识库内容创建 |
platform_developer | tables、scripts、platform_scripts、workflows、flows、changesets、schema、search、background_scripts、scripted_rest、widgets、ui_pages、app_scope、script_sync | 平台开发 |
system_admin | tables、users、schema、search、batch、app_scope、changesets、aggregation、import_sets、attachments | 系统管理 |
agile | tables、agile、users、search | 敏捷团队 |
integration_developer | tables、scripts、platform_scripts、scripted_rest、schema、search、batch、background_scripts、aggregation、import_sets、attachments | 集成与 API 开发 |
portal_developer | tables、widgets、ui_pages、catalog、scripts、platform_scripts、search、schema、script_sync | Service Portal 开发 |
无论使用哪个工具包,实例管理工具(sn_list_instances、sn_instance_info)始终可用。
🛠️ 工具参考
实例管理(2 个工具)——始终可用
sn_list_instances、sn_instance_info
通用表 API(5 个工具)
sn_query_table、sn_get_record、sn_create_record、sn_update_record、sn_delete_record
🎫 事件(7 个工具)
sn_list_incidents、sn_create_incident、sn_update_incident、sn_add_incident_comment、sn_add_incident_work_notes、sn_resolve_incident、sn_close_incident
支持智能解析——assigned_to、caller_id 和 assignment_group 可接受姓名、电子邮件或 sys_id。记录标识符可接受 INC 编号或 sys_id。
👥 用户与组(9 个工具)
sn_list_users、sn_get_user、sn_create_user、sn_update_user、sn_list_groups、sn_create_group、sn_update_group、sn_add_group_members、sn_remove_group_members
组成员工具接受用户名、电子邮件或 sys_id,以及组名或 sys_id。
🔄 变更管理(10 个工具)
sn_list_change_requests、sn_get_change_request、sn_create_change_request、sn_update_change_request、sn_add_change_task、sn_submit_change_for_approval、sn_approve_change、sn_reject_change、sn_add_change_comment、sn_add_change_work_notes
支持智能解析——接受 CHG 编号或 sys_id,并按名称解析用户/组字段。
🐛 问题管理(7 个工具)
sn_list_problems、sn_get_problem、sn_create_problem、sn_update_problem、sn_add_problem_comment、sn_add_problem_work_notes、sn_close_problem
📋 服务请求 / RITM(6 个工具)
sn_list_requests、sn_get_request、sn_list_request_items、sn_get_request_item、sn_update_request_item、sn_submit_catalog_request
🛒 服务目录(13 个工具)
sn_list_catalogs、sn_list_catalog_items、sn_get_catalog_item、sn_update_catalog_item、sn_list_catalog_categories、sn_create_catalog_category、sn_update_catalog_category、sn_move_catalog_items、sn_create_catalog_variable、sn_list_catalog_variables、sn_update_catalog_variable、sn_get_catalog_recommendations、sn_validate_catalog_item
sn_validate_catalog_item 会检查常见问题:缺少描述、没有变量、条目未激活、缺少类别、必填变量没有默认值、变量名称重复,以及缺少价格。
📚 知识库(8 个工具)
sn_list_knowledge_bases、sn_create_knowledge_base、sn_create_kb_category、sn_list_articles、sn_get_article、sn_create_article、sn_update_article、sn_publish_article
🔀 工作流(9 个工具)
sn_list_workflows、sn_get_workflow、sn_create_workflow、sn_update_workflow、sn_delete_workflow、sn_create_workflow_full、sn_create_workflow_activity、sn_create_workflow_transition、sn_publish_workflow
sn_create_workflow_full 是创建工作流的推荐方式——通过一次调用编排完整生命周期:创建基础工作流、版本、活动、转换(可选条件),并可选择发布。在转换定义中,可通过名称或数组索引引用活动。
📝 脚本包含项(5 个工具)
sn_list_script_includes、sn_get_script_include、sn_create_script_include、sn_update_script_include、sn_delete_script_include
▶️ 后台脚本执行(2 个工具)
sn_execute_background_script、sn_create_fix_script
sn_execute_background_script 通过 sys_trigger 机制在实例上运行服务器端 JavaScript——创建一个约 1 秒后触发的一次性计划触发器,使用完整的 GlideRecord/GlideSystem 访问权限执行,并在完成后自动删除。
🧩 平台脚本类型(25 个工具)
为五种脚本类型提供完整的 CRUD 操作(列出、获取、创建、更新、删除):
| 类型 | 表 | 工具 |
|---|---|---|
| 业务规则 | sys_script | sn_list_business_rules、sn_get_business_rule、sn_create_business_rule、sn_update_business_rule、sn_delete_business_rule |
| 客户端脚本 | sys_script_client | sn_list_client_scripts、sn_get_client_script、sn_create_client_script、sn_update_client_script、sn_delete_client_script |
| UI 策略 | sys_ui_policy | sn_list_ui_policys、sn_get_ui_policy、sn_create_ui_policy、sn_update_ui_policy、sn_delete_ui_policy |
| UI 操作 | sys_ui_action | sn_list_ui_actions、sn_get_ui_action、sn_create_ui_action、sn_update_ui_action、sn_delete_ui_action |
| UI 脚本 | sys_ui_script | sn_list_ui_scripts、sn_get_ui_script、sn_create_ui_script、sn_update_ui_script、sn_delete_ui_script |
🔌 脚本化 REST API(7 个工具)
sn_list_scripted_rest_apis、sn_get_scripted_rest_api、sn_create_scripted_rest_api、sn_update_scripted_rest_api、sn_create_rest_resource、sn_update_rest_resource、sn_delete_rest_resource
sn_get_scripted_rest_api 会并行获取 API 定义及其所有资源操作。sn_create_rest_resource 会创建一个端点,包含 HTTP 方法、路径(支持 {param} 语法)和脚本处理程序。
🖼️ Service Portal 小组件(5 个工具)
sn_list_widgets、sn_get_widget、sn_create_widget、sn_update_widget、sn_delete_widget
sn_get_widget 会返回所有脚本组件:HTML 模板、CSS/SCSS、客户端脚本(Angular 控制器)、服务端脚本、链接函数、演示数据和选项架构。
📄 UI 页面(5 个工具)
sn_list_ui_pages、sn_get_ui_page、sn_create_ui_page、sn_update_ui_page、sn_delete_ui_page
每个 UI 页面包含三个脚本组件:html(Jelly/HTML 主体)、client_script 和 processing_script(服务端脚本)。
🌊 Flow Designer(6 个工具)
sn_list_flows、sn_get_flow、sn_create_flow、sn_list_flow_variables、sn_create_flow_variable、sn_list_flow_stages
sn_get_flow 会并行获取流程定义及所有逻辑块和变量。
📦 更新集(9 个工具)
sn_list_update_sets、sn_get_update_set、sn_create_update_set、sn_update_update_set、sn_set_current_update_set、sn_commit_update_set、sn_add_to_update_set、sn_move_to_update_set、sn_clone_update_set
sn_move_to_update_set 可按 sys_id、源更新集或时间范围在更新集之间移动记录,并报告进度。sn_clone_update_set 会复制一个更新集及其所有 sys_update_xml 记录。
🏃 敏捷开发(12 个工具)
sn_list_stories、sn_create_story、sn_update_story、sn_list_epics、sn_create_epic、sn_update_epic、sn_list_scrum_tasks、sn_create_scrum_task、sn_update_scrum_task、sn_list_projects、sn_create_project、sn_update_project
🖧 CMDB(5 个工具)
sn_list_ci、sn_get_ci、sn_create_ci、sn_list_ci_relationships、sn_create_ci_relationship
🔍 架构发现(4 个工具)
sn_get_table_schema、sn_discover_table、sn_list_tables、sn_explain_field
sn_explain_field 会提供特定字段的详细元数据,包括类型、引用目标、最大长度、选项和默认值。架构工具利用包含 100 个预加载表定义的静态缓存,实现即时查询。
🔎 自然语言搜索(1 个工具)
sn_natural_language_search — 将通俗英语转换为 ServiceNow 编码查询(16 个模式匹配器)
🎯 应用范围(2 个工具)
sn_get_current_application、sn_set_application_scope
在范围应用中创建记录前,可切换当前应用范围。接受 sys_id 或范围字符串(例如 x_myapp_module)。
💻 脚本同步 / 本地开发(3 个工具)
sn_sync_script_to_local、sn_sync_local_to_script、sn_watch_and_sync
本地开发工作流:
sn_sync_script_to_local— 将任意脚本记录下载到本地文件。多字段记录(小组件、UI 页面)会在子目录中为每个组件创建一个文件。并创建.sn-sync.json清单。- 在 IDE 中编辑,享受完整的语法高亮、代码检查和 IntelliSense。
sn_sync_local_to_script— 将本地文件推送回 ServiceNow。根据清单自动检测目标。sn_watch_and_sync— 监视文件更改,并在保存时自动同步(每 2 秒轮询)。在后台运行。
⚡ 批量操作(3 个工具)
sn_batch_create、sn_batch_update、sn_batch_delete — 跨表并行创建、更新和删除记录,并报告进度
📎 附件(3 个工具)
sn_upload_attachment、sn_list_attachments、sn_get_attachment
向任意记录上传文件、列出记录上的附件,以及获取附件元数据/内容。
📊 聚合(1 个工具)
sn_aggregate_table — 通过 /api/now/stats 端点运行聚合查询(COUNT、SUM、AVG、MIN、MAX),支持可选的分组和编码后的查询筛选条件
📥 导入集(2 个工具)
sn_create_import_set、sn_run_transform
以编程方式创建导入集行并运行转换映射,将数据加载到 ServiceNow 表中。
📡 MCP 资源
资源始终使用默认实例。
| URI | 描述 |
|---|---|
servicenow://incidents | 最近的 20 条事件 |
servicenow://users | 活跃用户(上限为 50) |
servicenow://knowledge | 已发布的知识文章 |
servicenow://tables | 可用的表定义 |
servicenow://tables/{table} | 任意表中的记录 |
servicenow://schema/{table} | 表架构(字段、类型) |
servicenow://incidents/{number} | 按编号查询的特定事件 |
🧪 开发
# Type check
bun run typecheck
# Run tests (279 tests across 26 files)
bun test
# Dev mode (auto-reload)
bun run dev
🏗️ 架构
src/
index.ts # stdio entry point (--config support)
http.ts # Streamable HTTP entry point (--config support)
server.ts # MCP server setup, modular tool registration
config.ts # JSON config loader + Zod validation
auth/ # Basic & OAuth providers (per-instance)
client/
index.ts # ServiceNow REST client
registry.ts # InstanceRegistry — maps instance names to clients
errors.ts # SN-specific error classes
types.ts # API response types
config/
table-definitions.json # 100 pre-cached table definitions
tools/ # 28 domain tool modules
tables.ts # Generic Table API CRUD (any table)
incidents.ts # Incident management + smart resolution
changes.ts # Change requests + tasks + approvals
users.ts # Users, groups, members
catalog.ts # Service catalog items/categories/variables/validation
knowledge.ts # Knowledge bases, categories, articles
workflows.ts # Workflows + orchestration (version/activities/transitions/publish)
scripts.ts # Script includes
changesets.ts # Update sets + move/clone
agile.ts # Stories, epics, scrum tasks, projects
cmdb.ts # CMDB CIs + relationships
schema.ts # Schema discovery / table introspection
search.ts # Natural language search
batch.ts # Batch create/update/delete with progress
background-scripts.ts # Background script execution via sys_trigger
platform-scripts.ts # Business rules, client scripts, UI policies/actions/scripts
scripted-rest.ts # Scripted REST API definitions + operations
widgets.ts # Service Portal widgets (sp_widget)
ui-pages.ts # UI pages (sys_ui_page)
flows.ts # Flow Designer (sys_hub_flow + related)
app-scope.ts # Application scope management
script-sync.ts # Script sync / local development workflow
problems.ts # Problem management
requests.ts # Service requests + requested items (RITM)
attachments.ts # File attachments (upload/list/get)
aggregation.ts # Aggregate stats (COUNT/SUM/AVG/MIN/MAX)
import-sets.ts # Import sets + transform maps
instances.ts # Instance management (always available)
resources/ # 7 servicenow:// MCP resources (default instance)
packages/ # 10 role-based tool package definitions
utils/
logger.ts # Logger (stderr-safe)
query.ts # Encoded query builder
resolve.ts # Smart name/number resolution
progress.ts # MCP progress notification helper
table-metadata.ts # Static table metadata loader
config/
servicenow-config.example.json # Config template
📦 依赖项
@modelcontextprotocol/sdk— MCP 协议实现zod— 架构验证
没有其他运行时依赖项。Bun 提供原生 fetch、测试运行器和 TypeScript 执行环境。
📄 许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。