ServiceNow调试服务器

ServiceNow MCP服务器连接Claude Desktop至ServiceNow实例,通过自然对话提供全面的调试和监控功能。

  • by tdimaggio
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 tdimaggio/servicenow-mcp-server

使用说明

ServiceNow MCP服务器

将Claude Desktop连接到您的ServiceNow实例,通过自然对话进行全面的调试和监控。

概述

此模型上下文协议(MCP)服务器使Claude Desktop能够直接查询您的ServiceNow实例,提供:

  • 🤖 AI代理监控 -跟踪AI代理执行(多步骤代理AI)
  • 📊 现在辅助指标 -立即监控辅助使用情况(总结、解决笔记、技能)
  • 📝 现在辅助元数据 -查看GenAI提示、响应和用户反馈
  • 📈 AI投资回报率分析 -衡量人工智能的影响:使用人工智能是否可以更快地解决事件/更改?
  • 🔄 工作流调试 -监控工作流执行、历史记录和详细日志
  • 🔍 应用程序日志 -通过灵活的筛选查询syslog条目
  • 🔌 REST API配置 -查看出站REST集成配置
  • 🎫 事件查找 -根据AI活动上下文的编号或sys_id查询事件详细信息

什么是MCP?

模型上下文协议(MCP)允许像克劳德这样的人工智能助手安全地连接到外部数据源。此服务器实现了MCP,为Claude提供对ServiceNow调试表的只读访问权限。


先决条件

在开始之前,请确保您已经:

  • ✅ macOS 已安装Homebrew(安装Homebrew)
  • ✅ ServiceNow实例 使用REST API访问
  • ✅ ServiceNow管理员访问权限 创建服务帐户并设置权限
  • ✅ Claude Pro或Claude Team订阅 -MCP服务器需要付费计划
  • ✅ 克劳德桌面(macOS) 已安装(点击此处下载)
  • ✅ Python 3.8+ (如果需要,我们会安装这个)

重要提示: MCP(模型上下文协议)支持目前仅在macOS的Claude Desktop中提供,需要付费订阅(专业版或团队版)。免费的Claude帐户和网络版本(Claude.ai)不支持MCP服务器。

所需时间: 30-45分钟


快速开始

重要提示: 在继续执行这些步骤之前,请先完成ServiceNow配置部分以创建您的服务帐户。

第1部分:ServiceNow设置(请先执行此操作!)

在设置MCP服务器之前,您需要在ServiceNow中创建一个服务帐户。跳到 ServiceNow配置 请填写以下部分:

  1. 创建服务帐户
  2. 创建角色
  3. 授予表权限

一旦你有了你的 mcp.syslog 用户凭据,请返回此处继续。


第2部分:本地MCP服务器设置

第一步:安装Python

打开终端并验证是否安装了Python:

python3 --version

如果没有安装Python,请通过Homebrew安装:

brew install python

步骤2:克隆或下载此存储库

cd ~
git clone https://github.com/YOUR_USERNAME/servicenow-mcp.git
cd servicenow-mcp

或者,如果您下载了ZIP,请解压缩它并导航到该文件夹:

cd ~/servicenow-mcp

步骤3:设置Python虚拟环境

创建并激活虚拟环境以隔离依赖关系:

python3 -m venv venv
source venv/bin/activate

你应该看看 (venv) 在终端提示的开头。

步骤4:安装依赖项

安装所需的Python包:

pip install mcp requests python-dotenv

或者使用需求文件:

pip install -r requirements.txt

步骤5:配置ServiceNow凭据

先决条件: 您必须完成ServiceNow配置部分并创建 mcp.syslog 服务帐户。

创建 .env 项目根目录中的文件:

touch .env

编辑文件并添加您的ServiceNow实例详细信息:

SERVICENOW_INSTANCE=https://your-instance.service-now.com
SERVICENOW_USERNAME=mcp.syslog
SERVICENOW_PASSWORD=your-secure-password-from-servicenow

重要提示:

  • 替换 your-instance 使用您的实际ServiceNow实例名称
  • 使用创建时设置的密码 mcp.syslog ServiceNow中的用户
  • 永远不要将此文件提交到版本控制(它已经在 .gitignore)

步骤6:测试连接

在继续之前,请验证您的凭据是否有效:

python test_connection.py

预期产量:

