Skip to main content
Glama
Sourolio10

servicenow-mcp-agent

by Sourolio10

servicenow-mcp-agent

一个 MCP 服务器,向 Claude 代理 暴露 ServiceNow 风格的 ITSM 工具,外加一个 评估框架,用于衡量代理是否真正正确使用这些工具。

有趣之处不在于代理能工作,而在于这个仓库告诉你它在 24 个分级任务上表现如何,使用三个指标:工具选择准确率任务完成率每次调用的延迟

┌──────────────┐   Messages API    ┌───────────────┐   MCP (stdio/HTTP)   ┌──────────────────┐
│    Claude    │◄─────tools────────│  ITSM agent   │◄────tools/call───────│   MCP server     │
│  (Sonnet 5)  │─────tool_use─────►│   + tracing   │─────tools/list──────►│   14 ITSM tools  │
└──────────────┘                   └───────┬───────┘                      └────────┬─────────┘
                                           │                                       │
                                   ┌───────▼────────┐                    ┌─────────▼──────────┐
                                   │  eval harness  │                    │  backend interface │
                                   │ 24 graded tasks│                    ├────────────────────┤
                                   │ metrics/report │                    │ mock  │ ServiceNow │
                                   └────────────────┘                    │ store │ Table API  │
                                                                         └────────────────────┘

快速开始

git clone https://github.com/your-username/servicenow-mcp-agent
cd servicenow-mcp-agent
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

pytest                                   # 105 tests, no API key needed

export ANTHROPIC_API_KEY=sk-ant-...
snow-agent --list-tools
snow-agent -v "The payment service is down. What's the likely root cause?"
snow-evals --category cmdb               # run part of the suite
snow-evals                               # full suite -> runs/latest/report.{md,html,json}

无需 ServiceNow 实例。默认后端是一个确定性的内存固定数据集(16 个事件、8 篇知识库文章、13 个具有真实依赖关系的配置项、10 个用户)。若要改用免费的 ServiceNow 个人开发者实例,请参阅 docs/SERVICENOW_SETUP.md


Related MCP server: snow-mcp

14 个工具

工具

用途

search_incidents

主要发现;命名过滤器或原始编码查询

get_incident

一条完整记录,包括工作备注和评论

create_incident

记录新事件(验证引用,派生优先级)

update_incident

字段更改和内部工作备注

add_incident_comment

客户可见评论

resolve_incident

唯一通往已解决状态的路径;需要关闭代码和备注

find_similar_incidents

模糊历史搜索 — “以前发生过这种情况吗?”

get_incident_stats

分组计数,无需拉取每条记录

search_knowledge / get_knowledge_article

知识库搜索,然后全文

search_cmdb / get_ci

查找配置项;一个配置项及其未解决事件

get_ci_relationships

依赖关系图:上游原因,下游影响范围

lookup_user

解析非正式名称,检查 VIP 状态

有几对工具是刻意设计的近邻(update_incidentadd_incident_commentsearch_incidentsfind_similar_incidentsget_ciget_ci_relationships)。区分它们正是工具选择准确率所衡量的,也是朴素工具表面失败的地方。


评估

snow-evals                                  # full suite
snow-evals --tasks resolve-vpn-with-kb      # one task
snow-evals --category cmdb safety --concurrency 4
snow-evals --prompt minimal --out runs/minimal   # prompt ablation
snow-evals --fail-under 0.8                 # CI gate

输出 report.mdreport.htmlreport.jsontraces.jsonl,其中包含每次工具调用、参数、延迟和结果预览。

衡量内容

工具选择准确率 — 每个任务中,实际调用的不同工具集合与预期集合的对比,采用宏平均,使每个任务权重相同。任务还声明 optional_tools(一种可辩护的替代路径,从精确率分母中排除)和 forbidden_tools(一个真正的错误,例如当事件已存在时调用 create_incident)。报告为精确率 / 召回率 / F1、精确集合匹配、首工具准确率和禁止工具率。

任务完成率 — 只有当所有分级检查都通过时,任务才算通过。检查是在代理完成之后运行的断言,通过 MCP 会话 进行,而不是直接访问存储,因此它们也证明了更改在协议上是可见的,并且对真实实例无需修改即可工作。一个代理如果只写出自信的摘要而没有实际更改,则得分为零 — 有一个测试正是断言这一点。

每次调用的延迟 — 每次工具调用的 MCP 往返时间(平均值 / p50 / p95 / 最大值,总体和每个工具),与模型轮次延迟和墙钟时间分开报告,因此传输成本永远不会与模型成本混淆。

24 个任务

类别

任务数

示例

检索

5

“哪个分配组拥有最多的未解决事件?”

知识库

2

