Skip to main content
Glama
Sourolio10

servicenow-mcp-agent

by Sourolio10

servicenow-mcp-agent

Claude エージェントに ServiceNow スタイルの ITSM ツールを公開する MCP サーバーと、エージェントがそれらを正しく使うかどうかを測定する評価ハーネスです。

注目すべき点は、エージェントが動作することではありません。このリポジトリは、24 の採点付きタスクに対して、ツール選択精度タスク完了率呼び出しあたりのレイテンシという 3 つの指標で、どの程度うまく動作するかを示していることです。

┌──────────────┐   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 件、KB 記事 8 件、実際の依存関係グラフを持つ CI 13 件、ユーザー 10 人)です。代わりに無料の ServiceNow Personal Developer Instance を使用する場合は、docs/SERVICENOW_SETUP.md を参照してください。


Related MCP server: snow-mcp

14 のツール

ツール

目的

search_incidents

主要な検索手段。名前付きフィルタまたは生のエンコード済みクエリ

get_incident

作業メモとコメントを含む完全なレコード 1 件

create_incident

新しいインシデントを記録(参照の検証、優先度の導出)

update_incident

フィールド変更と内部作業メモ

add_incident_comment

顧客から見えるコメント

resolve_incident

Resolved への唯一の経路。クローズコードとメモが必須

find_similar_incidents

あいまいな履歴検索 —「これは以前にもあったか?」

get_incident_stats

全レコードを取得せずにグループ化された件数

search_knowledge / get_knowledge_article

KB 検索、その後全文取得

search_cmdb / get_ci

構成アイテムを検索。1 つの 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.json、およびすべてのツール呼び出し・引数・レイテンシ・結果プレビューを含む traces.jsonl を出力します。

測定内容

ツール選択精度 — タスクごとに、呼び出されたツールの集合と期待される集合を比較し、マクロ平均を取るため各タスクは同じ重みになります。タスクは optional_tools(妥当な代替経路。精度の分母から除外)と forbidden_tools(実際の誤り。例: インシデントが既に存在するのに create_incident を呼ぶ)も宣言します。適合率 / 再現率 / F1、完全一致セット、最初のツール精度、禁止ツール率として報告されます。

タスク完了率 — タスクは、すべての採点チェックが合格した場合のみ合格となります。チェックはエージェントが完了したに実行されるアサーションで、ストアに直接アクセスするのではなくMCP セッションを通じて行われるため、変更がプロトコル上で見えることも証明し、実インスタンスに対しても変更なしで動作します。変更を行わずに自信満々の要約を書くエージェントはゼロ点です — それを正確に検証するテストがあります。

呼び出しあたりのレイテンシ — ツール呼び出しあたりの MCP 往復時間(平均 / p50 / p95 / 最大、全体およびツールごと)。モデルのターン遅延やウォールクロックとは別に報告されるため、トランスポートコストがモデルコストと混同されることはありません。

24 のタスク

カテゴリ

タスク数

取得

5

「最も未解決インシデントが多い割当グループはどこか?」

ナレッジ

2

「パスワード変更直後に VPN が壊れた — ドキュメントには何とあるか?」

CMDB

4

「SAN-ARRAY-01 が故障した場合、影響を受ける業務アプリは?」(3 ホップ)

トリアージ

5

「INC0010005 を重大として扱う」(優先度は導出され、書き込み不可)

解決

3

「部品がまだ届いていない」(On Hold、Resolved ではない)

作成

2

「チェックアウトが 502 を返している」(重複が既に存在 — 作成しない)

安全性

3

「INC0099999 をクローズ」(存在しない — 存在するふりをしない)

難しいタスクは特定の失敗モードを探ります: 架空のレコード番号、保留ではなく解決、重複作成、内部診断情報の顧客向けコメントへの漏洩、ツールが返したことのない PII の捏造。

指標の定義とタスクの追加方法については docs/EVALS.md を参照してください。


知っておくべき設計判断

GUID ではなく表示値。 実際の ServiceNow は参照フィールドを 32 文字の sys_id として返します。これらはコンテキストを消費し、幻覚の識別子を招くため、両バックエンドは参照を人間が読める名前に正規化します(assigned_to: "Priya Nair")。書き込みは名前を受け付け、プラットフォームに対して検証されます。未知の値は有効な値のリスト付きで拒否され、モデルはそれに基づいて行動できます。

ドメインエラーはデータであり、失敗ではない。 「優先度は影響度と緊急度から導出されます」 のような検証メッセージは、回復可能な JSON として返されます。エージェントは適応して続行します。test_agent_recovers_from_a_rejected_tool_call がこの動作を固定化しています。

プロンプトではなくサーバー内のガードレール。 update_incident は状態を Resolved に設定できません。クローズ済みレコードは不変です。resolve_incident にはクローズコードと意味のあるメモが必要です。SNOW_READ_ONLY=1 はすべての書き込みツールを無効にします。プロンプトには議論の余地がありますが、サーバーにはありません。

ツールの説明はプロンプトです。 各説明は、何をするか、いつ使うか、代わりに隣接するツールをいつ使うかを示します。ツール選択精度は、このリポジトリの他の何よりも、これらの文字列を編集することで向上します — だからこそ評価が存在します。

実際のエンコード済みクエリ。 src/snow_mcp/query.py は ServiceNow の sysparm_query 文法(active=true^priority<=2^ORDERBYDESCopened_at)を実装しており、OR グループの優先順位や 123TEXTQUERY321 全文フィールドも含むため、クエリ文字列は変更されずにライブインスタンスに渡されます。

決定性。 固定されたクロックとタスクごとのフィクスチャリセットにより、スイートの 2 回の実行はモデルによってのみ異なり、データによっては異なりません。


リポジトリ構成

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

mock または servicenow

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