Testing connection to https://your-instance.service-now.com...
Status code: 200
✓ Connection successful!
✓ Found 2 syslog entries
Sample log: [ConversationProcessor] Found 0 unprocessed conversations...

如果您看到错误,请验证:

  • 您在中的凭据 .env 是正确的
  • 这 mcp.syslog 用户在ServiceNow中存在并处于活动状态
  • 这 claude_mcp 角色已分配给用户
  • 您运行了表权限脚本(请参阅ServiceNow配置部分)

步骤7:配置Claude桌面

创建或编辑Claude Desktop的配置文件:

mkdir -p ~/.claude
nano ~/.claude/config.json

添加以下配置(替换 YOUR_USERNAME 使用您的实际Mac用户名):

{
  "mcpServers": {
    "servicenow-debug": {
      "command": "/Users/YOUR_USERNAME/servicenow-mcp/venv/bin/python",
      "args": ["/Users/YOUR_USERNAME/servicenow-mcp/server.py"]
    }
  }
}

提示:

  • 要查找您的用户名,请运行 whoami 在终端
  • 使用绝对路径(以开头 /Users/)
  • 确保路径指向您的实际安装目录

保存并退出(Ctrl+X,然后是Y,如果使用nano,则是Enter)。

步骤8:重新启动克劳德桌面

  1. 完全退出克劳德桌面 (Cmd+Q或克劳德>退出克劳德)
  2. 重新打开克劳德桌面
  3. 验证连接:
    • 打开设置>开发人员
    • 查找状态为“已连接”或“正在运行”的“servicenow-debug”
    • 锤子图标(🔨) 应出现在消息输入区域

步骤9:在Claude Desktop中进行测试

在Claude Desktop中开始新的对话,并尝试以下查询:

Show me recent Now Assist activity

What AI Agents have executed recently?

Show me workflow logs with errors from the last 24 hours

Are there any workflows currently executing?

Show me recent errors from syslog

ServiceNow配置

创建服务帐户

为了安全起见,请为MCP服务器创建一个专用服务帐户:

  1. 导航到 用户管理>用户
  2. 点击 新
  3. 填写:
    • 用户ID: mcp.syslog
    • 名字: MCP
    • 姓氏: Service Account
    • 电子邮件:(您的管理员电子邮件)
    • 密码:(生成强密码)
    • 活跃的: ✓ 已检查
    • 仅限Web服务访问: ✓ 已检查(推荐)
  4. 点击 提交

分配角色

mcp.syslog用户需要两个角色:

1.Claude MCP角色(用于调试表)

创建对调试表具有只读访问权限的自定义角色:

  1. 导航到 用户管理>角色
  2. 点击 新
  3. 填写:
    • 名字: claude_mcp
    • 描述: Read-only access to debug tables for Claude MCP server
  4. 点击 提交
  5. 回到 mcp.syslog 用户
  6. 在 角色 相关列表,单击 编辑
  7. 添加 claude_mcp 角色
  8. 点击 保存

2.ITIL角色(用于事件访问)

添加事件表访问的ITIL角色:

选项A:使用脚本(推荐)

  1. 导航到 系统定义>脚本-背景
  2. 从以下位置复制脚本 add_itil_role_to_mcp_user.js
  3. 粘贴并运行脚本
  4. 验证输出是否显示“✓向mcp.syslog用户添加了itil角色”

选项B:手动分配

  1. 去 mcp.syslog 用户记录
  2. 在 角色 相关列表,单击 编辑
  3. 添加 itil 角色
  4. 点击 保存

授予表权限

服务帐户需要对特定表的读取权限。在ServiceNow中运行权限脚本:

  1. 导航到 系统定义>脚本-背景
  2. 从以下位置复制脚本 附录A 在......下面
  3. 将其粘贴到“运行脚本”字段中
  4. 点击 运行脚本
  5. 验证输出是否显示“✓已成功配置:8个表”

此脚本创建访问控制列表(ACL),授予对以下内容的只读访问权限:

  • syslog -应用程序日志
  • sn_aia_execution_plan -AI执行计划
  • sys_generative_ai_metric -GenAI指标
  • sys_gen_ai_log_metadata -GenAI元数据
  • sys_rest_message -REST API配置
  • wf_context -工作流上下文
  • wf_executing -当前正在执行工作流
  • wf_history -工作流执行历史记录
  • wf_log -工作流详细日志

