使用说明
ServiceNow MCP Server
O ServiceNow MCP Server é um conector de alta performance que permite que agentes de IA (Claude, GitHub Copilot, Antigravity) desenvolvam e gerenciem instâncias do ServiceNow diretamente via APIs nativas.
v7.2.0 — 47 ferramentas ativas, 4 MCP Prompts. Consolidação de System Properties (3→1: sn_manage_sys_property) e Attachments (3→1: sn_manage_attachment). Fluxo de governança sn_generate_execution_plan + prompt safe_change_request. Dashboard v3.0 com Graph Explorer (D3.js), Schema Search e Latency Heatmap.
Índice
- Requisitos
- Instalação Rápida
- Configuração do Ambiente (.env)
- Instalação por Plataforma
- Dashboard v3.0
- Incremental Harvester
- Build & Testes
- Ferramentas Disponíveis
- MCP Prompts
- Changelog
Requisitos
- Node.js >= 18 (Recomendado: >= 20)
- npm >= 9
- Credenciais ServiceNow (Basic Auth ou OAuth 2.0)
Instalação Rápida
git clone https://github.com/jeffersonrmoraes/servicenow-mcp.git
cd servicenow-mcp
npm install
Configuração do Ambiente (.env)
O servidor carrega automaticamente as variáveis do arquivo .env na raiz.
# Exemplo 1: Ambiente PDI
PDI_SN_INSTANCE=dev12345
PDI_SN_USER=admin
PDI_SN_PASSWORD=sua_senha
# Exemplo 2: Ambiente DEV
DEV_SN_INSTANCE=dev99999
DEV_SN_USER=admin
DEV_SN_PASSWORD=outra_senha
# Instância padrão (sem prefixo)
SN_INSTANCE=dev88888
SN_USER=admin
SN_PASSWORD=senha_padrao
# Cache persistente (opcional)
SN_CACHE_PERSIST=true
SN_CACHE_PERSIST_PATH=.sn-cache.json
# Activity log (opcional — sobrepõe o caminho padrão)
SN_ACTIVITY_LOG_PATH=.sn-activity.jsonl
Use o parâmetro env nas ferramentas para rotear entre ambientes:
env: "PDI"→ usaPDI_SN_INSTANCE,PDI_SN_USER, etc.env: "DEV"→ usaDEV_SN_INSTANCE,DEV_SN_USER, etc.env: ""(ou omitido) → usa as variáveis sem prefixo (SN_INSTANCE, etc.)
Instalação por Plataforma
Claude Desktop
Abra seu claude_desktop_config.json e adicione a configuração exata baseada no seu diretório:
{
"mcpServers": {
"servicenow-mcp": {
"command": "npx",
"args": [
"-y",
"tsx",
"c:/servicenow-mcp/servicenow-mcp/src/index.ts"
],
"workingDirectory": "c:/servicenow-mcp/servicenow-mcp",
"disabled": false
}
}
}
Claude Code (CLI)
claude mcp add servicenow -- npx tsx /caminho/para/servicenow-mcp/src/index.ts
Ou configure via .mcp.json na raiz do projeto:
{
"mcpServers": {
"servicenow": {
"command": "npx",
"args": ["tsx", "/caminho/para/servicenow-mcp/src/index.ts"]
}
}
}
VS Code + GitHub Copilot
Em .vscode/mcp.json:
{
"servers": {
"servicenow": {
"type": "stdio",
"command": "npx",
"args": ["tsx", "/caminho/para/servicenow-mcp/src/index.ts"]
}
}
}
Antigravity (Google Agentspace)
Configure o servidor como stdio apontando para o arquivo principal.
Configuração recomendada:
- Command:
npx - Args:
["-y", "tsx", "c:/servicenow-mcp/servicenow-mcp/src/index.ts"] - Working Directory:
c:/servicenow-mcp/servicenow-mcp
Dashboard v3.0
O Dashboard é um painel web local que roda em paralelo ao servidor MCP, sem interferir na latência das ferramentas.
npm run dashboard
# Acesse: http://localhost:3000
Funcionalidades
| Aba | O que faz |
|---|---|
| ENVIRONMENTS | Gerencia instâncias (.env), health check paralelo por ambiente, editor de config raw, OAuth 2.0 flow |
| TOOLS | Explorer com busca full-text e filtros por módulo, visualização de schema JSON + Schema Search integrada |
| ACTIVITY | Live feed via SSE (Server-Sent Events) com reconexão automática, filtro por tool, auto-scroll |
| STATS | Métricas de servidor, cache, knowledge base e activity log com auto-refresh a cada 30s + Latency Heatmap |
| GOVERNANCE | Linter de Update Sets com 15 checks de boas práticas — selecionáveis individualmente |
| GRAPH | Graph Explorer — visualização D3.js force-directed das relações entre tabelas (zoom, drag, sidebar de detalhes) |
Linter de Update Sets (15 checks)
| Check | Severidade | Detecta |
|---|---|---|
try_catch |
warning | Scripts com GlideRecord sem bloco try/catch |
comments |
info | Scripts longos sem comentários |
hardcoded_sysids |
error | sys_ids de 32 chars hardcoded no código |
missing_deps |
warning/error | Script Includes referenciadas mas ausentes/inativas |
duplicate_methods |
error | Funções com o mesmo nome no mesmo script |
gr_in_loop |
error | new GlideRecord dentro de while/for — N+1 queries |
current_update |
error | current.update() em Business Rules — loop infinito |
eval_usage |
error | eval() — injeção de código |
client_server_api |
error | APIs server-only (GlideRecord, gs.*) em Client Scripts |
no_limit_query |
warning | GlideRecord.query() sem setLimit() — full-table scan |
rest_no_timeout |
warning | RESTMessageV2 sem setHttpTimeout() — thread starvation |
encoded_query_concat |
warning | Concatenação em addEncodedQuery() — query injection |
hardcoded_urls |
warning | URLs http/https hardcoded (exceto localhost) |
hardcoded_secrets |
error | Credenciais hardcoded: password, api_key, token, secret, client_secret |
missing_description |
info | Script Includes e Business Rules sem campo description preenchido |
Incremental Harvester
O Harvester sincroniza metadados da instância localmente em knowledge/. Usa sys_updated_on para baixar apenas o que mudou desde o último sincronismo (knowledge/state.json). Default: 50 tabelas por execução.
# Sincroniza apenas as mudanças desde a última execução
npm start -- sn_sync_knowledge_base --category CORE
# Força sincronismo completo
npm start -- sn_sync_knowledge_base --force
# Com garbage collection (remove schemas obsoletos)
npm start -- sn_sync_knowledge_base --force --cleanup
Os schemas ficam em knowledge/core/, knowledge/custom/ e knowledge/system/.
Build & Testes
# Type-check sem build
npm run type-check
# Build para produção (gera dist/)
npm run build
# Testes (TypeScript direto)
npm test
# Modo desenvolvimento com hot-reload
npm run dev
# Dashboard (http://localhost:3000)
npm run dashboard
# Tool Scaffolder — gera boilerplate de novo módulo
npm run add-tool <module> <sn_tool_name>
# Exemplo: npm run add-tool reporting sn_export_dashboard
Ferramentas Disponíveis
47 ferramentas organizadas em 17 módulos.
Core CRUD
| Ferramenta | Descrição |
|---|---|
sn_query_records |
Consulta registros com encoded query, filtros de campos e paginação por offset |
sn_query_all |
Paginação automática: retorna dados e cursor next_offset para datasets grandes |
sn_get_record |
Busca um registro específico pelo sys_id |
sn_create_record |
Cria registro genérico em qualquer tabela |
sn_update_record |
Atualiza campos de qualquer registro pelo sys_id |
sn_bulk_update |
Atualiza múltiplos registros por encoded query (até 500 registros) |
sn_clone_record |
Duplica um registro removendo campos sys_* somente-leitura |
sn_diff_records |
Compara o mesmo registro entre dois ambientes (ex: DEV vs PROD) |
sn_search_global |
Busca textual em múltiplas tabelas simultaneamente |
sn_list_envs |
Lista todos os ambientes configurados no .env com seus prefixos |
Metadados & Código
| Ferramenta | Descrição |
|---|---|
sn_upsert_metadata_script |
Cria ou atualiza Business Rules, Script Includes, Client Scripts, UI Policies, Scheduled Jobs |
sn_execute_script |
Executa scripts no servidor via Scripted REST (com sanitização de segurança) |
sn_manage_schema |
Criação de tabelas e campos com tipos nativos do ServiceNow |
IA & Contexto
| Ferramenta | Descrição |
|---|---|
sn_sync_knowledge_base |
Sincroniza metadados localmente (incremental via state.json, com garbage collection). Default: 50 tabelas |
sn_get_dependencies |
Lista tabelas referenciadas por uma tabela (Outbound Relationships) |
sn_analyze_impact |
Lista tabelas que referenciam uma tabela (Inbound). Com deep_discovery: true escaneia scripts em 6 tabelas |
sn_generate_ai_context |
Gera context window otimizado cruzando o registro com o schema local |
Front-end & UX
| Ferramenta | Descrição |
|---|---|
sn_manage_widget |
Cria ou atualiza Service Portal Widgets (template, CSS, server/client scripts) |
sn_manage_ui_action |
Cria ou atualiza UI Actions (botões e menus em formulários e listas) |
sn_manage_ui_page |
Cria ou atualiza UI Pages customizadas (XHTML + CSS + scripts) |
Service Catalog
| Ferramenta | Descrição |
|---|---|
sn_manage_catalog_item |
Cria ou atualiza itens do Service Catalog |
sn_manage_catalog_variable |
Cria ou atualiza variáveis de um Catalog Item |
sn_manage_catalog_category |
Cria ou atualiza categorias no Service Catalog |
sn_get_catalog_item_bundle |
Leitura atômica: configurações, variáveis e client scripts de um Catalog Item |
Flow Designer
| Ferramenta | Descrição |
|---|---|
sn_get_flow |
Busca um Flow pelo nome ou sys_id |
sn_activate_flow |
Ativa ou desativa um Flow |
sn_trigger_flow |
Dispara um Flow manualmente via API |
sn_list_flow_executions |
Lista execuções recentes para monitoramento e debug |
sn_create_subflow |
Cria um Subflow reutilizável |
sn_create_flow_action |
Cria uma Action customizada reutilizável |
Segurança & Acesso
| Ferramenta | Descrição |
|---|---|
sn_manage_acl |
Gestão de ACLs e roles associadas (upsert, list, add_role) |
sn_manage_notification |
Gestão de notificações de email |
sn_manage_access |
Gestão de Roles, Grupos e acessos de usuários |
Deploy & Update Sets
| Ferramenta | Descrição |
|---|---|
sn_create_update_set |
Cria um Update Set |
sn_set_current_update_set |
Define o Update Set atual |
sn_list_update_sets |
Lista Update Sets disponíveis |
sn_complete_update_set |
Marca um Update Set como completo |
sn_generate_execution_plan |
Gera plano de execução + análise de impacto em tempo real antes de operações mutantes |
sn_check_update_set |
Linter de qualidade com 15 checks de boas práticas ServiceNow |
Logs & Observabilidade
| Ferramenta | Descrição |
|---|---|
sn_stream_syslog |
Lê entradas do syslog da instância por nível, intervalo de tempo e nó. Requer role admin |
sn_get_node_log |
Busca logs de um nó específico do cluster com filtros de severity |
Attachments
| Ferramenta | Descrição |
|---|---|
sn_manage_attachment |
action=upload: envia arquivo (Base64). action=list: lista anexos de um registro. action=download: baixa conteúdo em Base64 |
System Properties
| Ferramenta | Descrição |
|---|---|
sn_manage_sys_property |
action=get: busca por nome. action=set: cria ou atualiza (upsert, suporte a mascaramento). action=list: lista por prefixo |
Utilitários
| Ferramenta | Descrição |
|---|---|
sn_health_check |
Testa conectividade e retorna versão, instância e usuário |
sn_manage_choice |
Gerencia opções de campos Choice (sys_choice) |
sn_export_records |
Exporta registros em JSON ou CSV (até 1000 registros) |
sn_manage_email_template |
Gerencia templates de email reutilizáveis |
MCP Prompts
O servidor expõe 4 prompts predefinidos que guiam agentes de IA em workflows comuns:
| Prompt | Descrição |
|---|---|
create_business_rule |
Guia passo-a-passo para criar uma Business Rule |
debug_incident |
Workflow para investigar e diagnosticar um incident |
analyze_table |
Análise completa: schema, dependencies, ACLs, scripts |
safe_change_request |
Governança de Mudanças: gera plano de execução + análise de impacto e aguarda aprovação antes de qualquer operação mutante |
Governança de Mudanças — Fluxo Plan → Impact → Approval
A partir da v7.1.0, o MCP oferece um fluxo de segurança consultivo para operações mutantes. O prompt safe_change_request instrui o agente a:
- Planejar — chamar
sn_generate_execution_planpara gerar um plano detalhado - Analisar o impacto — a ferramenta consulta a instância em tempo real (Business Rules, Client Scripts, ACLs, registros afetados)
- Pedir aprovação — se
requires_approval: true, o agente para e aguarda confirmação explícita do usuário antes de executar qualquer operação
Importante: O fluxo é consultivo — o MCP não bloqueia tecnicamente chamadas subsequentes. O prompt guia a IA a interromper e solicitar aprovação explícita do usuário.
sn_generate_execution_plan — Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
operation_type |
string | create_table, modify_table, create_script, modify_script, deploy_update_set, modify_acl, bulk_update, generic |
description |
string | Descrição clara do que será feito (obrigatório) |
target_table |
string | Tabela principal envolvida (ex: incident) |
target_name |
string | Nome do script ou artefato alvo |
update_set_id |
string | sys_id do Update Set — aparecerá no plano de lint |
preview_query |
string | Encoded query para bulk_update — conta registros afetados |
env |
string | Prefixo do ambiente (ex: PDI, DEV) |
O retorno inclui report_markdown com plano completo, requires_approval (boolean), e campo steps estruturado com ferramenta e nível de risco por passo.
Segurança
- Operações de delete: Completamente removidas por política de segurança. Use a interface do ServiceNow para operações destrutivas.
- Script sanitization:
sn_execute_scriptesn_upsert_metadata_scriptbloqueiam operações perigosas (deleteMultiple,Packages.java,Runtime, etc.). - OAuth tokens: Armazenados apenas em memória durante a sessão. Nunca persistidos em
.envvia código. - Retry: Backoff exponencial automático para erros 429, 500, 502, 503, 504.
- LRU Cache: Limite máximo de entradas para prevenir memory leaks. Persistência opcional em JSON.
- Admin guard:
sn_stream_syslogesn_get_node_logverificam a roleadminvia API antes de executar.
Changelog
| Versão | Data | Destaque |
|---|---|---|
| v7.2.0 | 2026-04-23 | Consolidação de ferramentas: 51→47. System Properties (3→1: sn_manage_sys_property), Attachments (3→1: sn_manage_attachment). Remoção do prompt onboarding_app. 47 ferramentas, 4 prompts. |
| v7.1.0 | 2026-04-23 | Governança de Mudanças: sn_generate_execution_plan (análise de impacto em tempo real — BRs, Client Scripts, ACLs, bulk count). Prompt safe_change_request (fluxo Plan→Impact→Approval). 51 ferramentas, 5 prompts. 14 testes unitários para o planner. |
| v7.0.0 | 2026-04-23 | Dashboard v3.0 (Graph Explorer D3.js, Schema Search, Latency Heatmap, 6 abas). JIT Harvester (auto-sync de tabelas desconhecidas em background). Schema-Aware Validation (warnings de campos inválidos em CRUD). Linter expandido para 15 checks (hardcoded_urls, hardcoded_secrets, missing_description). Governance sub-modularizado (src/tools/governance/). Tool Scaffolder CLI (npm run add-tool). |
| v6.0.0 | 2026-04-17 | 50 ferramentas. Dashboard v2.0 (5 abas, SSE live activity, linter UI). Novos módulos: sn_stream_syslog, sn_get_node_log (admin-only), sn_check_update_set (12 checks). Cache persistente em JSON. Activity log JSONL (IPC MCP→Dashboard). Deep Discovery em sn_analyze_impact. Harvester default 50 tabelas. |
| v5.0.0 | 2026-04-17 | 46 ferramentas. Arquitetura split (15 módulos). LRU cache com eviction. Retry com exponential backoff. MCP Prompts (4). Novos tools: sn_clone_record, sn_diff_records, sn_search_global. Script sanitization. OAuth memory-only. Delete completamente removido. Testes migrados para TypeScript. Build step com tsc. |
| v4.2.0 | 2026-04-13 | 44 ferramentas ativas. Novos módulos: sn_query_all, sn_list_envs, sn_manage_ui_page, sn_activate_flow, sn_list_flow_executions, sn_create_subflow, sn_create_flow_action, sn_set_current_update_set, sn_list_update_sets, sn_complete_update_set, sn_export_records, sn_manage_email_template. |
| v4.0.0 | 2026-04-08 | Migração completa para TypeScript. Harvester incremental via state.json. sn_get_dependencies e sn_analyze_impact. ESM nativo com tsx. |
| v3.9.0 | 2026-04-08 | MCP Resources: exposição de knowledge/ como knowledge://category/table. Rate limiter com backoff inteligente. Paginação por offset. |
| v3.8.1 | 2026-03-29 | Security hardening: validação de inputs, cache TTL, rate limiting, testes unitários. |
Para Agentes de IA
Leia as convenções em GEMINI.md e o guia de uso em AI_REFERENCE.md antes de qualquer intervenção.