servicenow-mcp-agent
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 のツール
ツール | 目的 |
| 主要な検索手段。名前付きフィルタまたは生のエンコード済みクエリ |
| 作業メモとコメントを含む完全なレコード 1 件 |
| 新しいインシデントを記録(参照の検証、優先度の導出) |
| フィールド変更と内部作業メモ |
| 顧客から見えるコメント |
| Resolved への唯一の経路。クローズコードとメモが必須 |
| あいまいな履歴検索 —「これは以前にもあったか?」 |
| 全レコードを取得せずにグループ化された件数 |
| KB 検索、その後全文取得 |
| 構成アイテムを検索。1 つの CI とその未解決インシデント |
| 依存関係グラフ: 上流の原因、下流の影響範囲 |
| 非公式な名前を解決し、VIP ステータスを確認 |
いくつかのペアは意図的に似たものになっています(update_incident と add_incident_comment、search_incidents と find_similar_incidents、get_ci と get_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 gatereport.md、report.html、report.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 requiredClaude Desktop / Claude Code からの接続
claude mcp add servicenow-itsm -- python -m snow_mcp.server.mcp.json と examples/claude_desktop_config.json はコピーしてすぐに使えます — docs/CONNECTING.md を参照してください。
設定
変数 | デフォルト | 意味 |
|
|
|
| — |
|
| — | インスタンスの認証情報 |
|
| すべての書き込みツールを無効化 |
|
| ツール呼び出しあたりの行数の上限 |
| — | すべてのツール呼び出しを記録する JSONL パス |
|
| エージェントが使用するモデル |
| — | エージェントまたは評価を実行する場合のみ必要 |
ライセンス
MIT — LICENSE を参照してください。
Maintenance
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
- AlicenseNot gradedqualityBmaintenanceEnables interaction with ServiceNow ITSM through browser-based SSO authentication, providing 80+ tools for incidents, changes, catalog, CMDB, and more via natural language.34MIT
- AlicenseNot gradedqualityDmaintenanceA 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.6MIT
- AlicenseBqualityAmaintenanceEnables AI to interact with ServiceNow instances via MCP, providing 400+ tools across all modules for automation, development, and management.1001,01215Elastic 2.0
- AlicenseBqualityBmaintenanceEnables natural language control of ServiceNow from AI clients like Claude and Cursor. Provides 400+ tools for incidents, changes, CMDB, and scripts via MCP protocol.1004051MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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