验证权限

测试服务帐户访问权限:

  1. 模仿 mcp.syslog 用户(“管理”菜单>“模拟用户”)
  2. 导航到 系统日志>系统日志>全部
  3. 验证您是否可以看到日志条目
  4. 尝试访问 sn_aia_execution_plan.list 在导航器中
  5. 退出模拟

如果看不到记录,请查看ACL配置。


可用工具

配置后,Claude Desktop可以使用按类别组织的这些工具:

AI和GenAI工具

1.所有代理机构

跟踪AI代理执行计划(多步骤代理AI)。

使用此功能: 自主执行多步动作的AI代理
不适用于: 现在,辅助技能,如总结或解决笔记

参数:

  • status -按状态筛选
  • limit -最大结果(默认值20)
  • minutes_ago -时间窗口(默认值60)

例子: “向我展示从今天开始的AI代理执行情况”

2.即时消息

立即监控辅助使用指标和活动。

使用此功能: 现在辅助技能(总结、解决笔记、文本生成)
不适用于: AI代理

参数:

  • limit -最大结果(默认值20)
  • minutes_ago -时间窗口(默认值60)

例子: “立即显示最近一小时的辅助活动”

3.now_assist_metadata

立即查看带有提示、响应和用户反馈的辅助元数据。

参数:

  • limit -最大结果(默认值20)
  • minutes_ago -时间窗口(默认值60)

例子: “立即显示辅助反馈和提示”

4.油气分析

通过比较AI辅助与非AI记录的分辨率时间来分析AI ROI。

使用此功能: 衡量业务价值——使用人工智能是否能更快地解决事件/变更?

按表格列出的指标:

  • incident -平均解决时间(MTTR)
  • change_request -平均实施时间
  • problem -找到根本原因的平均时间
  • sn_customerservice_case -平均关闭时间

参数:

  • table_name -要分析的表:偶发事件、change_request、问题、sn_customerservice_case(默认值:偶发事件)
  • breakdown_by -按以下方式分解结果:优先级、类别、组或无(默认:优先级)

例子: “分析事件的AI投资回报率”
例子: “显示人工智能对变更请求实施时间的影响”
例子: “有人工智能的事件比没有人工智能的情况解决得更快吗?”

工作流工具

5.工作流文本

监控工作流上下文以查看工作流执行情况。

参数:

  • limit -最大结果(默认值20)
  • minutes_ago -时间窗口(默认值60)

例子: “显示最近执行的工作流”

6.工作流程执行

实时查看当前正在执行的工作流。

参数:

  • workflow_name -按工作流名称筛选(部分匹配)
  • limit -最大结果(默认值20)

例子: “当前是否有正在运行的工作流?”

7.工作流程_历史

查询工作流执行历史记录,查看已完成和失败的工作流。

参数:

  • workflow_name -按工作流名称筛选(部分匹配)
  • limit -最大结果(默认值20)
  • minutes_ago -时间窗口(默认1440=24小时)

例子: “显示过去24小时的工作流执行情况”

8.工作流程日志

查询详细的工作流日志,包括错误和调试信息。

参数:

  • workflow_name -按工作流名称筛选(部分匹配)
  • level -按日志级别筛选(错误、警告、信息、调试)
  • limit -最大结果(默认值20)
  • minutes_ago -时间窗口(默认1440=24小时)

例子: “显示今天的工作流错误日志”

系统工具

9.系统日志

通过灵活的过滤查询应用程序日志。

参数:

  • message_contains -按邮件内容筛选
  • source -按日志源筛选
  • level -按级别筛选(0=错误,1=警告,2=信息,3=调试)
  • limit -最大结果(默认值20)
  • minutes_ago -时间窗口(默认值60)

例子: “显示过去30分钟内系统日志中的错误”

10.rest_message

查看出站集成的REST消息配置。

参数:

  • limit -最大结果(默认值20)
  • minutes_ago -时间窗口(默认值60)

例子: “显示REST API配置”

11.事件

在调查AI活动时,按编号或sys_id查找事件记录以了解上下文。

使用此功能: 在调试工单上的AI操作时获取完整的事件详细信息

参数:

  • number -事件编号(例如INC0009005)-支持部分匹配
  • sys_id -用于精确查找的事件sys_id
  • limit -最大结果(默认值10)
  • minutes_ago -时间窗口(默认1440=24小时)

