Skip to main content
Glama

sn-mcp-bridge

一个轻量级的 Model Context Protocol (MCP) 服务器,为 AI 编码助手提供 ServiceNow 的完整开发能力——无需在任何地方安装。它通过 npx 在本地运行,并通过 Table API 连接到 ServiceNow。

ServiceNow 是一个基于记录的开发平台。脚本包含、业务规则、客户端脚本、UI 操作、ACL——每一个开发工件都是系统表中的一条记录。没有独立的“代码层”;Table API 就是开发 API。这意味着通过此服务器进行的 CRUD 操作不仅仅是为了查询数据——它们是你构建的方式:

  • insert_recordsys_script_include → 创建一个新的脚本包含

  • update_recordsys_script → 修改一个业务规则

  • query_datasys_script_client → 读取某个表的所有客户端脚本

  • delete_recordsys_ui_action → 删除一个 UI 操作

对于超出 CRUD 的任务——测试逻辑、运行复杂的 GlideRecord 查询、调用脚本包含或多步骤事务——execute_script 提供了一个完整的服务器端 JavaScript 运行时。

该服务器以您提供凭据的任何用户帐户的权限运行——它只能读取/写入该用户有权访问的表和字段。execute_script 工具需要管理员凭据,因为它通过 sys.scripts.do 运行后台脚本。

认证支持 基本认证OAuth 2.0(授权码)——请参阅 认证

社区中分享了许多开源的 ServiceNow MCP 服务器。这个服务器的存在是为了保持简单、纯粹且易于改进——纯 JS,无需构建步骤(4 个源文件,原生 fetch,Node.js 18+),添加一个工具只需调用一次 server.registerTool()

工具

CRUD

工具

描述

query_data

使用编码查询、字段选择和分页从任何表中查询记录

get_record

通过 sys_id 检索单条记录

insert_record

创建一条新记录

update_record

更新一条现有记录

delete_record

通过 sys_id 删除一条记录

模式与发现

工具

描述

get_table_schema

获取表元数据,包括列、类型、选项、引用和层次结构

get_application_scopes

列出实例上的所有应用程序作用域

get_application_tables

列出属于给定作用域的表

get_scoped_app_files

列出某个作用域的所有应用程序文件,按类型分组

分析

工具

描述

aggregate_data

运行 COUNT、AVG、MIN、MAX、SUM 查询,支持可选分组

get_record_count

获取某个表和查询的简单记录计数

高级

工具

描述

search_code

使用原生代码搜索 API 跨脚本字段进行搜索(如果插件不可用,则回退到表查询)

generate_dbml

根据实例的表和关系生成 DBML 模式图定义

execute_script

通过 sys.scripts.do ¹ 在实例上运行后台脚本

诊断

工具

描述

explore_syslog

查询应用程序日志 (syslog) — gs.info/warn/error 输出和异常 ¹

explore_syslog_transaction

追踪单个事务的所有日志条目 ¹

explore_node_logs

从实例的日志文件浏览器读取节点级日志 ¹

¹ 这四个工具需要用户名和密码——请参阅 认证。当仅配置了 OAuth 凭据时,它们不会被注册。

Related MCP server: ServiceNow MCP Server

认证

桥接器支持两种模式。当设置了 CLIENT_IDCLIENT_SECRETGRANT_TYPE 时,它选择 OAuth;否则使用基本认证。

