ServiceNow MCP
Servidor MCP ServiceNow: 65 ferramentas em toda a superfície REST (Tabela, Agregado, Anexo, Conjunto de Importação, Lote, CMDB/IRE, Catálogo, Mudança, Conhecimento, E-mail) com inteligência de script, rastreamento de fluxo, execuções ATF, perfis multi-instância e diagramas Mermaid.
Documentação
servicenow-mcp-ai — Servidor MCP ServiceNow
Um servidor Model Context Protocol que permite a um cliente MCP (VS Code, Claude Desktop, etc.) executar comandos contra uma instância ServiceNow por meio de suas APIs REST — Table, Aggregate, Attachment, Import Set, Batch e CMDB, além das APIs de plugin do Service Catalog, Change Management e Knowledge. As credenciais são mantidas em um arquivo env local e podem ser atualizadas em tempo de execução por meio de uma ferramenta.
Atualizando da versão 1.x? A v2.0 torna as gravações planejadas por padrão:
create/update/deletee as outras ferramentas de gravação de registros retornam uma prévia não mutável, a menos que você passeapply: true(ou definaSN_WRITE_MODE=applypara restaurar o comportamento "executar imediatamente" da v1). Consulte o CHANGELOG → 2.0.0 para a nota completa de migração.
Conteúdo: Demonstração rápida · Recursos · Requisitos · Configuração · Configurar credenciais · Executar / depurar · Desenvolver · Ferramentas · Recursos · Prompts · Estrutura do projeto · Notas de segurança · Documentação do projeto · Suporte
Construído e mantido no meu próprio tempo — se for útil, uma doação no GitHub Sponsors ajuda a manter o projeto. As opções completas de Suporte estão no final.
Demonstração rápida
Três coisas que a plataforma torna difíceis, uma chamada cada. Aponte seu cliente MCP para uma instância (Configuração) e pergunte:
1. "Onde este campo é realmente usado?" — todos os scripts, regras de negócio, scripts de cliente, políticas/ações de UI e ACLs que o utilizam, como JSON ou um gráfico Mermaid. A busca find usages com qualidade de IDE que o ServiceNow não tem botão para:
// servicenow_where_used
{
"kind": "field", // "table" | "field" | "script"
"name": "u_cost_center",
"mermaid": true, // also render a reference graph
}
2. "O que é executado quando salvo este registro?" — a cadeia completa de automação em ordem de execução (regras de negócio display → before → after → assíncronas, depois flows, workflows e notificações), cada uma com sua condição — um teste lógico que executa nada:
// servicenow_trace_table_event
{
"table": "incident",
"operation": "update", // insert | update | delete | query
}
3. "O que mudou entre dev e prod?" — um diff em Markdown de tabelas, colunas, scripts (correspondidos por sys_id e depois nome, com um diff unificado de cada script alterado) e plugins entre dois perfis configurados — além, sob solicitação, de propriedades, choices, ACLs, notificações, flows, itens de catálogo e papéis — com um código de saída amigável para CI para que um pipeline possa bloquear uma implantação arriscada:
servicenow-mcp-ai drift dev prod # report on stdout; exit 1 on drift, 0 if clean
Todos os três são somente leitura e funcionam contra qualquer instância — incluindo um PDI gratuito — com o modelo e o cliente de sua escolha.
Recursos
- API Table completa: consultar, ler, criar, atualizar e excluir registros em qualquer tabela, com consultas codificadas, seleção de campos e paginação.
- APIs extras do ServiceNow: Aggregate (Stats), Attachment
(listar/enviar/baixar/excluir), Import Set, Batch (várias chamadas REST em uma
única solicitação), além de metadados de tabela/coluna (
sys_db_object,sys_dictionary). - APIs de processo e plugin: CMDB (CRUD de CI com conhecimento de classe + meta, leituras
de relacionamento de
cmdb_rel_ci, IRE identify-and-reconcile com um plano somente de identificação), Service Catalog (navegar/ordenar itens), Change Management (criação tipada + detecção de conflitos) e Knowledge (busca de artigos). APIs com escopo de plugin relatam claramente quando não estão ativas na instância. - Inteligência de scripts: ler e pesquisar o código da própria instância (regras
de negócio, script includes, scripts de cliente, políticas/ações de UI, jobs agendados,
scripts de transform/REST, ACLs — e, ainda não verificado em uma instância ativa,
widgets do Service Portal, páginas/scripts/macros de UI, processadores, scripts de
email/fix/validação, ações de script, fontes de dados, funções de mensagem REST,
mapas/entradas de transform, scripts de cliente de catálogo e cálculos/padrões de
dicionário) e obter o panorama completo de automação de uma tabela — tudo somente leitura
pela API Table.
servicenow_search_coderetorna cada linha correspondente por artefato (até 20, com uma linha de contexto em cada lado) e, comoservicenow_where_used, aceita umscopede aplicação opcional.servicenow_where_usedtambém encontra referências estruturais — campos de referência de dicionário, layouts de lista e formulário, variáveis de catálogo, entradas de fluxo e relatórios — em uma seção separada destructural. - Rastreamento de fluxos e verificação de código (Fase 8): rastrear deterministicamente o que
uma operação de tabela executa (pacote
flows— regras de negócio, flows, workflows e notificações, em ordem, com um fluxograma Mermaid), ler flows do Flow Designer e histórico de execução, e fazer lint de scripts contra um conjunto de regras local com um relatório agregado de saúde de código (codecheck). Executar testes ATF via API CI/CD (atf, opt-in, não padrão — as ferramentas de execução operam na instância). - Desfazer baseado em diário (
revert): listar o diário local de gravações e reverter um create/update/delete aplicado — com uma verificação de divergência contra edições posteriores. - Leituras genéricas de artefatos (
artifacts, opt-in): listar e ler qualquer tipo de artefato registrado — políticas de UI com suas ações, páginas de portal com seu layout, flows, itens de catálogo e mais — com escopo e status gerenciado por SDK. - Consciência de update sets (
updatesets, opt-in): listar update sets, resumir um conjunto por artefato, compará-lo com outro perfil ou um snapshot — e vincular gravações de Table aplicadas a um update set nomeado (update_set/SN_UPDATE_SET), restaurando o conjunto atual do usuário depois. - Operações e saúde de dados (
ops, opt-in): leituras limitadas de "por que está lento" do log do sistema, da fila do agendador, da fila de email de saída e semáforos, além deservicenow_data_health— chaves duplicadas, referências órfãs e desatualizadas para uma tabela, a partir de contagens da API Aggregate. - Leituras de operações (opt-in): o histórico de alterações de um registro de
sys_auditesys_journal_field(history— incluindo os comentários e work notes que a API Table lê vazios), propriedades do sistema com segredos mascarados e um conjunto registrado e reversível (properties), e consultas de usuário / grupo / papel com associações (directory). Execuções ATF podem aguardar seu resultado (wait_seconds), e inserções de Import Set relatam a execução de transform e mapas. - Autodocumentação: uma base de conhecimento local em Markdown (ler/gravar/pesquisar) além de geradores determinísticos de Mermaid (diagramas ER a partir de referências, fluxogramas de ciclo de vida de registros a partir de regras de negócio) para que o servidor construa contexto durável e reutilizável.
- Prompts: workflows prontos (triagem de incidentes, análise de impacto de mudanças, documentar uma tabela, diagnosticar uma instância lenta) que orquestram as ferramentas.
- Pacotes de ferramentas: carregue apenas os grupos de ferramentas necessários via
SN_TOOL_PACKAGES(perfil padrãocore;allhabilita tudo). - Autenticação Básica ou OAuth 2.0 sobre HTTPS; a senha/token nunca é ecoada de volta.
- Controles de privilégio mínimo: listas de permitir/negar de tabelas e um modo global somente leitura.
- Resiliência: timeout por solicitação, nova tentativa com backoff e
Retry-After, proteção contra SSRF e um limite de tamanho de resultado. - Anotações de ferramentas e recursos MCP, payloads de erro estruturados e registro estruturado em stderr.
- Credenciais em um arquivo env (projeto,
~/.configouSN_ENV_FILE), atualizáveis em tempo de execução viaservicenow_set_credentials.
Requisitos
- Node.js 20+ (imposto:
engines+ uma proteção em tempo de execução com uma mensagem clara; o projeto tem como alvo a versão em.nvmrc).
Configuração
A partir do código-fonte (para desenvolvimento):
npm install
npm run build
Ou execute o pacote publicado diretamente, sem clonar:
npx servicenow-mcp-ai
Instalar no seu cliente MCP
Cada cliente inicia o mesmo comando stdio, npx -y servicenow-mcp-ai (Node.js 20+),
sob o nome de servidor servicenow. Os links de um clique e trechos abaixo não carregam
credenciais: mantenha-as no arquivo env (~/.config/servicenow-mcp-ai/.env, consulte
Configurar credenciais), execute o npx servicenow-mcp-ai login único
para OAuth, ou peça ao assistente para chamar
servicenow_set_credentials assim que o servidor estiver conectado. Uma variável de ambiente real
definida em uma configuração de cliente substitui o arquivo env, então só adicione um bloco env quando
realmente necessário — e nunca coloque SN_PASSWORD ou outros segredos em uma configuração de cliente que você compartilhe
ou faça commit (consulte SECURITY.md).
| Cliente | Uma linha | Arquivo de configuração |
|---|---|---|
| VS Code (Copilot Chat) | Botão acima, ou code --add-mcp (abaixo) — ou a extensão ServiceNow MCP | .vscode/mcp.json (servers) |
| VS Code Insiders | Botão acima, ou code-insiders --add-mcp (abaixo) | .vscode/mcp.json (servers) |
| Claude Code | claude mcp add servicenow -- npx -y servicenow-mcp-ai, ou o plugin | .mcp.json (mcpServers) |
| Claude Desktop | — (edite o arquivo de configuração) | claude_desktop_config.json (mcpServers) |
| Cursor | Botão acima, ou o deeplink cursor:// (abaixo) | ~/.cursor/mcp.json ou .cursor/mcp.json (mcpServers) |
| Windsurf | — (edite o arquivo de configuração) | ~/.codeium/windsurf/mcp_config.json (mcpServers) |
| Cline | — (MCP Servers → Configure MCP Servers) | cline_mcp_settings.json (mcpServers) |
| Zed | — (edite as configurações) | settings.json (context_servers) |
| JetBrains AI Assistant | — (Settings → Tools → AI Assistant → Model Context Protocol) | Diálogo JSON (mcpServers) |
| Gemini CLI | — (edite as configurações) | ~/.gemini/settings.json (mcpServers) |
| Codex CLI | codex mcp add servicenow -- npx -y servicenow-mcp-ai | ~/.codex/config.toml ([mcp_servers.servicenow]) |
VS Code / VS Code Insiders
A rota de configuração zero é a extensão ServiceNow MCP do Marketplace
(code --install-extension ivanbbaev.servicenow-mcp-ai); ela registra o servidor no
Copilot Chat (modo agente) automaticamente, sem mcp.json. Código-fonte: extension/.
Sem a extensão, adicione o servidor a partir de um terminal (perfil do usuário):
code --add-mcp '{"name":"servicenow","command":"npx","args":["-y","servicenow-mcp-ai"]}'
code-insiders --add-mcp '{"name":"servicenow","command":"npx","args":["-y","servicenow-mcp-ai"]}'
Os deeplinks brutos por trás dos botões (cole na barra de endereço do navegador):
vscode:mcp/install?%7B%22name%22%3A%22servicenow%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22servicenow-mcp-ai%22%5D%7D
vscode-insiders:mcp/install?%7B%22name%22%3A%22servicenow%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22servicenow-mcp-ai%22%5D%7D
Ou um arquivo de workspace, .vscode/mcp.json:
{
"servers": {
"servicenow": {
"type": "stdio",
"command": "npx",
"args": ["-y", "servicenow-mcp-ai"]
}
}
}
Claude Code
Plugin (configuração zero — instala o servidor já conectado):
/plugin marketplace add IvanBBaev/servicenow-mcp-ai
/plugin install servicenow-mcp-ai
O plugin também inclui cinco skills de workflow — consulte Plugin skills.
CLI — --scope user o disponibiliza em todos os projetos; --env define uma
variável não secreta (o host da instância) e deixa os segredos no arquivo env. Um valor definido
dessa forma vence o arquivo env, então remova --env se você trocar de instância com
servicenow_set_credentials:
claude mcp add servicenow --scope user --env SN_INSTANCE=your-instance.service-now.com -- npx -y servicenow-mcp-ai
Claude Desktop
claude_desktop_config.json — macOS ~/Library/Application Support/Claude/, Windows
%APPDATA%\Claude\ (Settings → Developer → Edit Config):
{
"mcpServers": {
"servicenow": {
"command": "npx",
"args": ["-y", "servicenow-mcp-ai"]
}
}
}
Reinicie o Claude Desktop após salvar.
Cursor
Use o botão acima ou abra o deeplink diretamente:
cursor://anysphere.cursor-deeplink/mcp/install?name=servicenow&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInNlcnZpY2Vub3ctbWNwLWFpIl19
Ou edite ~/.cursor/mcp.json (global) / .cursor/mcp.json (projeto) com o mesmo
bloco mcpServers do Claude Desktop.
Windsurf, Cline, JetBrains AI Assistant
Todos os três aceitam o bloco mcpServers do Claude Desktop sem alterações:
- Windsurf —
~/.codeium/windsurf/mcp_config.json(Cascade → MCP servers → View raw config) e, em seguida, atualize a lista de servidores. - Cline — Ícone de MCP Servers → Configure MCP Servers abre
cline_mcp_settings.json. - JetBrains AI Assistant — Settings → Tools → AI Assistant → Model Context Protocol (MCP) → Add → As JSON, cole o bloco.
{
"mcpServers": {
"servicenow": {
"command": "npx",
"args": ["-y", "servicenow-mcp-ai"]
}
}
}
Zed
No settings.json do Zed (Zed → Settings → Open Settings):
{
"context_servers": {
"servicenow": {
"source": "custom",
"command": "npx",
"args": ["-y", "servicenow-mcp-ai"],
"env": {}
}
}
}
Gemini CLI
~/.gemini/settings.json (usuário) ou .gemini/settings.json (projeto):
{
"mcpServers": {
"servicenow": {
"command": "npx",
"args": ["-y", "servicenow-mcp-ai"]
}
}
}
Verifique com /mcp dentro de uma sessão do Gemini CLI.
Codex CLI
codex mcp add servicenow --env SN_INSTANCE=your-instance.service-now.com -- npx -y servicenow-mcp-ai
Ou ~/.codex/config.toml:
[mcp_servers.servicenow]
command = "npx"
args = ["-y", "servicenow-mcp-ai"]
# Optional, non-secret only — secrets stay in ~/.config/servicenow-mcp-ai/.env:
# env = { SN_INSTANCE = "your-instance.service-now.com" }
Prefere uma instalação global (npm install -g servicenow-mcp-ai)? Substitua
"command": "npx", "args": ["-y", "servicenow-mcp-ai"] por
"command": "servicenow-mcp-ai" em qualquer trecho. O
MCP Inspector funciona da mesma forma:
npx @modelcontextprotocol/inspector npx -y servicenow-mcp-ai.
Os links de um clique são gerados a partir de package.json por scripts/install-links.mjs
(node scripts/install-links.mjs os imprime); test/install-links.test.js falha se
este README ou o site de documentação divergirem das strings geradas.
Início rápido
O caminho mais rápido são três linhas de autenticação Basic — defina estas (no arquivo de ambiente ou no ambiente real) e você estará conectado:
SN_INSTANCE=dev12345.service-now.com
SN_USER=your.username
SN_PASSWORD=your-password
Todo o resto é ajuste opcional; consulte a referência completa de Environment variables para o restante.
Além de um teste rápido, prefira OAuth a uma senha armazenada. Para qualquer coisa compartilhada ou de longa duração, execute o
npx servicenow-mcp-ai loginúnico em vez disso — ele armazena um refresh token, não sua senha. Consulte Configure credentials → OAuth 2.1.
Verifique sua configuração
Depois que as três variáveis estiverem definidas, confirme a conexão antes de começar:
- Execute a ferramenta
servicenow_test_connection— ela lê um registrosys_usere relataok, status HTTP e latência. - Execute
servicenow_check_capabilities— ela pré-visualiza quais tabelassys_*restritas a administradores o usuário conectado pode realmente ler.
Ou faça ambos pelo shell de uma só vez:
npx servicenow-mcp-ai doctor # checks credentials, reachability and capabilities
Prefere ser perguntado? npx servicenow-mcp-ai init solicita a instância, o
método de autenticação e as credenciais, grava o arquivo de ambiente e executa doctor — consulte
Command-line interface.
Configure credentials
As credenciais ficam em .env na raiz do projeto (ignorado pelo git):
SN_INSTANCE=your-instance.service-now.com
SN_USER=your.username@example.com
SN_PASSWORD=your-password
SN_INSTANCE aceita dev12345, dev12345.service-now.com ou uma URL https:// completa.
Você também pode defini-las ou alterá-las em tempo de execução chamando a
ferramenta servicenow_set_credentials — os novos valores são gravados diretamente de volta no arquivo de ambiente.
Mover um perfil configurado para uma instância diferente exige user e password na mesma
chamada (os segredos armazenados nunca são enviados para outro host), e a alteração deve ser confirmada pelo
cliente — clientes sem suporte a elicitação são recusados, a menos que
SN_ALLOW_UNCONFIRMED_CREDENTIAL_CHANGE=1 esteja definido.
A ferramenta também define o método de autenticação (auth), o ID do cliente OAuth (oauth_client_id) e a concessão
(oauth_grant). Segredos — a chave de API e o segredo do cliente OAuth — nunca são argumentos de ferramenta:
liste-os em request_secrets e o servidor os solicita por meio de um prompt de elicitação, para que
nunca apareçam em uma chamada de ferramenta registrada, no resultado ou no diário de gravação. Um cliente sem
suporte a elicitação é recusado (a opção de exclusão acima não se aplica a segredos); defina essas chaves no
arquivo de ambiente em vez disso. A regra de alteração de instância segue o método de autenticação resultante: um perfil
com chave de API precisa de uma nova chave de API, um perfil OAuth client_credentials de um novo segredo de cliente, a
concessão OAuth password de usuário, senha e segredo de cliente; Basic / none de usuário e senha;
perfis de bearer token, refresh_token e jwt_bearer não podem ser movidos com esta ferramenta.
servicenow_get_status (authWarnings), servicenow_list_instances e doctor avaliam cada
perfil em relação ao seu próprio método de autenticação — um perfil com chave de API não precisa de senha — e relatam o
método, a concessão OAuth, o estado do refresh token e o modo de gravação, nunca um valor secreto. Quando
a concessão de refresh token retorna um refresh token rotacionado, ele é gravado de volta na chave de ambiente da qual
foi lido; se o arquivo de ambiente não puder ser gravado, o novo token é mantido em memória (perdido na
reinicialização) e um aviso é registrado e exibido por get_status / doctor. Valores que o servidor grava
mantêm caminhos do Windows literais (barras invertidas são entre aspas simples) e um arquivo de ambiente CRLF permanece CRLF. No
Windows, o arquivo de ambiente herda a ACL de sua pasta — restrinja você mesmo (por exemplo,
icacls .env /inheritance:r /grant:r "%USERNAME%:F"); o servidor apenas avisa, nunca executa
icacls.
O arquivo de ambiente é resolvido nesta ordem: SN_ENV_FILE, depois
~/.config/servicenow-mcp-ai/.env (XDG) se presente, depois o .env na raiz do projeto.
Uma instalação global/npx portanto grava na configuração do usuário em vez de
node_modules. Variáveis de ambiente reais sempre têm precedência sobre o arquivo.
Primeira execução: o modelo se configura sozinho
Em initialize, o servidor envia instructions construído a partir da configuração ativa: os pacotes
habilitados e a contagem de ferramentas, o modo de gravação, o perfil ativo e, quando nada está configurado,
o que está faltando e como corrigir. Até então, toda ferramenta de instância falha com
error.code: "NOT_CONFIGURED" e uma dica nomeando servicenow_set_credentials. Uma primeira sessão
com um arquivo de ambiente vazio se parece com isto (abreviado):
instructions Credentials: NOT configured (missing instance, user, password). Instance tools
fail with error.code NOT_CONFIGURED until fixed. To configure: ask the user for
the instance and credentials, call servicenow_set_credentials, then
servicenow_test_connection. Never guess or echo a password.
user How many open P1 incidents do we have?
model Which instance, user and password should I connect with?
user dev12345, admin, ••••••
tool call servicenow_set_credentials { instance: "dev12345", user: "admin", password: … }
tool result { message: "Credentials saved", profile: "default", configured: true, password: "***" }
tool call servicenow_test_connection {}
tool result { ok: true, … }
tool call servicenow_aggregate { table: "incident", query: "active=true^priority=1" }
model There are 7 open P1 incidents.
servicenow_get_status então mostra o estado ativo: versão do servidor, tempo de atividade e transporte,
policy.summary, limites, redação, o diretório de documentação, contadores de gravação, a fonte do perfil e
profileDetails (modo de autenticação por perfil, modo de gravação e chaves ausentes) — nunca um valor secreto.
OAuth 2.1 (Authorization Code + PKCE) — recomendado
Registre um endpoint de API OAuth Authorization Code no ServiceNow com uma
URL de redirecionamento de loopback (por exemplo, http://localhost:53682/callback), defina
SN_OAUTH_CLIENT_ID (e SN_OAUTH_CLIENT_SECRET para um cliente confidencial),
então execute o login interativo único:
npx servicenow-mcp-ai login
Ele abre o navegador, você aprova, e o refresh token obtido é armazenado no seu arquivo de ambiente. O servidor então executa de forma não interativa (concessão refresh_token) — nenhuma senha é armazenada. PKCE (S256) é sempre usado.
A concessão de senha OAuth 2.0 (ROPC) está obsoleta no OAuth 2.1 e desabilitada em muitas instâncias; prefira
login. As concessõesclient_credentialserefresh_tokenpermanecem suportadas para contas de serviço. Consulte .env.example.
Métodos de autenticação suportados
Todo método de autenticação REST de entrada que o ServiceNow oferece é coberto:
| Método | SN_AUTH | Definir | Notas |
|---|---|---|---|
| Basic | basic | SN_USER / SN_PASSWORD | Padrão. |
| OAuth 2.1 — Authorization Code + PKCE | oauth | npx servicenow-mcp-ai login | Recomendado. Interativo, armazena um refresh token. |
| OAuth — Client Credentials | oauth | SN_OAUTH_GRANT=client_credentials | Serviço a serviço. |
| OAuth — Refresh Token | oauth | SN_OAUTH_GRANT=refresh_token + SN_OAUTH_REFRESH_TOKEN | Definido por login. |
| OAuth — JWT Bearer | oauth | SN_OAUTH_GRANT=jwt_bearer + SN_OAUTH_JWT_KEY | Asserção RS256; sem senha. |
| OAuth — Password (ROPC) | oauth | SN_OAUTH_GRANT=password | Obsoleto. |
| API Key | apikey | SN_API_KEY | Cabeçalho x-sn-apikey. |
| Bearer token | token | SN_BEARER_TOKEN ou SN_TOKEN_FILE | Token pré-obtido, usado literalmente. Um token rejeitado (401) relê SN_TOKEN_FILE uma vez, caso contrário falha com AUTH_EXPIRED. |
| Mutual TLS (certificado de cliente) | none (ou em camadas) | SN_TLS_CLIENT_CERT / _KEY | Certificado mapeia para um usuário; precisa de undici opcional. |
Variáveis de ambiente
Todas as configurações são lidas de .env (ou do ambiente de processo real, que tem
precedência). Apenas as três primeiras são obrigatórias; o restante são ajustes opcionais.
Consulte .env.example para um modelo.
| Variável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
SN_INSTANCE | sim | — | Nome da instância, host ou URL https:// (dev12345, dev12345.service-now.com). |
SN_USER | sim | — | Nome de usuário do ServiceNow para autenticação básica. |
SN_PASSWORD | sim | — | Senha do ServiceNow. Nunca é registrada ou retornada por nenhuma ferramenta. |
SN_TIMEOUT_MS | não | 30000 | Tempo limite por solicitação em milissegundos. |
SN_MAX_RETRIES | não | 2 | Tentativas para falhas transitórias (429/5xx, erros de rede). Gravações não idempotentes são repetidas apenas em erros de conexão. |
SN_MAX_RECORDS | não | 10000 | Limite máximo de registros retornados por uma consulta fetchAll. |
SN_MAX_RESULT_CHARS | não | 100000 | Orçamento de caracteres para um resultado de consulta antes de ser truncado para o cliente; a nota de truncamento nomeia format:"file". Um resultado de snapshot, comparação ou diagrama acima do orçamento é retornado integralmente com um note. |
SN_OVERSIZE_TO_FILE | não | false | S-11: gravar um resultado de snapshot, comparação ou diagrama acima de SN_MAX_RESULT_CHARS em um arquivo sob SN_DOCS_DIR (<profile>/exports/, <profile>/diagrams/) e retornar {path, bytes, preview} em vez disso. |
SN_RETRY_AFTER_MAX_MS | não | 60000 | Limite superior respeitado para um cabeçalho Retry-After em 429/503; um valor maior é limitado para que um upstream com mau comportamento não possa deixar o cliente parado por minutos. |
SN_DEADLINE_MS | não | — | Orçamento total de tempo real para uma solicitação lógica entre tentativas, backoff, espera na fila e reautenticação OAuth; o padrão é max(120000, 2 × SN_TIMEOUT_MS). Uma tentativa que não couber no orçamento restante não é executada — a chamada falha com o código DEADLINE_EXCEEDED. |
SN_ALLOWED_HOSTS | não | — | Lista de permissões de hosts separada por vírgulas (para domínios personalizados ou de nuvem soberana). Quando definida, apenas hosts correspondentes são contatados. Quando não definida, apenas instâncias *.service-now.com são permitidas e hosts internos/loopback são bloqueados (proteção SSRF). Uma entrada pode incluir uma porta (host:8443) ou ser um literal IPv6 entre colchetes ([2001:db8::1]); uma porta explícita diferente de 443 ou um literal IPv6 no valor da instância é aceito somente quando tal entrada corresponde a ele — nunca sob a política padrão. |
SN_MAX_BODY_BYTES | não | 52428800 | Maior corpo de resposta (bytes) lido na memória; um corpo maior declarado ou transmitido falha com RESPONSE_TOO_LARGE. Redirecionamentos nunca são seguidos — um 3xx falha com REDIRECT_BLOCKED nomeando o host de destino. |
SN_AUTH | não | auto | Método de autenticação: basic, oauth, apikey, token ou none (mTLS somente com certificado). Detectado automaticamente pelas chaves presentes (chave de API → bearer → OAuth → Básico). |
SN_API_KEY | não | — | Chave de API de entrada do ServiceNow, enviada como cabeçalho x-sn-apikey (habilita o modo apikey). |
SN_BEARER_TOKEN | não | — | Um token bearer obtido previamente, enviado literalmente como Authorization: Bearer … (habilita o modo token). |
SN_TOKEN_FILE | não | — | Arquivo contendo o token bearer (habilita o modo token; tem precedência sobre SN_BEARER_TOKEN). Relido uma vez quando a instância rejeita o token com 401, para que um emissor externo possa rotacioná-lo; caso contrário, a chamada falha com AUTH_EXPIRED. |
SN_TOKEN_EXPIRES_AT | não | — | Expiração ISO 8601 do token bearer. get_status / doctor avisam quando restam menos de 24 horas, quando já expirou ou quando não pode ser analisado. |
SN_OAUTH_CLIENT_ID | não | — | ID do cliente OAuth (sua presença habilita OAuth). |
SN_OAUTH_CLIENT_SECRET | não | — | Segredo do cliente OAuth. |
SN_OAUTH_GRANT | não | password | Concessão OAuth: password (obsoleto — ROPC), client_credentials, refresh_token ou jwt_bearer. O comando login define isso como refresh_token para você. |
SN_OAUTH_JWT_KEY | não | — | Chave privada PEM para a concessão jwt_bearer (ou SN_OAUTH_JWT_KEY_FILE). Claims opcionais: SN_OAUTH_JWT_ISS (ID do cliente padrão), SN_OAUTH_JWT_SUB (padrão SN_USER), SN_OAUTH_JWT_AUD, SN_OAUTH_JWT_KID, SN_OAUTH_JWT_EXP_SEC (padrão 300). |
SN_OAUTH_REFRESH_TOKEN | não | — | Token de atualização para a concessão refresh_token. Obtido automaticamente por npx servicenow-mcp-ai login (Authorization Code + PKCE). |
SN_OAUTH_REDIRECT_URI | não | http://localhost:53682/callback | URL de redirecionamento de loopback para o fluxo PKCE login. Deve corresponder ao redirecionamento registrado no endpoint OAuth. |
SN_OAUTH_SCOPE | não | — | Escopo OAuth opcional solicitado durante login. |
SN_HTTPS_PROXY | não | — | URL de proxy HTTPS de saída (http://user:pass@proxy:3128) para todo o tráfego ServiceNow e OAuth; requer o pacote opcional undici. Quando não definido, as variáveis de ambiente HTTPS_PROXY / HTTP_PROXY são respeitadas juntamente com NO_PROXY; SN_HTTPS_PROXY em si é explícito e ignora NO_PROXY. Credenciais de proxy nunca são registradas. |
SN_USER_AGENT_SUFFIX | não | — | Token extra anexado ao User-Agent enviado em cada solicitação (servicenow-mcp-ai/<version> (node/<major>; <transport>; <client>)), por exemplo, um ID de equipe ou ticket para correlação no log de transações da instância. ASCII imprimível, até 80 caracteres. |
SN_TLS_CLIENT_CERT | não | — | Certificado do cliente (PEM) para TLS mútuo (ou SN_TLS_CLIENT_CERT_FILE). Com SN_TLS_CLIENT_KEY apresenta um certificado do cliente; o perfil de autenticação mútua do ServiceNow o mapeia para um usuário. Requer o pacote opcional undici (npm i undici). Certificado e chave devem ser definidos juntos — apenas um deles é um erro de configuração. |
SN_TLS_CLIENT_KEY | não | — | Chave privada (PEM) para o certificado do cliente (ou SN_TLS_CLIENT_KEY_FILE). |
SN_TLS_CA | não | — | Pacote de CA opcional (PEM) para confiar (ou SN_TLS_CA_FILE) — aplicado com ou sem certificado do cliente; requer o pacote opcional undici. SN_TLS_REJECT_UNAUTHORIZED=false desativa a verificação (não recomendado; avisado uma vez na inicialização). |
SN_TABLES_ALLOW | não | — | Lista de permissões de tabelas separada por vírgulas; quando definida, apenas essas tabelas são acessíveis. |
SN_TABLES_DENY | não | — | Lista de bloqueio de tabelas separada por vírgulas; sempre tem precedência sobre a lista de permissões. |
SN_READONLY | não | false | Quando verdadeiro, recusa todo create/update/delete. |
SN_ALLOW_UNCONFIRMED_CREDENTIAL_CHANGE | não | false | H-2: opt-out do operador — permite que servicenow_set_credentials prossiga em clientes MCP sem suporte a elicitação (sem prompt de confirmação, sem servidor ao vivo). Uma recusa explícita ainda é recusada. Desativado por padrão. |
SN_WRITE_MODE | não | plan | plan (padrão) pré-visualiza uma gravação como um diff antes/depois sem mutar; apply executa; passar apply:true força uma única chamada. |
| SN_DESTRUCTIVE_CONFIRM | não | off | H-3: confirmação para uma apply:true destrutiva (delete_record, delete_attachment, uma batch de escrita, send_email, order_catalog_item, revert_write, change_conflicts com calculate:true) no modo de plano. token: a pré-visualização do plano retorna um plan_token de uso único e a aplicação deve devolvê-lo com os mesmos argumentos, caso contrário PLAN_REQUIRED; elicit: token mais um prompt de confirmação em clientes com elicitação (uma recusa é CONFIRM_DECLINED, registrada como recusada). SN_WRITE_MODE=apply ignora isso, exceto em um perfil marcado como prod (SN_ENV), que é sempre pelo menos elicit e é confirmado também no modo de aplicação. O padrão 3.0 é uma decisão do proprietário (O-4). |
| SN_PLAN_TOKEN_TTL_SEC | não | 600 | H-3: tempo de vida de um plan_token em segundos (30–86400). Os tokens vivem apenas no processo do servidor e são consumidos pela aplicação. |
| SN_BATCH_UNMAPPED | não | allow | H-4: uma sub-solicitação servicenow_batch cujo caminho REST não pertence a nenhum pacote de ferramentas: allow verifica-o apenas contra a tabela e os eixos somente leitura; deny recusa-o (portanto, uma nova API de plugin não pode passar SN_PACKAGES_DENY / SN_PACKAGES_READONLY dentro de um lote). Um lote aninhado é sempre recusado. O padrão 3.0 é uma decisão do proprietário (O-4). |
| SN_BATCH_MAX_REQUESTS | não | 1000 | H-4: número máximo de sub-solicitações que uma chamada servicenow_batch pode carregar (1–1000), verificado antes de qualquer envio. |
| SN_PROTECTED_TABLES_WRITE | não | allow | H-11: deny recusa gravações nas tabelas protegidas integradas (identidade, papéis, ACLs, sys_properties, OAuth, scripts, LDAP, certificados, fontes de dados, mensagens REST — servicenow_explain_policy as lista) com POLICY_DENIED; uma entrada exata de SN_TABLES_ALLOW reabilita uma. Leituras não são afetadas. O padrão 3.0 é uma decisão do proprietário (O-4). Por perfil: SN_PROFILE_<NAME>_PROTECTED_TABLES_WRITE. |
| SN_IMPORT_SET_TABLES | não | — | H-11: padrões (*, ?) que a tabela de staging do import-set deve corresponder (ex.: u_*,imp_*); não definido = qualquer tabela que a política de tabelas permitir. |
| SN_MAX_WRITES_PER_SESSION | não | — | H-11: número máximo de gravações aplicadas por sessão (o processo em stdio, uma sessão MCP sobre HTTP; um lote conta suas sub-solicitações de escrita). Além disso, as gravações falham com WRITE_CAP antes de qualquer solicitação; get_status.writes.caps mostra o uso. Não definido = sem limite. |
| SN_MAX_DELETES_PER_SESSION | não | — | H-11: número máximo de exclusões aplicadas por sessão (WRITE_CAP). Não definido = sem limite. |
| SN_MAX_BATCH_WRITES | não | — | H-11: número máximo de sub-solicitações de escrita (não-GET) em um servicenow_batch (WRITE_CAP). Não definido = sem limite. |
| SN_ENV | não | — | H-11: marca o perfil padrão como prod, test ou dev (SN_PROFILE_<NAME>_ENV para outros). Um perfil prod permanece no modo de plano mesmo quando a aplicação está configurada, a menos que SN_PROD_WRITES (SN_PROFILE_<NAME>_PROD_WRITES) seja I_UNDERSTAND; suas aplicações destrutivas são sempre confirmadas (pelo menos SN_DESTRUCTIVE_CONFIRM=elicit, também no modo de aplicação — CONFIRM_REQUIRED para um cliente sem elicitação); os resultados carregam _meta.environment; use_instance avisa. SN_PROFILE_<NAME>_WRITE_MODE define o modo de escrita por perfil. |
| SN_PROD_WRITES | não | — | H-11: I_UNDERSTAND permite que um perfil padrão prod execute no modo de aplicação. |
| SN_UPDATE_SET | não | — | S-6: conjunto de atualização (sys_id ou nome exato) no qual as gravações de ferramentas de Tabela aplicadas (criar / atualizar / upsert / excluir) são registradas; um update_set por chamada o substitui e SN_PROFILE_<NAME>_UPDATE_SET o define por perfil. O plano nomeia o conjunto; o conjunto de atualização atual do usuário é trocado para a gravação e restaurado após ela. Tabelas de linhas de dados são gravadas inalteradas. |
| SN_EMAIL_ALLOWED_DOMAINS | não | — | Domínios de destinatários que servicenow_send_email pode endereçar (para/cc/bcc; um domínio cobre seus subdomínios, * permite qualquer). Quando não definido, todo destinatário deve ser o e-mail de um usuário na tabela sys_user da própria instância; qualquer outra coisa falha com RECIPIENT_NOT_ALLOWED. |
| SN_MAX_UPLOAD_BYTES | não | 10485760 | Maior anexo de upload decodificado, verificado no comprimento base64 antes da decodificação (PAYLOAD_TOO_LARGE). |
| SN_UPLOAD_MIME_ALLOW | não | — | Lista de permissões opcional de tipos de conteúdo de upload (exatos, ou type/*); outros falham com MIME_NOT_ALLOWED. |
| SN_REDACT_FIELDS | não | — | DF-5: mascarar esses valores de campo antes que os registros cheguem ao modelo (separados por vírgula/espaço). |
| SN_REDACT_PII | não | false | DF-5: também mascarar padrões de e-mail/telefone/ID nacional dentro de valores de string. Desde H-5, ambas as configurações de redação se aplicam profundamente a todo resultado de ferramenta (sucesso e erro) e ao diário de gravação. |
| SN_JOURNAL_MAX_BYTES | não | 20971520 | H-5: tamanho (bytes, padrão 20 MiB) no qual write-journal.jsonl rotaciona para write-journal.<ISO-time>.jsonl; a cadeia de hash continua entre arquivos. |
| SN_CSV_FORMULA_GUARD | não | true | H-5: prefixar células de texto CSV que começam com =, +, -, @, tabulação ou CR com ' para que planilhas nunca as avaliem (um -5 de texto exporta como '-5). 0 opta por não participar. |
| SN_CSV_BOM | não | true | H-5: antepor um BOM UTF-8 às exportações format:"csv" para que o Excel decodifique texto não-ASCII. 0 opta por não participar. |
| SN_TRANSPORT | não | stdio | DF-6: stdio (padrão) ou http (HTTP Streamable para clientes remotos/agentes). |
| SN_PORT | não | 3000 | DF-6: porta TCP para o transporte http. |
| SN_HTTP_HOST | não | 127.0.0.1 | DF-6: endereço de bind para o transporte http (loopback por padrão). |
| SN_HTTP_TOKEN | não | — | DF-6: quando definido, solicitações http devem enviar Authorization: Bearer <token>. |
| SN_LOG_LEVEL | não | info | Verbosidade de log no stderr: error, warn, info, debug. |
| SN_LOG_FORMAT | não | json | E-5: formato de linha de log no stderr — json (um objeto por linha) ou text (HH:MM:SS level message key=value). |
| SN_LOG_FILE | não | — | E-5: também anexar toda linha de log (JSON Lines, redigido, modo 0600) a este arquivo, com rotação baseada em tamanho (<file>.1 … <file>.5). O stderr continua funcionando. |
| SN_LOG_FILE_MAX_BYTES | não | 10485760 | E-5: limite de rotação para SN_LOG_FILE (bytes). |
| SN_METRICS | não | off | E-5: somente transporte HTTP — servir métricas Prometheus em GET /metrics, atrás de SN_HTTP_TOKEN (desabilitado quando nenhum token é definido). |
| SN_EXPERIMENTAL_TASKS | não | 0 | M-9, experimental: 1 adiciona um argumento opcional run_as_task:true a snapshot_instance, compare_instances, run_atf_test, run_atf_suite, code_health e query_table (somente format:"file"). Tal chamada retorna um identificador de tarefa MCP imediatamente (_meta["io.modelcontextprotocol/related-task"]); o cliente consulta tasks/get, lê tasks/result (mantido por 1 h, redigido) ou o interrompe com tasks/cancel. Desligado: esquemas inalterados. Construído na API de tarefas experimental do SDK. |
| SN_LOG_NOTIFY_RATE | não | 20 | M-8: notificações de log por segundo e sessão de cliente sobre a capacidade de log do MCP (rajada 50, ou a taxa se maior). Linhas acima disso são contadas e relatadas em um aviso "N mensagens de log suprimidas" por minuto; stderr nunca é limitado. 0 = sem limite. |
| SN_ENV_FILE | não | — | Caminho explícito para o arquivo de ambiente a ser lido/gravado. |
| SN_TOOL_PACKAGES | não | core | Pacotes de ferramentas ou perfis separados por vírgula/espaço para habilitar. Perfis: core (padrão), all e os predefinidos reader | developer | admin (veja Predefinições). Pacotes: table, schema, aggregate, attachment, importset, batch, catalog, change, knowledge, cmdb, scripts, flows, codecheck, docs, instance, email, atf, revert, artifacts, updatesets, ops, history, properties, directory, ui. As ferramentas de administração estão sempre ativas. atf executa testes na instância — habilite-o apenas em uma instância não-produtiva. |
| SN_PACKAGES_DENY | não | — | Pacotes separados por vírgula/espaço para excluir mesmo se habilitados por SN_TOOL_PACKAGES. A única maneira de bloquear APIs de plugin (catálogo, mudança, conhecimento…) — a política de tabelas não as vê. |
| SN_PACKAGES_READONLY | não | — | Pacotes separados por vírgula/espaço cujas ferramentas de escrita não são registradas; suas ferramentas de leitura permanecem. Complemento por pacote ao SN_READONLY global. |
| SN_SCHEMA_CACHE_TTL_SEC | não | 300 | TTL para o cache de leituras de esquema quase estático (list_tables, describe_table, get_cmdb_meta). 0 desabilita o cache. |
| SN_SCHEMA_CACHE_MAX | não | 256 | Número máximo de entradas no cache de leituras de esquema; quando cheio, a entrada menos recentemente usada é removida. Contadores (size, hits, misses, evictions) aparecem em get_status sob schemaCache. |
| SN_CAPABILITY_TTL_MS | não | 600000 | Por quanto tempo uma sonda de capacidade bem-sucedida é armazenada em cache — a matriz servicenow_check_capabilities e a disponibilidade da API de plugin (CI/CD, Code Search, Batch…). Passe refresh: true para re-sondar mais cedo. |
| SN_PLUGIN_NEGATIVE_TTL_MS | não | 60000 | Por quanto tempo uma sonda de capacidade falha (HTTP 401/403/404/5xx) ou uma API de plugin ausente é armazenada em cache antes de ser tentada novamente. Erros de transporte nunca são armazenados em cache. |
| SN_MAX_CONCURRENT | não | 4 | Número máximo de solicitações HTTP paralelas à instância (semáforo simples em processo). |
| SN_MAX_QUEUE | não | 64 | Número máximo de solicitações aguardando por host para um slot livre além de SN_MAX_CONCURRENT. Estouro falha imediatamente com código BUSY em vez de acumular. Diagnósticos (servicenow_test_connection, doctor) ignoram a fila para que ainda respondam enquanto ela está parada. |
| SN_QUEUE_TIMEOUT_MS | não | SN_TIMEOUT_MS | Tempo máximo que uma solicitação espera por um slot antes de falhar com código BUSY. O tempo de espera não é cobrado no tempo limite por tentativa, apenas em SN_DEADLINE_MS. |
| SN_BREAKER_THRESHOLD | não | 0 (desligado) | Disjuntor de circuito opcional por host: após esse número consecutivo de solicitações com falha (erro de transporte, prazo, 5xx), solicitações adicionais falham rapidamente com o código CIRCUIT_OPEN até que SN_BREAKER_RESET_MS passe. Diagnósticos nunca são bloqueados. |
| SN_BREAKER_RESET_MS | não | 30000 | Por quanto tempo um disjuntor de circuito aberto rejeita solicitações antes de permitir uma solicitação de teste; a primeira falha o reabre, o primeiro sucesso o fecha. |
| SN_INCLUDE_REF_LINKS | não | false | Os campos de referência retornam sem suas URLs link por padrão (economia de tokens). Defina true para incluí-los. |
| SN_RESULT_PRETTY | não | false | Os resultados das ferramentas são JSON compacto por padrão (a formatação bonita ~duplica os tokens). Defina true para saída indentada. |
| SN_DOCS_DIR | não | docs/instance | Diretório em que o pacote docs lê/escreve Markdown. Caminhos relativos são resolvidos em relação ao diretório de trabalho. Ele também contém o diário de gravação por perfil — adicione docs/instance/ ao .gitignore em qualquer repositório a partir do qual você execute o servidor. |
| SN_DOCS_MAX_FILE_BYTES | não | 5242880 | Limite de tamanho por arquivo para as ferramentas de documentação: gravações maiores são recusadas, leituras retornam os primeiros bytes com truncated: true, a pesquisa ignora o arquivo. |
| SN_DOCS_STALE_DAYS | não | 30 | servicenow_docs_list sinaliza um documento gerado stale quando seu sn_generated_at é mais antigo que esse número de dias. |
| SN_DOCS_SEARCH_MAX | não | 200 | Número máximo de correspondências que servicenow_docs_search retorna; além disso, o resultado carrega truncated: true. |
| SN_DIAGRAM_MAX_NODES | não | 200 | Limite de nós para os diagramas Mermaid gerados (fluxo de tabelas, rastreamento de eventos, onde usado; tabelas em um diagrama ER detalhado). Nós além disso são agrupados em um único nó +N more. |
| SN_SDK_MANAGED_SCOPES | não | — | P-3: escopos de aplicação separados por vírgula/espaço (namespace como x_acme_app, ou o sys_id sys_scope) que você declara como gerenciados por um projeto ServiceNow SDK (Fluent). A maior fonte de autoridade para detecção gerenciada por SDK; listado em get_status / check_capabilities sob sdkManaged. |
| SN_SDK_MANAGED_WRITES | não | warn | P-22: gravações em um escopo gerenciado por SDK (um registro cujo sys_scope P-3 detecta como gerenciado por SDK) de create_record, update_record, upsert_record, delete_record, set_property e revert_write: warn pré-visualiza e aplica com um bloco sdkManaged nomeando a alternativa Fluent; deny recusa a aplicação com SDK_MANAGED_SCOPE (o plano diz would_refuse); allow ignora a verificação. Executa após a política de tabelas e não custa nada, a menos que SN_SDK_MANAGED_SCOPES ou SN_SDK_PROJECT_DIRS esteja definido. |
| SN_SDK_PROJECT_DIRS | não | — | P-3: diretórios (separados por vírgulas ou pelo delimitador de caminho da plataforma) verificados somente leitura para projetos SDK: cada now.config.json declara seu scope / scopeId como gerenciado por SDK. Limitado (profundidade 4, 2000 diretórios, 100 arquivos de configuração, 256 KiB por arquivo), nunca segue links simbólicos, ignora pastas ocultas, node_modules e de build, e lê apenas now.config.json. |
| SN_CODESEARCH | não | false | Opte pela API de Pesquisa de Código (sn_codesearch) para servicenow_search_code (FT-7). Quando true e o plugin estão ativos, ela substitui a iteração LIKE; volta para LIKE em qualquer falha. |
| SN_PROFILE_<NAME>_* | não | — | Perfis de conexão nomeados: SN_PROFILE_DEV_INSTANCE / _USER / _PASSWORD definem o perfil dev. As chaves simples SN_INSTANCE/SN_USER/SN_PASSWORD são o perfil default. |
| SN_ACTIVE_PROFILE | não | default | Qual perfil as ferramentas usam. Alterne em tempo de execução com servicenow_use_instance (persistido no arquivo de ambiente). |
Política de acesso em dois eixos
O acesso é controlado em dois eixos independentes: tabelas e pacotes de ferramentas.
| Eixo | Habilitar / negar / somente leitura | Exemplo |
|---|---|---|
| Tabelas | SN_TABLES_ALLOW / SN_TABLES_DENY / SN_READONLY | SN_TABLES_DENY=change_request bloqueia a API de Tabelas e (desde H-4) as ferramentas de Change, que verificam sua tabela de apoio. |
| Pacotes | SN_TOOL_PACKAGES / SN_PACKAGES_DENY / SN_PACKAGES_READONLY | SN_PACKAGES_DENY=change remove as ferramentas de Gerenciamento de Mudanças e bloqueia a API do plugin sn_chg_rest, também dentro de um lote. |
Desde H-4, as ferramentas apoiadas por plugins (Change, Catalog, Knowledge, Email, ATF) e anexos (através da tabela do registro pai) também obedecem ao eixo de tabelas; o eixo de pacotes ainda remove superfícies inteiras. Consulte Notas de segurança para o modelo completo (incluindo como a API de Lote obedece a ambos os eixos).
Sintaxe de lista: listas de tabelas (SN_TABLES_ALLOW / SN_TABLES_DENY) são
separadas por vírgula; listas de pacotes (SN_TOOL_PACKAGES, SN_PACKAGES_DENY,
SN_PACKAGES_READONLY) aceitam vírgulas ou espaços em branco. Espaços ao redor são
removidos em ambas, e a correspondência de tabelas não diferencia maiúsculas de minúsculas — então
SN_TABLES_DENY=Change_Request, sys_user funciona. Desde H-11, uma entrada de tabela pode ser
um padrão (* qualquer sequência, ? um caractere): SN_TABLES_DENY=sys_* bloqueia
sys_user e deixa incident intacto. A ordem é: uma negação exata, uma
permissão exata, uma negação por padrão, as tabelas protegidas (gravações, com
SN_PROTECTED_TABLES_WRITE=deny), então os padrões da lista de permissões. Pergunte
servicenow_explain_policy({table, action}) qual regra decide, ou leia
servicenow://policy.
Executar / depurar
- VS Code: abra a Paleta de Comandos e inicie o servidor definido em .vscode/mcp.json, depois use-o no Chat.
- MCP Inspector:
npm run inspector - Diretamente:
npm start
Observabilidade
-
Status.
servicenow_get_statuscarrega um blocoobservability: por ferramenta{count, errors, p50, p95, totalMs}(percentis em ms sobre as últimas 256 chamadas de cada ferramenta — a memória permanece limitada), acertos/erros de cache de esquema, contadores de repetição por host, limites e ocupação de fila, estado do disjuntor e os últimos cabeçalhosX-RateLimit-*que cada host enviou. Ele nunca chama a instância. -
Logs. Os logs vão apenas para stderr (stdout é o protocolo MCP).
SN_LOG_FORMAT=textalterna de linhas JSON para um formato legível por humanos;SN_LOG_FILEtambém anexa linhas JSON a um arquivo com rotação de tamanho. Campos nomeados por credenciais (password,token,authorization, …) são mascarados em cada destino, e as regrasSN_REDACT_FIELDS/SN_REDACT_PIIse aplicam por cima. -
Ganchos de rastreamento. O loop de requisições publica em
node:diagnostics_channel, então um assinante OpenTelemetry (ou qualquer um) pode se anexar sem dependência deste servidor:Canal Quando Campos de mensagem servicenow-mcp:http.request.startuma requisição lógica começa id,system,method,host,telemetryKey,url, eprofile/requestId/sessionId/toolem uma chamadaservicenow-mcp:http.request.endresolveu com uma resposta OK os campos iniciais mais status,attempts,msservicenow-mcp:http.request.errorfalhou os campos iniciais mais attempts,ms,status,code,errorName,errorMessageservicenow-mcp:http.request.retryuma tentativa é repetida (backoff, reautenticação 401) id,system,method,host,url,attempt,reason,waitMsurlnunca inclui a string de consulta; cabeçalhos, corpos e credenciais nunca são publicados, eerrorMessagepassa pelas regras de redação. -
Prometheus. Com o transporte HTTP,
SN_METRICS=1eSN_HTTP_TOKENdefinidos,GET /metrics(mesmo token de portador) serve as mesmas figuras no formato de texto Prometheus (famíliasservicenow_mcp_*, rotuladas apenas portool/host). Sem um token, o endpoint permanece desligado e um aviso é registrado.
Interface de linha de comando
O binário publicado servicenow-mcp-ai (execute-o diretamente, ou via
npx servicenow-mcp-ai) inicia o servidor MCP quando nenhum comando é fornecido, e
caso contrário executa um dos comandos abaixo e sai. As configurações de conexão vêm de
variáveis de ambiente / arquivo de ambiente (consulte Variáveis de ambiente).
servicenow-mcp-ai --help lista tudo; --version imprime a versão. Um
comando ou opção desconhecido imprime o uso em stderr e sai com 2 — ele nunca
inicia o servidor.
| Comando | Opções | O que faz | Códigos de saída |
|---|---|---|---|
servicenow-mcp-ai | (nenhuma) | Inicia o servidor MCP. O transporte (stdio padrão, ou http) é escolhido por SN_TRANSPORT; executa até SIGINT/SIGTERM. stdout é o canal de protocolo. | 0 desligamento limpo · 1 erro fatal de inicialização |
servicenow-mcp-ai init | --profile <name>, --skip-doctor | Configuração interativa: pergunta pela instância, o método de autenticação e suas credenciais (segredos através de um prompt oculto), escreve o arquivo de ambiente, então executa doctor. | o código de saída doctor · 0 com --skip-doctor · 2 respostas recusadas / inválidas |
servicenow-mcp-ai doctor | --json, --ascii, --profile <name> | Verificação de saúde: credenciais, uma sonda de conectividade ao vivo e a pré-verificação de capacidade. A primeira linha nomeia o arquivo de ambiente que foi usado. | 0 saudável · 1 degradado ou inacessível · 2 não configurado |
servicenow-mcp-ai login | --profile <name> | Login único OAuth 2.1 Authorization Code + PKCE: abre o navegador, captura o redirecionamento de loopback, armazena um token de atualização. | 0 sucesso · 1 falha no login |
servicenow-mcp-ai drift <profileA> <profileB> | (nenhuma) | Portão de deriva de CI DF-3: compara as duas instâncias e escreve um relatório de diferenças em Markdown. | 0 sem deriva · 1 deriva encontrada · 2 uso / erro |
servicenow-mcp-ai support-bundle | --out <file>, --profile <name> | Escreve um arquivo JSON para um relatório de bug e imprime seu caminho em stdout. | 0 escrito · 1 falha na escrita |
init escreve através do mesmo gravador de arquivo de ambiente atômico, somente do proprietário (0600) que
servicenow_set_credentials, para o arquivo que doctor nomeia (por padrão
~/.config/servicenow-mcp-ai/.env). Ele pergunta, em ordem: a instância (dev12345
ou um host completo; um domínio personalizado precisa de SN_ALLOWED_HOSTS), o método de autenticação
(basic / oauth / apikey / token), então as configurações desse método — para
oauth a concessão (client_credentials, password, ou authorization_code,
que termina com uma dica para executar login). Segredos nunca são ecoados ou registrados; o
resumo lista apenas nomes de chaves. Com --profile qa as chaves são escritas como
SN_PROFILE_QA_*. Um perfil existente é sobrescrito apenas após um y. As
respostas podem ser canalizadas, uma por linha, que é como CI e testes a dirigem:
printf 'dev12345\nbasic\nalice\n%s\n' "$SN_PASSWORD" | npx servicenow-mcp-ai init
Sem um terminal e sem respostas canalizadas, init recusa (saída 2) e
não escreve nada.
doctor imprime ASCII simples ([ok] / [x] em vez de marcas de verificação) com
--ascii, quando stdout não é um terminal, e no Windows fora do Windows Terminal.
--json imprime um documento JSON em vez disso: envFile, status, summary,
checks[] (name, ok, detail), config, connection, capabilities e
serverStatus (o payload servicenow_get_status) — por exemplo
servicenow-mcp-ai doctor --json | jq .checks. Os códigos de saída são os mesmos.
support-bundle coleta o payload doctor --json, cada configuração SN_*
com segredos mascarados como ***, npm ls --omit=dev (melhor esforço), o
resumo do manifesto de ferramentas (versão, contagens de ferramentas e pacotes, ferramentas ativas) e as últimas
200 linhas de SN_LOG_FILE quando uma está definida. Cada valor mascarado também é limpo
de todo o arquivo. O caminho padrão é
./servicenow-mcp-ai-support-<timestamp>.json (modo 0600). Nomes de instância e usuário
não são mascarados — revise o arquivo antes de anexá-lo a um problema.
login opera no perfil ativo (SN_ACTIVE_PROFILE, padrão
default) e lê, para esse perfil:
SN_INSTANCE— obrigatório; a instância de destino.SN_OAUTH_CLIENT_ID— obrigatório; id do cliente de um endpoint de API OAuth Authorization Code.SN_OAUTH_CLIENT_SECRET— opcional; para um cliente confidencial.SN_OAUTH_REDIRECT_URI— opcional; URL de loopback, padrãohttp://localhost:53682/callback. Deve corresponder ao redirecionamento registrado no endpoint.SN_OAUTH_SCOPE— opcional; escopo OAuth solicitado.
Em caso de sucesso, escreve SN_AUTH=oauth, SN_OAUTH_GRANT=refresh_token e
SN_OAUTH_REFRESH_TOKEN de volta ao arquivo de ambiente (prefixado por perfil quando o perfil
não é default). A URL de autorização é impressa em stderr caso o navegador
não abra automaticamente.
drift recebe dois nomes de perfil posicionais; cada um deve resolver para um perfil
configurado (SN_PROFILE_<NAME>_*, ou as chaves simples SN_INSTANCE / SN_USER /
SN_PASSWORD para default). O relatório Markdown é escrito em stdout
(capture-o como um artefato de CI); um resumo de deriva de uma linha vai para stderr.
Portão de deriva de CI (DF-3)
Compare dois perfis configurados e falhe um pipeline em deriva de configuração:
servicenow-mcp-ai drift dev prod # report on stdout; exit 1 on drift, 0 if clean, 2 on error
O relatório mostra cada script alterado como um bloco diff. A CLI compara tabelas,
colunas, scripts, plugins e aplicativos; seções de registros (sections em
servicenow_compare_instances) são opcionais, então os códigos de saída permanecem inalterados.
servicenow_snapshot_instance escreve o mesmo material na pasta de docs, um
arquivo por seção, no máximo quatro seções por vez. Uma execução interrompida é marcada
partial em index.json; execute novamente com resume: true para pular toda seção cujos
arquivos não foram alterados.
Desenvolver
npm run check # full gate: build, lint, format check, coverage-gated tests, tarball guard, prod audit
npm test # unit tests only (node:test; needs a prior npm run build)
npm run lint # ESLint (flat config + typescript-eslint)
npm run format # format with Prettier
Consulte CONTRIBUTING.md para as convenções (um commit por tarefa, testes acompanham a alteração, documentação gerada).
Ferramentas
Esta tabela é gerada a partir dos registros de ferramentas — edite as
definições de ferramentas em src/tools/, depois execute npm run docs:readme.
| Pacote | Ferramenta | Somente leitura | Descrição | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
table | servicenow_query_table | sim | Ler registros de qualquer tabela (Table API): consulta codificada, campos, paginação, fetchAll | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
table | servicenow_get_record | sim | Ler um único registro de uma tabela pelo seu sys_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
table | servicenow_create_record | não | Criar um novo registro em uma tabela com os valores de campo fornecidos | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
table | servicenow_update_record | não | Atualizar campos em um registro existente identificado pelo seu sys_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
table | servicenow_upsert_record | não | Criar ou atualizar um registro correspondente por uma chave exata de pares campo/valor: sem correspondência cria, uma atualiza, se… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
table | servicenow_delete_record | não | Excluir um registro de uma tabela pelo seu sys_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
schema | servicenow_list_tables | sim | Listar tabelas de sys_db_object, opcionalmente filtradas por um fragmento de nome ou rótulo | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
schema | servicenow_describe_table | sim | Listar as colunas de uma tabela de sys_dictionary (nome, rótulo, tipo, obrigatório, referência, padrão, somente leitura/uni… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
aggregate | servicenow_aggregate | sim | Calcular agregados no servidor (count, avg, min, max, sum) sobre uma tabela via Stats API, com gr… opcional | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
attachment | servicenow_list_attachments | sim | Listar metadados de anexos, opcionalmente limitados a um registro específico (tabela + sys_id) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
attachment | servicenow_get_attachment | sim | Ler os metadados de um único anexo pelo seu sys_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
attachment | servicenow_download_attachment | sim | Baixar os bytes de um anexo, retornados como base64 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
attachment | servicenow_upload_attachment | não | Anexar um arquivo (fornecido como base64) a um registro identificado por tabela + sys_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
attachment | servicenow_delete_attachment | não | Excluir um anexo pelo seu sys_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
importset | servicenow_insert_import_set_row | não | Inserir uma linha em uma tabela de staging e executar seu mapa de transformação | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
importset | servicenow_get_import_set_row | sim | Ler o resultado da transformação para uma linha de staging inserida anteriormente pelo seu sys_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
batch | servicenow_batch | não | Executar várias sub-solicitações REST do ServiceNow em uma única ida e volta HTTP via Batch API | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
catalog | servicenow_list_catalogs | sim | Listar os Catálogos de Serviço disponíveis na instância (Service Catalog API) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
catalog | servicenow_list_catalog_categories | sim | Listar as categorias dentro de um catálogo de serviços | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
catalog | servicenow_list_catalog_items | sim | Pesquisar/listar itens de catálogo ordenáveis, opcionalmente por texto ou categoria | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
catalog | servicenow_get_catalog_item | sim | Obter um item de catálogo, incluindo suas variáveis de pedido, por sys_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
catalog | servicenow_order_catalog_item | não | Pedir um item de catálogo diretamente ('order now') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
change | servicenow_list_changes | sim | Listar solicitações de mudança através da Change Management API | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
change | servicenow_get_change | sim | Obter uma única solicitação de mudança por sys_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
change | servicenow_create_change | não | Criar uma mudança normal, padrão ou de emergência | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
change | servicenow_update_change | não | Atualizar campos em uma solicitação de mudança por sys_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
change | servicenow_change_conflicts | não | Ler conflitos de agenda para uma mudança, ou recalculá-los (calculate=true) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
knowledge | servicenow_search_knowledge | sim | Pesquisa de texto completo de artigos de conhecimento (Knowledge API), com consulta codificada e paginação opcionais | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
knowledge | servicenow_get_knowledge_article | sim | Obter um artigo de conhecimento (conteúdo e metadados) por sys_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
knowledge | servicenow_knowledge_highlights | sim | Listar artigos de conhecimento em destaque ou mais visualizados para o usuário atual | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cmdb | servicenow_list_cis | sim | Listar itens de configuração de uma classe CMDB através da class-aware CMDB Instance API | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cmdb | servicenow_get_ci | sim | Obter um IC com seus atributos e relações de entrada/saída por classe e sys_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cmdb | servicenow_create_ci | não | Criar um IC via CMDB Instance API (roteado através de Identification & Reconciliation) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cmdb | servicenow_update_ci | não | Atualizar os atributos de um IC via CMDB Instance API (IRE) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cmdb | servicenow_get_cmdb_meta | sim | Obter o esquema/metadados de uma classe CMDB (atributos, regras de relacionamento) da CMDB Meta API | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cmdb | servicenow_list_ci_relations | sim | Listar as relações de um IC de cmdb_rel_ci, cada uma orientada a partir desse IC (saída = ele é o pai,… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cmdb | servicenow_identify_reconcile | não | Enviar ICs e relações através do Identification & Reconciliation Engine (/api/now/identifyreconcile),… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
scripts | servicenow_list_scripts | sim | Listar artefatos de script de um tipo como metadados compactos (sem código-fonte); 'type' lista os padrão e opt-i… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
scripts | servicenow_get_script | sim | Ler um artefato de script completo, incluindo seu código-fonte e contexto de execução | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
scripts | servicenow_search_code | sim | Pesquisar o código-fonte de scripts por uma substring literal em um ou todos os tipos de script | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
scripts | servicenow_table_logic | sim | Montar a automação que roda em uma tabela: regras de negócio (ordenadas por when+order), scripts de cliente, UI po… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
scripts | servicenow_where_used | sim | Encontrar referências a uma tabela, campo (tabela.campo) ou script: linhas correspondentes em fontes de script, regras/ACLs att… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flows | servicenow_trace_table_event | sim | Rastrear o que seria executado para uma operação de tabela, em ordem, sem executar: display/before/after/async busines… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flows | servicenow_list_flows | sim | Listar fluxos do Flow Designer (sys_hub_flow) ou workflows legados (kind: 'workflow') como metadados compactos | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flows | servicenow_get_flow | sim | Obter uma visão estruturada de um fluxo ou workflow: seu gatilho (tabela/condição/quando) e etapas ordenadas | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flows | servicenow_get_flow_runs | sim | Ler evidências de execução de fluxo de sys_flow_context — por sys_id do fluxo ou pelo registro (documento) em que foi executado… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flows | servicenow_explain_flow | sim | Explicar um fluxo/subfluxo (gatilho, árvore de etapas com entradas e pílulas decodificadas, chamadas de subfluxo/ação expandidas, dr… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
codecheck | servicenow_lint_script | sim | Executar regras determinísticas de qualidade de código sobre um artefato de script (sys_ids/URLs codificados, sem limites ou em loo… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
codecheck | servicenow_lint_table | sim | Lint de toda regra de negócio ativa, script de cliente e política de UI de uma tabela (via table_logic), retornando por-sc… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
codecheck | servicenow_code_health | não | Relatório de saúde de código: contagens de scripts por tipo, varredura de segurança de ACL (abertas, função pública, scriptadas, ACLs elevadas, p… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
docs | servicenow_docs_list | sim | Listar os documentos Markdown na pasta local de documentação da instância (SN_DOCS_DIR), com metadados por arquivo… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
docs | servicenow_docs_read | sim | Ler um documento Markdown ou companheiro .json gerado da pasta local de documentação da instância; o r… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
docs | servicenow_docs_search | sim | Pesquisar a documentação local da instância por uma substring; retorna um trecho e o cabeçalho mais próximo por corres… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
docs | servicenow_docs_write | não | Criar ou sobrescrever um documento Markdown na pasta local de docs e atualizar index.md | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
docs | servicenow_generate_er_diagram | sim | Construir um erDiagram Mermaid a partir de sys_dictionary: uma entidade por tabela, uma relação por campo de referência | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
docs | servicenow_generate_table_flow | sim | Fluxograma Mermaid do ciclo de vida de um registro em uma tabela: regras de negócio ativas por fase (display/before/after/… | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
docs | servicenow_document_table | não | Escrever /tables/.md + .json apenas a partir de metadados: herança, colunas, colunas de referência, ER…
|