例子: “查找事件INC0009005”
例子: “显示今天发生的最新事件”


项目结构

servicenow-mcp/
├── README.md                           # This file
├── server.py                           # Main MCP server entry point
├── test_connection.py                  # Connection test script
├── test_all_tools.py                   # Tool verification script
├── add_table_permissions.js            # ServiceNow ACL permission script
├── add_itil_role_to_mcp_user.js        # Script to add itil role for incident access
├── requirements.txt                    # Python dependencies
├── .env                                # Credentials (not in git)
├── .gitignore                          # Git ignore rules
├── venv/                               # Python virtual environment (not in git)
├── tools/                              # Modular tool implementations
│   ├── __init__.py                     # Tools package initialization
│   ├── ai/                             # AI & GenAI tools
│   │   ├── __init__.py
│   │   ├── ai_agent_executions.py      # AI Agent execution tracking
│   │   ├── now_assist_metrics.py       # Now Assist usage metrics
│   │   ├── now_assist_metadata.py      # Now Assist prompts & feedback
│   │   └── roi_analysis.py             # AI ROI impact analysis
│   ├── workflows/                      # Workflow debugging tools
│   │   ├── __init__.py
│   │   ├── context.py                  # Workflow contexts
│   │   ├── executing.py                # Currently executing workflows
│   │   ├── history.py                  # Workflow execution history
│   │   └── logs.py                     # Detailed workflow logs
│   └── system/                         # System debugging tools
│       ├── __init__.py
│       ├── syslog.py                   # Application logs
│       ├── rest_messages.py            # REST API configurations
│       └── incidents.py                # Incident lookup tool
├── artifacts/                          # Backup files
│   └── server_with_scheduled_jobs_backup.py
└── table_permissions_needed.md         # Permission documentation

故障排除

服务器未显示在Claude Desktop中

症状: MCP服务器未出现在Claude Desktop设置中。

解决:

  1. 验证中的路径 ~/.claude/config.json 绝对正确
  2. 替换 YOUR_USERNAME 使用您的实际Mac用户名(whoami)
  3. 确保虚拟环境路径正确
  4. 检查克劳德桌面日志: ~/Library/Logs/Claude/mcp*.log

连接超时错误

症状: 查询超时或未返回结果。

解决:

  1. 大型表可能会导致超时-请使用较小的时间窗口(minutes_ago=30)
  2. 减少 limit 参数(默认值为20,尝试10)
  3. 添加更具体的过滤器(message_contains、source等)
  4. 检查ServiceNow实例性能

身份验证错误

症状: “401未授权”或“403禁止”错误。

