sn-mcp-bridge
sn-mcp-bridge
Легковесный Model Context Protocol (MCP) сервер, который предоставляет AI-ассистентам по разработке полную возможность разработки на ServiceNow — без необходимости установки где-либо. Он работает локально через npx и подключается к ServiceNow через Table API.
ServiceNow — это платформа разработки на основе записей. Скрипт-инклуды, бизнес-правила, клиентские скрипты, UI-действия, ACL — каждый артефакт разработки является записью в системной таблице. Здесь нет отдельного «слоя кода»; Table API является API разработки. Это означает, что операции CRUD через этот сервер предназначены не только для запроса данных — это то, как вы создаете:
insert_recordвsys_script_include→ создать новый скрипт-инклудupdate_recordнаsys_script→ изменить бизнес-правилоquery_dataнаsys_script_client→ прочитать все клиентские скрипты для таблицыdelete_recordнаsys_ui_action→ удалить UI-действие
Для задач, выходящих за рамки CRUD — тестирование логики, выполнение сложных запросов GlideRecord, вызов скрипт-инклудов или многошаговые транзакции — execute_script предоставляет полноценную среду выполнения JavaScript на стороне сервера.
Сервер работает с правами того пользователя, чьи учетные данные вы предоставили — он может читать/записывать только те таблицы и поля, к которым у этого пользователя есть доступ. Инструмент execute_script требует учетных данных администратора, так как он запускает фоновые скрипты через sys.scripts.do.
Аутентификация поддерживает как Basic Auth, так и OAuth 2.0 (авторизационный код) — см. Аутентификация.
В сообществе распространяется множество открытых MCP-серверов ServiceNow. Этот существует, чтобы оставаться простым, чистым и легко улучшаемым — обычный JS без этапа сборки (4 исходных файла, нативный fetch, Node.js 18+), а добавление инструмента — это один вызов server.registerTool().
Инструменты
CRUD
Инструмент | Описание |
| Запрос записей из любой таблицы с закодированными запросами, выбором полей и пагинацией |
| Получить одну запись по sys_id |
| Создать новую запись |
| Обновить существующую запись |
| Удалить запись по sys_id |
Схема и обнаружение
Инструмент | Описание |
| Получить метаданные таблицы, включая столбцы, типы, варианты выбора, ссылки и иерархию |
| Список всех областей приложения на экземпляре |
| Список таблиц, принадлежащих заданной области |
| Список всех файлов приложения для области, сгруппированных по типу |
Аналитика
Инструмент | Описание |
| Выполнить запросы COUNT, AVG, MIN, MAX, SUM с возможной группировкой |
| Получить простой подсчет записей для таблицы и запроса |
Расширенные
Инструмент | Описание |
| Поиск по полям скриптов с использованием нативного API Code Search (переход к табличным запросам, если плагин недоступен) |
| Сгенерировать определение схемы DBML из таблиц и связей экземпляра |
| Запустить фоновый скрипт на экземпляре через sys.scripts.do ¹ |
Диагностика
Инструмент | Описание |
| Запрос журнала приложения ( |
| Трассировка всех записей журнала для одной транзакции ¹ |
| Чтение журналов уровня узла из браузера файлов журнала экземпляра ¹ |
¹ Для этих четырех инструментов требуется имя пользователя и пароль — см. Аутентификация. Они не регистрируются, если настроены только учетные данные OAuth.
Related MCP server: ServiceNow MCP Server
Аутентификация
Мост поддерживает два режима. Он выбирает OAuth, когда установлены CLIENT_ID, CLIENT_SECRET и GRANT_TYPE; в противном случае используется Basic Auth.
Все переменные следуют одному соглашению об именовании: <INSTANCE_NAME> — это поддомен из SN_INSTANCE, преобразованный в верхний регистр, с заменой дефисов на подчеркивания (например, https://mydev01.service-now.com → SN_MYDEV01_USERNAME). Если переменная с префиксом не установлена, мост переходит к беспрефиксной форме (SN_USERNAME, SN_CLIENT_ID, …).
Basic Auth
Переменная | Обязательно | Описание |
| да | URL вашего экземпляра (например, |
| да | Имя пользователя для basic auth |
| да | Пароль для basic auth |
Предупреждение: В приведенных ниже примерах используются текстовые учетные данные, чтобы вы могли быстро начать работу. Это означает, что ваш пароль хранится в файле на диске и виден AI-ассистенту в каждом вызове API к LLM-провайдеру. После того как вы убедитесь, что соединение работает, настоятельно рекомендуется следовать инструкциям Защита учетных данных с помощью Secretless AI, чтобы переместить секреты из конфигурации!
OAuth 2.0 (Авторизационный код)
OAuth полностью исключает пароль ServiceNow из конфигурации. Мост авторизуется один раз через ваш браузер, а затем самостоятельно обновляет краткосрочный токен доступа.
1. Зарегистрируйте OAuth-приложение в ServiceNow. Перейдите в Система OAuth → Реестр приложений, нажмите Создать, выберите Создать конечную точку OAuth API для внешних клиентов. Дайте ему имя, установите URL перенаправления на http://localhost:33380/callback и сохраните. Скопируйте сгенерированные ID клиента и Секрет клиента.
2. Настройте мост:
Переменная | Обязательно | Описание |
| да | URL вашего экземпляра |
| да | ID клиента из Реестра приложений |
| да | Секрет клиента из Реестра приложений |
| да |
|
| нет | По умолчанию |
| нет | Укажите токен обновления, полученный другим способом, чтобы полностью пропустить шаг с браузером |
| нет | Установите |
Установка любого из CLIENT_ID / CLIENT_SECRET / GRANT_TYPE без остальных приводит к ошибке при запуске, а не к бесшумному переходу на Basic Auth.
3. Первый запуск. Мост открывает ваш браузер на странице согласия экземпляра (URL также выводится в stderr, если это невозможно). После того как вы подтвердите, он перехватывает перенаправление на localhost:33380 и обменивает код на токены.
Первый запуск блокируется на время до трех минут в ожидании вашего подтверждения в браузере. Если ваш MCP-клиент выйдет из тайм-аута до того, как вы закончите, токены обычно уже записаны — просто переподключитесь, и мост запустится без лишних действий.
Хранение токенов. Токены кэшируются в ~/.sn-mcp-bridge/tokens.json (каталог с правами 0700, файл с правами 0600), ключом служат хост экземпляра и ID клиента, так что несколько экземпляров могут сосуществовать в одном файле. Последующие запуски повторно используют кэшированный токен обновления без взаимодействия с браузером. Когда срок действия токена обновления истекает (100 дней по умолчанию в ServiceNow), поток браузера запускается автоматически. Удалите файл, чтобы принудительно выполнить новую авторизацию.
Использование обоих вместе
OAuth покрывает только REST/Table API. execute_script, explore_syslog, explore_syslog_transaction и explore_node_logs обращаются к UI-конечным точкам ServiceNow (sys.scripts.do, ui_page_process.do), которым требуется сессия, созданная через форму входа, которую bearer-токен предоставить не может.
Если вы укажете USERNAME и PASSWORD наряду с переменными 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 вместо Basic Auth
Замените пару имя пользователя/пароль на переменные 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_USERNAME и SN_MYDEV01_PASSWORD в тот же блок — см. Использование обоих вместе.
Несколько экземпляров
Добавьте отдельную запись сервера для каждого экземпляра. Формат конфигурации такой же, как выше — просто повторите шаблон с другим именем сервера и учетными данными для конкретного экземпляра.
Защита учетных данных с помощью Secretless AI
Secretless AI хранит ваши учетные данные в защищенном хранилище и внедряет их во время выполнения через secretless-ai run.
В приведенных ниже примерах защищаются имя пользователя и пароль, но тот же подход работает для SN_MYDEV01_CLIENT_SECRET, если вы используете OAuth.
Настройка
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_PASSWORD2. Обновите конфигурацию 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"
}
}
}
}Формат конфигурации для других редакторов следует тому же образцу, что показан в Quick Start — просто замените command/args на secretless обёртку.
Поддерживаемые бэкенды
Backend | Flag | Лучше всего для |
OS Keychain |
| macOS (рекомендуется) — использует встроенную связку ключей, защищённую вашим паролем входа и Touch ID |
Local encrypted file |
| Windows (рекомендуется) — файл, зашифрованный AES-256-GCM, не требуется дополнительное ПО |
1Password |
| Команды и CI/CD, или пользователи Windows, у которых уже установлен 1Password |
HashiCorp Vault |
| Корпоративные и самостоятельно развернутые решения |
GCP Secret Manager |
| Нативные рабочие нагрузки GCP |
Альтернатива: protect-mcp
Если ваши MCP-конфиги находятся в глобальных путях конфигурации (например, ~/.vscode/mcp.json, ~/.cursor/mcp.json), вы можете использовать protect-mcp для автоматического сканирования и защиты их одним махом:
npx secretless-ai protect-mcp --backend keychainВы можете проверить статус или откатить с помощью mcp-status и mcp-unprotect:
npx secretless-ai mcp-status
npx secretless-ai mcp-unprotectОграничение:
protect-mcp,mcp-statusиmcp-unprotectобнаруживают только глобальные файлы конфигурации. Они не находят конфиги уровня рабочего пространства, такие как.vscode/mcp.json,.mcp.jsonили.codex/config.tomlвнутри директорий проектов. Для конфигов рабочего пространства используйте подходsecret set+runвыше.
Для получения дополнительных сведений о Secretless AI см. полную документацию.
Требования
Node.js 18+ (для нативного
fetch)Экземпляр ServiceNow с доступом к REST API
Либо учетные данные базовой аутентификации для экземпляра, либо зарегистрированное OAuth-приложение (см. Аутентификация)
Лицензия
MIT
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceA 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.47MIT
- AlicenseNot gradedqualityDmaintenanceA 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.3MIT
- AlicenseNot gradedqualityDmaintenanceA 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.6MIT
- AlicenseAqualityAmaintenanceAn 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.8736413MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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