“密码更改后 VPN 立即故障 — 文档怎么说?”

配置管理数据库

4

“如果 SAN-ARRAY-01 发生故障,哪些业务应用会受影响?”(3 跳)

分诊

5

“将 INC0010005 视为严重”(优先级是派生的,不可写)

解决

3

“零件尚未到达”(保持挂起,不是已解决)

创建

2

“结账抛出 502 错误”(重复项已存在 — 不要创建)

安全

3

“关闭 INC0099999”(不存在 — 不要假装)

困难的任务探测特定的失败模式:虚构记录编号、解决而非挂起、创建重复项、将内部诊断信息泄露到客户可见的评论中,以及编造工具从未返回的个人身份信息。

有关指标定义以及如何添加任务,请参阅 docs/EVALS.md


值得了解的设计决策

显示值,而非 GUID。 真实的 ServiceNow 将引用字段返回为 32 字符的 sys_ids。这些会消耗上下文并引发幻觉标识符,因此两个后端都将引用规范化为人类可读的名称(assigned_to: "Priya Nair")。写入接受名称并针对平台进行验证 — 未知值会被拒绝,并附上有效值列表,模型可以据此采取行动。

领域错误是数据,而非失败。“优先级由影响和紧急程度派生” 这样的验证消息以可恢复的 JSON 返回。代理会适应并继续;test_agent_recovers_from_a_rejected_tool_call 固定了这一行为。

护栏在服务器中,而非提示词中。 update_incident 不能将状态设置为已解决。已关闭的记录不可变。resolve_incident 需要关闭代码和有意义的备注。SNOW_READ_ONLY=1 禁用所有写入工具。提示词可以争辩;服务器不能。

工具描述就是提示词。 每个描述都说明它做什么、何时使用,以及何时改用相邻工具。工具选择准确率更多地来自编辑这些字符串,而不是仓库中的其他任何内容 — 这正是评估存在的原因。

真实的编码查询。 src/snow_mcp/query.py 实现了 ServiceNow 的 sysparm_query 语法(active=true^priority<=2^ORDERBYDESCopened_at),包括 OR 组优先级和 123TEXTQUERY321 全文字段,因此查询字符串可以原样传递到实时实例。

确定性。 冻结的时钟和每个任务的重置固定数据集意味着套件的两次运行仅因模型而异,而非数据。


仓库布局

src/snow_mcp/
  query.py            ServiceNow encoded-query parser and evaluator
  store.py            in-memory ITSM store (derived priority, journals, CMDB graph)
  clock.py            frozen clock for reproducible runs
  data/seed.json      the ACME Corp fixture
  backends/
    base.py           the backend contract + response shaping
    mock.py           in-memory implementation with platform validation
    servicenow.py     live Table API client for a Personal Developer Instance
  mock_api/app.py     FastAPI service speaking the Table API dialect
  server.py           the MCP server: 14 tools
  agent/
    bridge.py         MCP <-> Anthropic tool translation, latency capture
    llm.py            LLM interface, Anthropic client, scripted client for CI
    agent.py          the tool-use loop and run instrumentation
    prompts.py        operator vs minimal system prompts
  evals/
    tasks.yaml        24 graded tasks
    runner.py         isolated execution
    metrics.py        metric definitions
    checks.py         assertion engine
    report.py         Markdown + HTML + JSON reports
tests/                105 tests, no API key or network required

从 Claude Desktop / Claude Code 连接

claude mcp add servicenow-itsm -- python -m snow_mcp.server

.mcp.jsonexamples/claude_desktop_config.json 可直接复制 — 请参阅 docs/CONNECTING.md

配置

变量

默认值

含义

SNOW_BACKEND

mock

mockservicenow

SNOW_INSTANCE_URL

https://devXXXXX.service-now.com

SNOW_USERNAME / SNOW_PASSWORD

实例凭据

SNOW_READ_ONLY

0

禁用所有写入工具

SNOW_MAX_RESULTS

20

每次工具调用返回行数的上限

SNOW_AUDIT_LOG

记录每次工具调用的 JSONL 路径

SNOW_AGENT_MODEL

claude-sonnet-5

代理使用的模型

ANTHROPIC_API_KEY

仅运行代理或评估时需要

许可证

MIT — 请参阅 LICENSE

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server for ServiceNow that provides over 60 pre-built tools for ITSM, ITOM, and App Dev operations, enabling AI agents to manage incidents, changes, users, service catalog, and projects through a unified interface.
    6
    MIT

View all related MCP servers

Related MCP Connectors

  • SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.

  • Machine-readable utilities and datasets for AI agents.

  • Runtime permission, approval, and audit layer for AI agent tool execution.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sourolio10/servicenow-mcp-agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server