解决:

  1. 验证 .env 文件具有正确的凭据(没有多余的空格)
  2. 检查 SERVICENOW_INSTANCE URL格式(包括 https://)
  3. 确保 mcp.syslog 用户在ServiceNow中处于活动状态
  4. 验证 claude_mcp 角色已分配给用户
  5. 再次运行权限脚本(附录A)

权限被拒绝(403)错误

症状: 一些工具可以工作,另一些则返回403 Forbidden。

解决:

  1. 重新运行附录A中的权限脚本
  2. 验证ACL是否存在:导航到 系统安全>访问控制(ACL)
  3. 搜索表名(例如。, sn_aia_execution_plan)
  4. 检查一下 claude_mcp 角色位于“需要角色”相关列表中
  5. 一些桌子(如 sys_generative_ai_log)需要MAINT访问权限,服务帐户无法访问

未返回数据

症状: 工具正常工作,但显示“未找到记录”。

解决:

  1. 如果您的实例最近没有生成此类数据,这是正常的
  2. 尝试扩展时间窗口: minutes_ago=1440 (24小时)
  3. 对于 query_scheduled_jobs,删除所有筛选器以查看所有作业
  4. 检查ServiceNow中的实际表以确认数据存在

Python导入错误

症状: ModuleNotFoundError: No module named 'mcp'

解决:

  1. 激活虚拟环境: source venv/bin/activate
  2. 重新安装依赖关系: pip install -r requirements.txt
  3. 验证您使用的是venv Python: which python 应该显示 ./venv/bin/python

安全最佳实践

凭证

  • ✅ 永不承诺 .env 文件到版本控制
  • ✅ 使用专用服务帐户,而不是您的个人帐户
  • ✅ 在服务帐户上启用“仅Web服务访问”
  • ✅ 为服务帐户使用强而唯一的密码
  • ✅ 定期轮换密码

权限

  • ✅ 仅授予对表的读取权限
  • ✅ 使用自定义角色,而不是标准管理员角色
  • ✅ 定期审核 mcp.syslog 用户访问权限
  • ✅ 不使用时禁用帐户(可选)

网络

  • ✅ 确保ServiceNow实例使用HTTPS
  • ✅ 考虑对服务帐户的IP白名单限制
  • ✅ 使用ServiceNow的会话超时设置

发展

运行测试

测试所有工具以验证其是否正常工作:

python test_all_tools.py

预期产量:

================================================================================
ServiceNow MCP Server Tool Test
================================================================================
Instance: https://your-instance.service-now.com
Username: mcp.syslog
================================================================================

Testing: query_syslog (syslog)
  ✓ SUCCESS - 2 records found
  ...

Summary
================================================================================
Total tools tested: 9
✓ Successful: 9
✗ Failed: 0

添加新工具

要添加新工具以查询其他ServiceNow表,请执行以下操作:

  1. 添加表权限 在ServiceNow中(使用附录A中的脚本作为模板)
  2. 添加工具功能 到 server.py:
@mcp.tool()
def query_new_table(
    limit: int = 20,
    minutes_ago: int = 60,
) -> str:
    """
    Query description here.
    
    Args:
        limit: Maximum number of results (default 20)
        minutes_ago: Look back this many minutes (default 60)
    """
    query_parts = []
    query_parts.append(f"sys_created_onRELATIVEGT@minute@ago@{minutes_ago}")
    query = "^".join(query_parts)

    url = f"{INSTANCE}/api/now/table/your_table_name"
    params = {
        "sysparm_query": f"{query}^ORDERBYDESCsys_created_on",
        "sysparm_limit": limit,
        "sysparm_display_value": "true",
    }

    response = requests.get(
        url,
        params=params,
        auth=(USERNAME, PASSWORD),
        headers={"Accept": "application/json"},
    )

    if response.status_code != 200:
        return f"Error: {response.status_code} - {response.text}"

    results = response.json().get("result", [])
    if not results:
        return "No records found matching your criteria."

    output = []
    for entry in results:
        output.append(
            f"[{entry.get('sys_created_on')}]\n"
            f"  Field: {entry.get('field_name', 'N/A')}"
        )
    return "\n---\n".join(output)
  1. 测试新工具 和 test_all_tools.py
  2. 更新此自述文件 使用新工具文档

贡献

欢迎投稿!拜托:

  1. 克隆该仓库
  2. 创建要素分支(git checkout -b feature/new-tool)
  3. 提交您的更改(git commit -am 'Add new debugging tool')
  4. 推到分支(git push origin feature/new-tool)
  5. 创建拉取请求

常见问题解答

Q: 我可以将其用于多个ServiceNow实例吗?

A. 对!为每个实例创建不同的目录 .env 文件,然后向添加多个条目 ~/.claude/config.json:

{
  "mcpServers": {
    "servicenow-prod": {
      "command": "/Users/YOUR_USERNAME/servicenow-mcp-prod/venv/bin/python",
      "args": ["/Users/YOUR_USERNAME/servicenow-mcp-prod/server.py"]
    },
    "servicenow-dev": {
      "command": "/Users/YOUR_USERNAME/servicenow-mcp-dev/venv/bin/python",
      "args": ["/Users/YOUR_USERNAME/servicenow-mcp-dev/server.py"]
    }
  }
}

Q: 这在Windows或Linux上有效吗?

A. 不,目前还没有。MCP(模型上下文协议)支持仅在macOS的Claude Desktop中可用。Windows和Linux版本的Claude Desktop尚不支持MCP服务器。检查 Anthropic的文件 有关平台可用性的更新。

Q: MCP服务器可以在ServiceNow中修改数据吗?

A. 否。服务器仅具有对表的READ访问权限。它无法创建、更新或删除记录。所有ACL都授予只读权限。

Q: 这要花多少钱?

A. 服务器本身是免费和开源的。您需要:

  • ServiceNow实例(您已经拥有)
  • Claude Pro订阅(每月20美元)或Claude Team订阅(价格各不相同)

Q: 我需要Claude Pro还是可以使用免费版本?

A. 您必须拥有付费的Claude订阅(专业版或团队版)。免费的Claude帐户不支持MCP服务器。您需要:

  1. 付费克劳德订阅(每月20美元或团队)
  2. 已安装适用于macOS的Claude Desktop
  3. 这两项要求都是强制性的——免费帐户和网络访问不支持MCP服务器

Q: 这会减慢我的ServiceNow实例的速度吗?

A. 否。查询是只读的,并且有限制(默认为20条记录)。这 minutes_ago 参数可防止查询大型数据集。这相当于用户运行报告。

Q: 我可以安排自动查询吗?

A. MCP服务器仅是交互式的,它们对Claude Desktop对话做出响应。对于自动监控,请使用ServiceNow的内置警报或计划报告。


学分

最初由[您的姓名/团队]基于ServiceNow的REST API和Anthropic的模型上下文协议创建。

内置:


许可证

MIT许可证-有关详细信息,请参阅许可证文件


支持


附录A:表权限脚本

在ServiceNow中运行此脚本(系统定义>脚本-背景)授予 claude_mcp 对所有必需表的角色访问权限:

// ServiceNow Background Script to Add Table Permissions to claude_mcp Role
// Run this in: System Definition > Scripts - Background

// Tables to grant read access
var tables = [
    'syslog',
    'sn_aia_execution_plan',
    'sys_generative_ai_metric',
    'sys_gen_ai_log_metadata',
    'sys_rest_message',
    'wf_context',
    'wf_executing',
    'wf_history',
    'wf_log'
];

// Get the claude_mcp role sys_id
var roleGR = new GlideRecord('sys_user_role');
roleGR.addQuery('name', 'claude_mcp');
roleGR.query();

if (!roleGR.next()) {
    gs.error('claude_mcp role not found. Please create it first.');
} else {
    var roleSysId = roleGR.getUniqueValue();
    gs.info('Found claude_mcp role: ' + roleSysId);
    
    var successCount = 0;
    var errorCount = 0;
    
    // Create ACL for each table
    tables.forEach(function(tableName) {
        try {
            // Check if ACL already exists
            var aclGR = new GlideRecord('sys_security_acl');
            aclGR.addQuery('name', tableName);
            aclGR.addQuery('operation', 'read');
            aclGR.query();
            
            var aclSysId;
            if (!aclGR.next()) {
                // Create new ACL
                aclGR.initialize();
                aclGR.name = tableName;
                aclGR.type = 'record';
                aclGR.operation = 'read';
                aclGR.active = true;
                aclGR.description = 'Allow claude_mcp role to read ' + tableName;
                aclSysId = aclGR.insert();
                gs.info('✓ Created ACL for ' + tableName);
            } else {
                aclSysId = aclGR.getUniqueValue();
                gs.info('○ ACL already exists for ' + tableName);
            }
            
            // Add claude_mcp role to ACL
            var aclRoleGR = new GlideRecord('sys_security_acl_role');
            aclRoleGR.addQuery('sys_security_acl', aclSysId);
            aclRoleGR.addQuery('sys_user_role', roleSysId);
            aclRoleGR.query();
            
            if (!aclRoleGR.next()) {
                aclRoleGR.initialize();
                aclRoleGR.sys_security_acl = aclSysId;
                aclRoleGR.sys_user_role = roleSysId;
                aclRoleGR.insert();
                gs.info('  ✓ Added claude_mcp role to ' + tableName + ' ACL');
                successCount++;
            } else {
                gs.info('  ○ claude_mcp role already assigned to ' + tableName + ' ACL');
                successCount++;
            }
        } catch (e) {
            gs.error('  ✗ Error processing ' + tableName + ': ' + e.message);
            errorCount++;
        }
    });
    
    gs.info('');
    gs.info('=== Permission Setup Complete ===');
    gs.info('✓ Successfully configured: ' + successCount + ' tables');
    if (errorCount > 0) {
        gs.info('✗ Errors encountered: ' + errorCount + ' tables');
    }
    gs.info('');
    gs.info('Next steps:');
    gs.info('1. Verify by impersonating mcp.syslog user');
    gs.info('2. Test access to each table');
    gs.info('3. Restart Claude Desktop to use updated MCP server');
}

预期产量:

*** Script: Found claude_mcp role: ddccc44e3bb6361066a20c9693e45a37
*** Script: ✓ Created ACL for syslog
*** Script:   ✓ Added claude_mcp role to syslog ACL
*** Script: ○ ACL already exists for sn_aia_execution_plan
*** Script:   ✓ Added claude_mcp role to sn_aia_execution_plan ACL
...
*** Script: === Permission Setup Complete ===
*** Script: ✓ Successfully configured: 9 tables

附录B:要求.txt

将此另存为 requirements.txt 在项目根目录中:

mcp>=0.9.0
requests>=2.31.0
python-dotenv>=1.0.0

更新日志

2.2.0版本(2026-02-05)

  • 新增AI ROI分析工具
    • 新 ai_roi_analysis 工具衡量人工智能的业务影响
    • 比较分辨率时间:人工智能辅助与非人工智能记录
    • 答案:“人工智能能更快地解决事件/更改吗?”
    • 支持事件(MTTR)、变更请求(实施时间)、问题(根本原因时间)、案例(关闭时间)
    • 按优先级、类别或任务组进行细分分析
    • 通过解析sn_aia_execution_plan目标来识别AI的使用情况
    • 显示每条记录的改进百分比和节省的时间
    • 使用最低权限mcp.syslog凭据
  • 更新测试脚本
    • test_all_tools.py现在验证了11个工具(原来是9个)
    • test_all_tools_comparison.py验证事件和变更请求访问
    • 所有通过mcp.syslog凭据的测试
  • 工具数量:现在有11个工作工具

版本2.1.1(2026-02-04)

  • 固定事件工具sys_id字段
    • 在查询结果中添加了sys_id(显示为“N/A”)
    • 事件查找现在返回完整信息
  • 添加了itil角色脚本
    • 创建 add_itil_role_to_mcp_user.js 用于授予事故访问权限
    • 比修改ACL脚本更干净的方法
  • 更新文件
    • README现在总共反映了10个工具
    • 在设置说明中添加了itil角色要求

版本2.1.0(2026-02-04)

  • 增强的工具输出可实现更好的调试
    • now_assist_metrics 现在显示:名称、类型、来源、活动、错误消息
    • now_assist_metadata 现在显示:源、模型、目标信息、反馈、错误
    • 不再有无用的“N/A”和空值
  • 添加了事件查找工具
    • 新 incidents 工具/系统中的工具/
    • 按事件编号(INC0009005)或sys_id查找
    • 显示全面的事件详细信息(描述、状态、优先级、工作说明)
    • 对于调查特定票上的AI活动至关重要
  • 刀具数量:现在有10个工作刀具

2.0.0版本(2026-02-02)

  • 模块化结构的重大重构
    • 将工具组织到基于类别的文件夹中(ai/、工作流/、系统/)
    • 提高了代码的可维护性和可扩展性
    • 每个工具现在都在自己的专用文件中
  • 重命名工具以更好地选择Claude Desktop工具
    • query_ai_execution_plans → ai_agent_executions (更清晰的AI Agent焦点)
    • query_gen_ai_metrics → now_assist_metrics (Now Assist焦点更清晰)
    • query_gen_ai_metadata → now_assist_metadata
    • query_workflow_context → workflow_context
    • 工作流工具简化了命名(删除了“query_”前缀)
  • 改进了工具描述和文档
    • 在AI工具中添加了明确的“用于”/“不用于”指导
    • 帮助Claude Desktop区分AI代理与Now Assist
    • 每个工具的增强内联文档
  • 移除非工作工具
    • 移除 scheduled_jobs (需要管理员权限,超出范围)
    • 仅关注工作工具(共9个)
  • 更新了README,其中包含分类工具列表
    • 按AI和GenAI、工作流、系统类别组织的工具
    • 更清晰的使用示例和参数文档

版本1.1.0(2026-02-02)

  • 添加了3个工作流调试工具(wfexecuting、wf_history、wf_log)
  • 增强的工作流故障排除功能
  • 总共9个工作工具
  • 更新了文档和权限脚本

版本1.0.0(2026-02-02)

  • 初始版本
  • ServiceNow调试的6个工作工具
  • 全面的文件
  • 已验证表权限
  • 实施安全最佳实践

由...制作❤️ 适用于ServiceNow管理员和开发人员