Сервер MCP ServiceNow
Реализация сервера протокола завершения модели (MCP) для ServiceNow, позволяющая Клоду взаимодействовать с экземплярами ServiceNow.
Обзор
Этот проект реализует сервер MCP, который позволяет Claude подключаться к экземплярам ServiceNow, извлекать данные и выполнять действия через API ServiceNow. Он служит мостом между Claude и ServiceNow, обеспечивая бесшовную интеграцию.
Функции
- Подключайтесь к экземплярам ServiceNow, используя различные методы аутентификации (Basic, OAuth, API Key)
- Запрос записей и таблиц ServiceNow
- Создание, обновление и удаление записей ServiceNow
- Выполнение сценариев и рабочих процессов ServiceNow
- Доступ и запросы к каталогу услуг ServiceNow
- Анализ и оптимизация каталога услуг ServiceNow
- Режим отладки для устранения неполадок
- Поддержка связи как stdio, так и Server-Sent Events (SSE)
Установка
Предпосылки
- Python 3.11 или выше
- Экземпляр ServiceNow с соответствующими учетными данными для доступа
Настраивать
- Клонируйте этот репозиторий:
- Создайте виртуальную среду и установите пакет:
- Создайте файл
.env
с вашими учетными данными ServiceNow:
Использование
Стандартный (stdio) режим
Чтобы запустить сервер MCP:
Или с переменными окружения:
Режим событий, отправленных сервером (SSE)
Сервер ServiceNow MCP также может работать как веб-сервер, используя для связи Server-Sent Events (SSE), что обеспечивает более гибкие возможности интеграции.
Запуск сервера SSE
Вы можете запустить сервер SSE с помощью предоставленного CLI:
По умолчанию сервер будет прослушивать 0.0.0.0:8080
. Вы можете настроить хост и порт:
Подключение к серверу SSE
Сервер SSE предоставляет две основные конечные точки:
/sse
— конечная точка соединения SSE/messages/
- Конечная точка для отправки сообщений на сервер.
Пример
Полный пример настройки и запуска сервера SSE смотрите в файле examples/sse_server_example.py
.
Упаковка инструментов (опционально)
Для управления количеством инструментов, доступных языковой модели (особенно в средах с ограничениями), сервер ServiceNow MCP поддерживает загрузку подмножеств инструментов, называемых «пакетами». Это контролируется с помощью переменной среды MCP_TOOL_PACKAGE
.
Конфигурация
- Переменная среды: задайте для переменной среды
MCP_TOOL_PACKAGE
имя нужного пакета. - Определения пакетов: Доступные пакеты и входящие в них инструменты определены в
config/tool_packages.yaml
. Вы можете настроить этот файл для создания собственных пакетов.
Поведение
- Если
MCP_TOOL_PACKAGE
задано допустимое имя пакета, определенное вconfig/tool_packages.yaml
, будут загружены только инструменты, перечисленные в этом пакете. - Если
MCP_TOOL_PACKAGE
не задан или пуст, по умолчанию загружаетсяfull
пакет (содержащий все инструменты). - Если
MCP_TOOL_PACKAGE
задано недопустимое имя пакета, загружается пакетnone
(никаких инструментов, кромеlist_tool_packages
), и регистрируется предупреждение. - Установка
MCP_TOOL_PACKAGE=none
явно не загружает никакие инструменты (кромеlist_tool_packages
).
Доступные пакеты (по умолчанию)
По умолчанию config/tool_packages.yaml
включает следующие пакеты на основе ролей:
service_desk
: Инструменты для обработки инцидентов и базового поиска пользователей/знаний.catalog_builder
: инструменты для создания и управления элементами каталога услуг, категориями, переменными и соответствующими сценариями (политики пользовательского интерфейса, критерии пользователя).change_coordinator
: инструменты для управления жизненным циклом запроса на изменение, включая задачи и утверждения.knowledge_author
: Инструменты для создания и управления базами знаний, категориями и статьями.platform_developer
: Инструменты для написания скриптов на стороне сервера (включение скриптов), разработки и развертывания рабочих процессов (наборы изменений).system_administrator
: Инструменты для управления пользователями/группами и просмотра системных журналов.full
: включает все доступные инструменты (по умолчанию).none
: не содержит инструментов (кромеlist_tool_packages
).
Инструмент самоанализа
list_tool_packages
: Перечисляет все доступные имена пакетов инструментов, определенные в конфигурации, и показывает текущий загруженный пакет. Этот инструмент доступен во всех пакетах, кромеnone
.
Доступные инструменты
Примечание: Доступность следующих инструментов зависит от загруженного пакета инструментов (см. раздел Упаковка инструментов выше). По умолчанию ( full
пакет) доступны все инструменты.
Инструменты управления инцидентами
- create_incident — создать новый инцидент в ServiceNow
- update_incident — обновить существующий инцидент в ServiceNow
- add_comment — Добавить комментарий к инциденту в ServiceNow
- resolve_incident — разрешение инцидента в ServiceNow
- list_incidents — список инцидентов из ServiceNow
Инструменты каталога услуг
- list_catalog_items — Список элементов каталога услуг от ServiceNow
- get_catalog_item — Получить определенный элемент каталога услуг от ServiceNow
- list_catalog_categories - Список категорий каталога услуг от ServiceNow
- create_catalog_category — создание новой категории каталога услуг в ServiceNow
- update_catalog_category — обновление существующей категории каталога услуг в ServiceNow
- move_catalog_items — перемещение элементов каталога между категориями в ServiceNow
- create_catalog_item_variable — Создать новую переменную (поле формы) для элемента каталога
- list_catalog_item_variables — список всех переменных для элемента каталога
- update_catalog_item_variable — обновить существующую переменную для элемента каталога
- list_catalogs - Список каталогов услуг от ServiceNow
Инструменты оптимизации каталога
- get_optimization_recommendations - Получить рекомендации по оптимизации каталога услуг
- update_catalog_item — обновление элемента каталога услуг
Инструменты управления изменениями
- create_change_request — создать новый запрос на изменение в ServiceNow
- update_change_request — обновить существующий запрос на изменение
- list_change_requests — список запросов на изменение с параметрами фильтрации
- get_change_request_details — Получить подробную информацию о конкретном запросе на изменение
- add_change_task — Добавить задачу в запрос на изменение
- submit_change_for_approval — отправить запрос на изменение для одобрения
- approved_change — Одобрить запрос на изменение
- reject_change — Отклонить запрос на изменение
Инструменты управления рабочим процессом
- list_workflows — список рабочих процессов от ServiceNow
- get_workflow — получить определенный рабочий процесс из ServiceNow
- create_workflow — создание нового рабочего процесса в ServiceNow
- update_workflow — обновление существующего рабочего процесса в ServiceNow
- delete_workflow — Удалить рабочий процесс из ServiceNow
Скрипт включает инструменты управления
- list_script_includes — список включений скрипта из ServiceNow
- get_script_include — получить определенный скрипт, включенный из ServiceNow
- create_script_include — создание нового скрипта, включаемого в ServiceNow
- update_script_include — обновление существующего включения скрипта в ServiceNow
- delete_script_include — удаление включения скрипта из ServiceNow
Инструменты управления наборами изменений
- list_changesets — список наборов изменений от ServiceNow с параметрами фильтрации
- get_changeset_details — Получить подробную информацию о конкретном наборе изменений
- create_changeset — создать новый набор изменений в ServiceNow
- update_changeset — обновить существующий набор изменений
- commit_changeset — зафиксировать набор изменений
- publish_changeset — Опубликовать набор изменений
- add_file_to_changeset — Добавить файл в набор изменений
Инструменты управления базой знаний
- create_knowledge_base — создать новую базу знаний в ServiceNow
- list_knowledge_bases — список баз знаний с параметрами фильтрации
- create_category — Создать новую категорию в базе знаний
- create_article - Создать новую статью знаний в ServiceNow
- update_article — обновление существующей статьи знаний в ServiceNow
- publish_article - Опубликовать статью знаний в ServiceNow
- list_articles - Список статей знаний с возможностью фильтрации
- get_article - Получить конкретную статью знаний по идентификатору
Инструменты управления пользователями
- create_user — создать нового пользователя в ServiceNow
- update_user — обновить существующего пользователя в ServiceNow
- get_user — получить определенного пользователя по идентификатору, имени пользователя или адресу электронной почты
- list_users — список пользователей с возможностью фильтрации
- create_group — создать новую группу в ServiceNow
- update_group — обновить существующую группу в ServiceNow
- add_group_members — Добавить участников в группу в ServiceNow
- remove_group_members — удаление участников из группы в ServiceNow
- list_groups — список групп с параметрами фильтрации
Инструменты политики пользовательского интерфейса
- create_ui_policy — создает политику пользовательского интерфейса ServiceNow, обычно для элемента каталога.
- create_ui_policy_action — создает действие, связанное с политикой пользовательского интерфейса, для управления состояниями переменных (видимость, обязательность и т. д.).
Использование MCP CLI
Сервер ServiceNow MCP можно установить с помощью MCP CLI, который обеспечивает удобный способ регистрации сервера в Claude.
Эта команда зарегистрирует сервер ServiceNow MCP в Клоде и настроит его для использования переменных среды из файла .env.
Интеграция с Claude Desktop
Чтобы настроить сервер ServiceNow MCP в Claude Desktop:
- Отредактируйте файл конфигурации Claude Desktop по адресу
~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) или по соответствующему пути для вашей ОС:
- Перезапустите Claude Desktop, чтобы изменения вступили в силу.
Пример использования с Клодом
Ниже приведены некоторые примеры запросов на естественном языке, которые вы можете использовать с Клодом для взаимодействия с ServiceNow через сервер MCP:
Примеры управления инцидентами
- «Создать новый инцидент для сбоя сети в восточном регионе»
- «Обновить приоритет инцидента INC0010001 до высокого»
- «Добавьте комментарий к инциденту INC0010001, в котором говорится, что проблема расследуется»
- «Устранить инцидент INC0010001, указав, что сервер был перезапущен»
- «Перечислите все инциденты с высоким приоритетом, назначенные сетевой команде»
- «Перечислите все активные инциденты P1, назначенные сетевой команде».
Примеры каталога услуг
- «Показать мне все позиции в каталоге услуг»
- «Список всех категорий каталога услуг»
- «Получить подробную информацию о товаре каталога «Запрос на ноутбук»»
- «Показать мне все элементы каталога в категории «Оборудование»»
- «Поиск «программного обеспечения» в каталоге услуг»
- «Создайте новую категорию под названием «Облачные сервисы» в каталоге сервисов»
- «Обновите категорию «Оборудование», переименовав ее в «ИТ-оборудование»»
- «Переместить элемент каталога «Виртуальная машина» в категорию «Облачные сервисы»»
- «Создайте подкатегорию «Мониторы» в категории «ИТ-оборудование»»
- «Реорганизуйте наш каталог, переместив все элементы программного обеспечения в категорию «Программное обеспечение»»
- «Создать поле описания для элемента каталога запроса ноутбука»
- «Добавить раскрывающееся поле для выбора моделей ноутбуков в элемент каталога»
- «Список всех полей формы для элемента каталога запроса на доступ к VPN»
- «Сделать поле «Отдел» обязательным в форме запроса программного обеспечения»
- «Обновить текст справки для поля центра затрат»
- «Покажите мне все каталоги услуг в системе»
- «Перечислите все элементы каталога оборудования».
- «Найдите позицию в каталоге по запросу «Новый ноутбук».
- «Покажите мне переменные для элемента «Запрос на новый ноутбук».
- «Создайте новую переменную с именем 'department_code' для элемента каталога 'New Hire Setup'. Сделайте ее обязательным строковым полем».
Примеры оптимизации каталога
- «Проанализируйте наш каталог услуг и определите возможности для улучшения»
- «Найдите элементы каталога с плохими описаниями, которые необходимо улучшить»
- «Определить редко используемые элементы каталога, которые, возможно, стоит изъять из обращения»
- «Найдите товары в каталоге с высоким уровнем отказов»
- «Оптимизируйте нашу категорию «Оборудование» для улучшения пользовательского опыта»
Примеры управления изменениями
- «Создайте запрос на изменение для обслуживания сервера, чтобы применить исправления безопасности завтра вечером»
- «Запланируйте обновление базы данных на следующий вторник с 2 до 4 утра»
- «Добавить задачу к изменению обслуживания сервера для проверок перед внедрением»
- «Отправить изменение обслуживания сервера на утверждение»
- «Одобрить изменение обновления базы данных с комментарием: план внедрения выглядит продуманным»
- «Покажите мне все экстренные изменения, запланированные на эту неделю»
- «Список всех изменений, назначенных сетевой команде»
- «Создайте обычный запрос на изменение для обновления сервера производственной базы данных».
- «Обновить изменение CHG0012345, установить состояние «Реализовать».
Примеры управления рабочим процессом
- «Покажите мне все активные рабочие процессы в ServiceNow»
- «Получите подробную информацию о рабочем процессе утверждения инцидента»
- «Перечислить все версии рабочего процесса запроса на изменение»
- «Показать мне все действия в рабочем процессе запроса каталога услуг»
- «Создать новый рабочий процесс для обработки запросов на лицензии на программное обеспечение»
- «Обновить описание рабочего процесса эскалации инцидента»
- «Активировать процесс адаптации нового сотрудника»
- «Деактивировать старый процесс сброса пароля»
- «Добавить действие по утверждению в рабочий процесс запроса лицензии на программное обеспечение»
- «Обновить активность уведомления в рабочем процессе эскалации инцидента»
- «Удалить ненужную активность из рабочего процесса запроса на изменение»
- «Изменение порядка действий в рабочем процессе запроса каталога услуг»
Примеры управления наборами изменений
- «Список всех наборов изменений в ServiceNow»
- «Показать мне все наборы изменений, созданные разработчиком 'john.doe'»
- "Получить сведения о наборе изменений 'sys_update_set_123'"
- «Создать новый набор изменений для приложения «HR Portal»»
- «Обновить описание набора изменений 'sys_update_set_123'»
- «Зафиксировать набор изменений sys_update_set_123 с сообщением «Исправлена проблема со входом»»
- «Опубликовать набор изменений sys_update_set_123 в рабочей среде»
- «Добавить файл в набор изменений 'sys_update_set_123'»
- «Показать мне все изменения в наборе изменений 'sys_update_set_123'»
Примеры базы знаний
- «Создать новую базу знаний для ИТ-отдела»
- «Перечислите все базы знаний в организации»
- «Создайте категорию под названием «Устранение неполадок сети» в базе знаний ИТ»
- «Напишите статью о настройке VPN в категории «Устранение неполадок в сети»
- «Обновите статью о настройке VPN, включив в нее инструкции для мобильных устройств»
- «Опубликуйте статью о настройке VPN, чтобы ее увидели все пользователи»
- «Список всех статей в категории «Устранение неполадок сети»»
- «Покажите мне подробности статьи о настройке VPN»
- «Найти статьи знаний, содержащие «сброс пароля», в базе знаний ИТ»
- «Создайте подкатегорию под названием «Беспроводные сети» в категории «Устранение неполадок сети»»
Примеры управления пользователями
- «Создать нового пользователя Д-р Элис Радиология в отделении радиологии»
- «Обновить запись пользователя Боба, чтобы сделать его менеджером Алисы»
- «Назначьте Бобу роль ITIL, чтобы он мог утверждать запросы на изменение»
- «Список всех пользователей отделения радиологии»
- «Создать новую группу под названием «Биомедицинская инженерия» для управления медицинскими устройствами»
- «Добавить администратора в группу «Биомедицинская инженерия» в качестве участника»
- «Обновить группу биомедицинской инженерии, чтобы сменить ее руководителя»
- «Удалить пользователя из группы «Биомедицинская инженерия»»
- «Найти всех активных пользователей в системе, имеющих в названии слово «доктор»»
- «Создайте пользователя, который будет выступать в качестве утверждающего для отделения радиологии»
- «Перечислить все группы ИТ-поддержки в системе»
Примеры политики пользовательского интерфейса
- «Создайте политику пользовательского интерфейса для элемента «Запрос на программное обеспечение» (sys_id: abc...) с именем «Показать обоснование», которая применяется, когда «software_cost» больше 100».
- «Для политики пользовательского интерфейса «Показать обоснование» (sys_id: def...) добавьте действие, чтобы сделать переменную «business_justification» видимой и обязательной».
- «Создайте еще одно действие для политики «Показать обоснование», чтобы скрыть переменную «alternative_software».
Примеры скриптов
Репозиторий содержит примеры скриптов, демонстрирующие, как использовать инструменты:
- examples/catalog_optimization_example.py : Демонстрирует, как анализировать и улучшать каталог услуг ServiceNow
- examples/change_management_demo.py : показывает, как создавать и управлять запросами на изменение в ServiceNow
Методы аутентификации
Базовая аутентификация
Аутентификация OAuth
Аутентификация API-ключа
Разработка
Документация
Дополнительная документация доступна в каталоге docs
:
- Интеграция каталога - Подробная информация об интеграции каталога услуг
- Оптимизация каталога — подробный план функций оптимизации каталога
- Управление изменениями - Подробная информация об инструментах управления изменениями
- Управление рабочим процессом — подробная информация об инструментах управления рабочим процессом
- Управление наборами изменений — подробная информация об инструментах управления наборами изменений
Поиск неисправностей
Распространенные ошибки при использовании инструментов управления изменениями
- Ошибка:
argument after ** must be a mapping, not CreateChangeRequestParams
- Эта ошибка возникает, когда вы передаете объект
CreateChangeRequestParams
вместо словаря в функциюcreate_change_request
. - Решение: убедитесь, что вы передаете словарь с параметрами, а не объект модели Pydantic.
- Примечание: Инструменты управления изменениями были обновлены для автоматической обработки этой ошибки. Функции теперь попытаются развернуть параметры, если они неправильно упакованы или переданы как объект модели Pydantic.
- Эта ошибка возникает, когда вы передаете объект
- Ошибка:
Missing required parameter 'type'
- Эта ошибка возникает, если вы не указали все необходимые параметры для создания запроса на изменение.
- Решение: Убедитесь, что включены все требуемые параметры. Для
create_change_request
требуются какshort_description
, так иtype
.
- Ошибка:
Invalid value for parameter 'type'
- Эта ошибка возникает, если вы указываете недопустимое значение параметра
type
. - Решение: используйте одно из допустимых значений: «нормальный», «стандартный» или «аварийный».
- Эта ошибка возникает, если вы указываете недопустимое значение параметра
- Ошибка:
Cannot find get_headers method in either auth_manager or server_config
- Эта ошибка возникает, когда параметры передаются в неправильном порядке или при использовании объектов, не имеющих требуемых методов.
- Решение: Убедитесь, что вы передаете параметры
auth_manager
иserver_config
в правильном порядке. Функции были обновлены для автоматической обработки замены параметров.
Внося вклад
Вклады приветствуются! Пожалуйста, не стесняйтесь отправлять запрос на включение.
- Форк репозитория
- Создайте ветку функций (
git checkout -b feature/amazing-feature
) - Зафиксируйте свои изменения (
git commit -m 'Add some amazing feature'
) - Отправить в ветку (
git push origin feature/amazing-feature
) - Открыть запрос на извлечение
Лицензия
Данный проект лицензирован по лицензии MIT — подробности см. в файле LICENSE.
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Tools
Реализация, которая позволяет Клоду подключаться к экземплярам ServiceNow, извлекать данные и выполнять действия через API ServiceNow.
- Обзор
- Функции
- Установка
- Использование
- Упаковка инструментов (опционально)
- Доступные инструменты
- Инструменты управления инцидентами
- Инструменты каталога услуг
- Инструменты оптимизации каталога
- Инструменты управления изменениями
- Инструменты управления рабочим процессом
- Скрипт включает инструменты управления
- Инструменты управления наборами изменений
- Инструменты управления базой знаний
- Инструменты управления пользователями
- Инструменты политики пользовательского интерфейса
- Использование MCP CLI
- Интеграция с Claude Desktop
- Пример использования с Клодом
- Примеры скриптов
- Методы аутентификации
- Разработка
Related Resources
Related MCP Servers
- AsecurityAlicenseAqualityEnables Claude to interact with Webflow's APIs for managing sites, retrieving information, and executing tasks using natural language.Last updated -24TypeScriptMIT License
- AsecurityAlicenseAqualityEnables natural language interaction with Azure services through Claude Desktop, supporting resource management, subscription handling, and tenant selection with secure authentication.Last updated -31313TypeScriptMIT License
- -securityAlicense-qualityEnables Claude to interact with Webflow's APIs, allowing access to site information, collections, and other Webflow resources.Last updated -TypeScriptMIT License
- -securityAlicense-qualityEnables Claude to interact with Qlik Cloud applications and extract data from visualizations through the Qlik Cloud API.Last updated -2TypeScriptMIT License