所有变量遵循相同的命名约定:<INSTANCE_NAME> 是来自 SN_INSTANCE 的子域名,大写并将连字符替换为下划线(例如 https://mydev01.service-now.comSN_MYDEV01_USERNAME)。如果带前缀的变量未设置,桥接器会回退到不带前缀的形式(SN_USERNAMESN_CLIENT_ID,……)。

基本认证

变量

必需

描述

SN_INSTANCE

您的实例 URL(例如 https://mydev01.service-now.com

SN_<INSTANCE_NAME>_USERNAME

基本认证的用户名

SN_<INSTANCE_NAME>_PASSWORD

基本认证的密码

警告: 下面的示例使用明文凭据让您快速启动。这意味着您的密码以文件形式存储在磁盘上 并且 在每次对 LLM 提供商的 API 调用中对 AI 助手可见。一旦您确认连接正常,强烈建议您按照 使用 Secretless AI 保护凭据 的说明将明文密钥移出您的配置!

OAuth 2.0(授权码)

OAuth 将您的 ServiceNow 密码完全排除在配置之外。桥接器通过您的浏览器授权一次,然后自行刷新一个短期访问令牌。

1. 在 ServiceNow 中注册一个 OAuth 应用程序。 导航到 系统 OAuth → 应用程序注册表,点击 新建,选择 为外部客户端创建 OAuth API 端点。给它一个名称,将 重定向 URL 设置为 http://localhost:33380/callback,然后保存。复制生成的 客户端 ID客户端密钥

2. 配置桥接器:

变量

必需

描述

SN_INSTANCE

您的实例 URL

SN_<INSTANCE_NAME>_CLIENT_ID

来自应用程序注册表的客户端 ID

SN_<INSTANCE_NAME>_CLIENT_SECRET

来自应用程序注册表的客户端密钥

SN_<INSTANCE_NAME>_GRANT_TYPE

authorization_code(目前唯一支持的授权类型)

SN_<INSTANCE_NAME>_REDIRECT_URI

默认为 http://localhost:33380/callback。必须与 OAuth 应用上的重定向 URL 匹配

SN_<INSTANCE_NAME>_REFRESH_TOKEN

植入从其他地方获得的刷新令牌,以完全跳过浏览器步骤

SN_<INSTANCE_NAME>_USE_PKCE

设置为 true 以发送 S256 代码挑战。默认关闭

单独设置 CLIENT_ID / CLIENT_SECRET / GRANT_TYPE 中的任何一个而没有其他项将导致启动错误,而不是静默回退到基本认证。

3. 首次运行。 桥接器会在您的浏览器中打开实例的同意页面(如果无法打开,URL 也会打印到 stderr)。您批准后,它会在 localhost:33380 上捕获重定向并将代码交换为令牌。

首次运行会阻塞最多三分钟,等待您在浏览器中批准。如果您的 MCP 客户端在您完成之前超时,令牌通常已经写入——只需重新连接,它就会静默启动。

令牌存储。 令牌缓存在 ~/.sn-mcp-bridge/tokens.json(目录 0700,文件 0600)中,按实例主机和客户端 ID 键控,以便多个实例共存于一个文件中。后续运行会重用缓存的刷新令牌,无需浏览器交互。当刷新令牌过期时(ServiceNow 上默认为 100 天),浏览器流程会自动重新触发。删除该文件以强制重新授权。

同时使用两者

OAuth 仅覆盖 REST/Table API。execute_scriptexplore_syslogexplore_syslog_transactionexplore_node_logs 访问需要表单登录会话的 ServiceNow UI 端点(sys.scripts.doui_page_process.do),而承载令牌无法提供此会话。

如果您 同时 提供 USERNAMEPASSWORD 以及 OAuth 变量,则 REST 流量通过 OAuth 进行,而这四个工具使用凭据进行会话登录。如果不提供,这四个工具将不会被注册——助手永远不会看到它们。

快速开始

Claude Code

添加到项目根目录的 .mcp.json(仅在该项目中可用)或 ~/.claude/claude_code_config.json(在所有项目中可用):

{
	"mcpServers": {
		"sn_mydev01": {
			"command": "npx",
			"args": ["-y", "sn-mcp-bridge"],
			"env": {
				"SN_INSTANCE": "https://mydev01.service-now.com",
				"SN_MYDEV01_USERNAME": "your_username",
				"SN_MYDEV01_PASSWORD": "your_password"
			}
		}
	}
}

OpenAI Codex

添加到项目根目录的 .codex/config.toml(仅项目,需要受信任的项目)或 ~/.codex/config.toml(在所有项目中可用):

[mcp_servers.sn_mydev01]
command = "npx"
args = ["-y", "sn-mcp-bridge"]

[mcp_servers.sn_mydev01.env]
SN_INSTANCE = "https://mydev01.service-now.com"
SN_MYDEV01_USERNAME = "your_username"
SN_MYDEV01_PASSWORD = "your_password"

VS Code (GitHub Copilot)

添加到项目中的 .vscode/mcp.json

{
	"servers": {
		"sn_mydev01": {
			"type": "stdio",
			"command": "npx",
			"args": ["-y", "sn-mcp-bridge"],
			"env": {
				"SN_INSTANCE": "https://mydev01.service-now.com",
				"SN_MYDEV01_USERNAME": "your_username",
				"SN_MYDEV01_PASSWORD": "your_password"
			}
		}
	}
}

Cursor

添加到项目中的 .cursor/mcp.json

{
	"mcpServers": {
		"sn_mydev01": {
			"command": "npx",
			"args": ["-y", "sn-mcp-bridge"],
			"env": {
				"SN_INSTANCE": "https://mydev01.service-now.com",
				"SN_MYDEV01_USERNAME": "your_username",
				"SN_MYDEV01_PASSWORD": "your_password"
			}
		}
	}
}

使用 OAuth 替代

将用户名/密码对替换为 OAuth 变量。下面的 env 块适用于上述每个编辑器——只有周围的配置语法不同:

{
	"mcpServers": {
		"sn_mydev01": {
			"command": "npx",
			"args": ["-y", "sn-mcp-bridge"],
			"env": {
				"SN_INSTANCE": "https://mydev01.service-now.com",
				"SN_MYDEV01_CLIENT_ID": "your_client_id",
				"SN_MYDEV01_CLIENT_SECRET": "your_client_secret",
				"SN_MYDEV01_GRANT_TYPE": "authorization_code"
			}
		}
	}
}

为了保持 execute_script 和诊断工具可用,请将 SN_MYDEV01_USERNAMESN_MYDEV01_PASSWORD 添加到同一个块中——请参阅 同时使用两者

多个实例

为每个实例添加一个单独的服务器条目。配置格式与上述相同——只需使用不同的服务器名称和特定于实例的凭据重复该模式。

使用 Secretless AI 保护凭据

Secretless AI 将您的凭据存储在安全的后端,并通过 secretless-ai run 在运行时注入。

下面的示例保护了用户名和密码,但如果您使用 OAuth,同样的方法也适用于 SN_MYDEV01_CLIENT_SECRET

设置

1. 存储您的凭据:

npx secretless-ai secret set SN_MYDEV01_USERNAME=your_username

# Omit the value so it prompts interactively — keeps the password out of shell history
npx secretless-ai secret set SN_MYDEV01_PASSWORD

2. 更新您的 MCP 配置 以使用 secretless-ai run 作为包装器。--only 标志告诉它要注入哪些密钥。SN_INSTANCE 不是密钥,保留在 env 块中:

{
	"mcpServers": {
		"sn_mydev01": {
			"command": "npx",
			"args": ["-y", "secretless-ai", "run", "--only", "SN_MYDEV01_USERNAME,SN_MYDEV01_PASSWORD", "--", "npx", "-y", "sn-mcp-bridge"],
			"env": {
				"SN_INSTANCE": "https://mydev01.service-now.com"
			}
		}
	}
}

对于多个实例,重复该模式——将每个实例的凭据存储在其带前缀的名称下,并添加一个带有相应 --only 列表的服务器条目:

{
	"mcpServers": {
		"sn_mydev01": {
			"command": "npx",
			"args": ["-y", "secretless-ai", "run", "--only", "SN_MYDEV01_USERNAME,SN_MYDEV01_PASSWORD", "--", "npx", "-y", "sn-mcp-bridge"],
			"env": {
				"SN_INSTANCE": "https://mydev01.service-now.com"
			}
		},
		"sn_myprod01": {
			"command": "npx",
			"args": ["-y", "secretless-ai", "run", "--only", "SN_MYPROD01_USERNAME,SN_MYPROD01_PASSWORD", "--", "npx", "-y", "sn-mcp-bridge"],
			"env": {
				"SN_INSTANCE": "https://myprod01.service-now.com"
			}
		}
	}
}

其他编辑器的配置格式与快速开始中展示的模式相同——只需将command/args替换为无密钥包装器即可。

支持的存储后端

后端

标志

最佳适用场景

操作系统钥匙串

--backend keychain

macOS(推荐) — 使用内置钥匙串,通过登录密码和 Touch ID 保护

本地加密文件

--backend local

Windows(推荐) — AES-256-GCM 加密文件,无需额外软件

1Password

--backend 1password

团队和 CI/CD 环境,或已安装 1Password 的 Windows 用户

HashiCorp Vault

--backend vault

企业级和自托管部署

GCP 密钥管理器

--backend gcp-sm

GCP 原生工作负载

替代方案:protect-mcp

如果你的 MCP 配置文件位于全局配置路径(例如 ~/.vscode/mcp.json~/.cursor/mcp.json),可以使用 protect-mcp 一次性自动扫描并保护它们:

npx secretless-ai protect-mcp --backend keychain

你可以通过 mcp-statusmcp-unprotect 检查状态或恢复:

npx secretless-ai mcp-status
npx secretless-ai mcp-unprotect

限制: protect-mcpmcp-statusmcp-unprotect 仅能发现全局配置文件。它们无法找到项目目录中的工作区级配置,例如 .vscode/mcp.json.mcp.json.codex/config.toml。对于工作区配置,请使用上述的 secret set + run 方法。

有关无密钥 AI 的更多详细信息,请参阅完整文档

系统要求

  • Node.js 18+(用于原生 fetch

  • 一个具有 REST API 访问权限的 ServiceNow 实例

  • 该实例的基本认证凭据,或已注册的 OAuth 应用程序(请参阅认证

许可证

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server enabling AI agents to access and manipulate ServiceNow data through natural language interactions, allowing users to search for records, update them, and manage scripts.
    47
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI assistants and development tools to interact with ServiceNow instances, providing comprehensive API coverage for incident management, change management, CMDB, and other ServiceNow modules.
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server for ServiceNow that provides over 60 pre-built tools for ITSM, ITOM, and App Dev operations, enabling AI agents to manage incidents, changes, users, service catalog, and projects through a unified interface.
    6
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that enables AI assistants to interact with ServiceNow instances, allowing script execution, data querying, ATF tests, and log tailing through natural language commands.
    87
    364
    13
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • MCP server for AI access to Swagger by SmartBear.

View all MCP Connectors

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/Reecepoulsen/sn-mcp-bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server